{"version":3,"file":"main.js","sources":["../webpack/runtime/chunk loaded","../webpack/runtime/create fake namespace object","../webpack/runtime/load script","../shared/API.ts","../shared/KHColors.ts","../shared/KHPalette.ts","../shared/KHTokens.ts","../shared/assertExhaustiveSwitch.ts","../shared/cognitoUtils.ts","../shared/constants.ts","../shared/currency.ts","../shared/metadata/getPartnerGroupConfig.ts","../shared/formatPartnerOrganizationGroup.ts","../shared/formatPhone.ts","../shared/formatters/formatPartnerOrganization.ts","../shared/getAWSTimestampNow.ts","../shared/getErrorLoggingFields.ts","../shared/getServiceTypesFromProductTypes.ts","../shared/i18nConstants.ts","../shared/isNotNullish.ts","../shared/metadata/LAB_CONFIGS.ts","../shared/metadata/PartnerOrganizationGroup.ts","../shared/metadata/createWeekdaysTimeRangeRules.ts","../shared/metadata/SERVICE_REGION_LOOKUP.ts","../shared/metadata/createHolidayExclusionRule.ts","../shared/metadata/DROP_OFF_ORGANIZATION_TIME_RANGE_RULES.ts","../shared/metadata/SCHEDULING_TIME_RANGE_CONFIGS.ts","../shared/metadata/getPartnerConfig.ts","../shared/metadata/getPatientConfig.ts","../shared/metadata/getProductTypeConfig.ts","../shared/parseBloodPressure.ts","../shared/metadata/getVitalConfig.ts","../shared/releaseNameOrEmptyObject.ts","../shared/types/Vitals.ts","aws-exports.js","utils/useAppVersion.ts","components/tech/AppVersionWarningModal.tsx","utils/getAppVersionOrNull.ts","routing/DevRoute.tsx","routing/PublicRoute.tsx","routing/PrivateRoute.tsx","AppRouter.tsx","utils/i18n.ts","../shared/utils/matchI18nStringInterpolation.ts","App.tsx","index.tsx","khui/KHButton.tsx","khui/KHConstants.tsx","khui/KHDateTextInput.tsx","xapis/ErrorBoundaryXAPI.ts","khui/KHErrorBoundary.tsx","khui/KHIcon.tsx","khui/KHImage.tsx","khui/KHLookup.tsx","khui/KHText.tsx","khui/KHTextField.tsx","khui/KHTextInput.tsx","khui/KHThemeContext.ts","khui/KHAppBar.tsx","khui/KHBottomNavigation.tsx","khui/KHButtonTable.tsx","khui/KHCard.tsx","khui/KHCheckbox.tsx","khui/KHChip.tsx","khui/KHErrorText.tsx","khui/KHMessageView.tsx","khui/KHErrorView.tsx","khui/KHGrid.tsx","khui/KHHeader.tsx","khui/KHIconText.tsx","khui/KHLink.tsx","khui/KHMessageField.tsx","khui/KHModalDialog.tsx","khui/KHNavBar.tsx","khui/KHOptionsField.tsx","xapis/genChooseFileXAPITypes.ts","xapis/genChooseFileXAPI.ts","xapis/genResizedImageURLOrNullXAPI.ts","khui/KHProgressBar.tsx","khui/KHPhotoCard.tsx","../shared/utils/uploadFileToURL.ts","xapis/openFileXAPI.ts","khui/KHSeparator.tsx","khui/KHSideBar.tsx","khui/KHTabButton.tsx","khui/KHEmailTextInput.tsx","khui/KHPhoneTextInput.tsx","khui/KHSwitch.tsx","khui/KHTitleField.tsx","khui/KHToast.tsx","khui/KHTitleBar.tsx","khui/KHDropDown.tsx","utils/useComponentSize.ts","screens/LoadingScreen.tsx","utils/KHAuth.ts","../shared/getPartnerOrganizationsFromCognitoGroups.ts","utils/apollo/ApolloClient.ts","utils/cloneAsInput.ts","utils/filterFalseyChildren.ts","utils/formatError.ts","utils/genChildDocumentURL/getChildDocumentQueryByParentType.ts","utils/genChildDocumentURL/index.ts","utils/genChildDocumentURL/genChildDocumentURL.ts","utils/getAndroidAppInstallURL.ts","utils/getCurrentPositionOrNull.ts","utils/isProduction.ts","utils/mapCredentials.ts","utils/setupFontAwesome.ts","utils/useAsyncAction.ts","utils/useFetchFileURLsByS3ObjectIDs.ts","utils/useGenNavigate.ts","utils/useIsMountedRef.ts","utils/useLogger.ts","utils/useTooltipRef.ts","utils/useUpdateEffect.ts","xapis/AlertXAPI.ts","xapis/AuthXAPI.ts","xapis/EnvXAPI.ts","xapis/generateURIXAPI.ts","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../webpack/startup"],"sourceRoot":"","sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"SprinterHealthApp:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/* tslint:disable */\n/* eslint-disable */\n// This file was automatically generated and should not be edited.\n\nexport type CreateSerialCounterInput = {\n type: SerialCounterType,\n serialValue: number,\n};\n\nexport enum SerialCounterType {\n PatientSerial = \"PatientSerial\",\n RequisitionSerial = \"RequisitionSerial\",\n}\n\n\nexport type ModelSerialCounterConditionInput = {\n serialValue?: ModelIntInput | null,\n and?: Array< ModelSerialCounterConditionInput | null > | null,\n or?: Array< ModelSerialCounterConditionInput | null > | null,\n not?: ModelSerialCounterConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelIntInput = {\n ne?: number | null,\n eq?: number | null,\n le?: number | null,\n lt?: number | null,\n ge?: number | null,\n gt?: number | null,\n between?: Array< number | null > | null,\n attributeExists?: boolean | null,\n attributeType?: ModelAttributeTypes | null,\n};\n\nexport enum ModelAttributeTypes {\n binary = \"binary\",\n binarySet = \"binarySet\",\n bool = \"bool\",\n list = \"list\",\n map = \"map\",\n number = \"number\",\n numberSet = \"numberSet\",\n string = \"string\",\n stringSet = \"stringSet\",\n _null = \"_null\",\n}\n\n\nexport type ModelStringInput = {\n ne?: string | null,\n eq?: string | null,\n le?: string | null,\n lt?: string | null,\n ge?: string | null,\n gt?: string | null,\n contains?: string | null,\n notContains?: string | null,\n between?: Array< string | null > | null,\n beginsWith?: string | null,\n attributeExists?: boolean | null,\n attributeType?: ModelAttributeTypes | null,\n size?: ModelSizeInput | null,\n};\n\nexport type ModelSizeInput = {\n ne?: number | null,\n eq?: number | null,\n le?: number | null,\n lt?: number | null,\n ge?: number | null,\n gt?: number | null,\n between?: Array< number | null > | null,\n};\n\nexport type SerialCounter = {\n __typename: \"SerialCounter\",\n type: SerialCounterType,\n serialValue: number,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type UpdateSerialCounterInput = {\n type: SerialCounterType,\n serialValue?: number | null,\n};\n\nexport type DeleteSerialCounterInput = {\n type: SerialCounterType,\n};\n\nexport type CreateAppointmentInput = {\n id?: string | null,\n status: AppointmentStatus,\n isFailed?: boolean | null,\n hasSuccessfulServices?: boolean | null,\n hasFailedServices?: boolean | null,\n needsRebooking?: boolean | null,\n isPreReviewed?: boolean | null,\n isPostReviewed?: boolean | null,\n isEscalated?: boolean | null,\n start: string,\n end: string,\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n location: LocationInput,\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: ChecklistInput | null,\n checklist?: ChecklistInput | null,\n postReviewChecklist?: ChecklistInput | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n commentsFromCoordinatorAboutAppointment?: string | null,\n commentsFromTechAboutAppointment?: string | null,\n commentsFromTechAboutSystem?: string | null,\n commentsFromTechAboutAppointmentFailure?: string | null,\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n sharedSlotRank?: number | null,\n estimatedServiceDurationSeconds: number,\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n stripePaymentIntentIDs?: Array< string | null > | null,\n hasPatientConfirmed?: boolean | null,\n isGuestBooked?: boolean | null,\n referralID?: string | null,\n historyJSON?: string | null,\n externalID?: string | null,\n clonedFromAppointmentID?: string | null,\n remoteTechQualificationTypeRequired?: QualificationType | null,\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n automatedPostReviewResults?: Array< AutomatedPostReviewResultsInput > | null,\n};\n\nexport enum AppointmentStatus {\n CREATING = \"CREATING\", // The appointment is still being created in the booking flow.\n PLANNED = \"PLANNED\", // The appointment has been booked, but still needs review and routing.\n PLANNED_AWAITING_REQUISITION = \"PLANNED_AWAITING_REQUISITION\", // The appointment has been booked, but still needs at least one required requisition to be uploaded.\n PLANNED_AND_REVIEWED = \"PLANNED_AND_REVIEWED\", // The appointment has been reviewed for feasibility and routed for service.\n PLANNED_AND_REVIEWED_AWAITING_ACCEPTANCE = \"PLANNED_AND_REVIEWED_AWAITING_ACCEPTANCE\", // The appointment has been reviewed for feasibility and routed for service and is now awaiting tech acceptance.\n SERVICE_DEPARTED = \"SERVICE_DEPARTED\", // The tech has departed for the appointment.\n SERVICE_ARRIVED = \"SERVICE_ARRIVED\", // The tech has arrived at the appointment but not begun service with the patient.\n SERVICE_IN_PROGRESS = \"SERVICE_IN_PROGRESS\", // The tech has begun their service with the patient.\n SERVICE_FINISHED = \"SERVICE_FINISHED\", // The tech has finished their service with the patient.\n DELIVERY_DEPARTED = \"DELIVERY_DEPARTED\", // The tech has finished their service with the patient departed for specimen delivery.\n DELIVERY_ARRIVED = \"DELIVERY_ARRIVED\", // The tech has arrived at the lab, service center, or shipping center where they will drop off the specimens.\n DELIVERY_FINISHED = \"DELIVERY_FINISHED\", // The tech has transferred the specimens to the lab, service center, or shipping center.\n CLOSED = \"CLOSED\", // The tech has finished their service with the patient, any deliveries, and any comments, and marked the appointment as closed.\n CLOSED_AND_REVIEWED = \"CLOSED_AND_REVIEWED\", // The appointment has reviewed for completeness, including successful processing of any specimens.\n CANCELED = \"CANCELED\", // The appointment was canceled by the patient.\n FAILED = \"FAILED\", // All services for all encounters failed for some other reason, e.g. the specimens were rejected or failed to be processed.\n FAILED_WITH_ESCALATION = \"FAILED_WITH_ESCALATION\", // The appointment failed due a detected patient health escalation (FAILED + escalation).\n FAILED_AND_REVIEWED_REQUIRES_RESCHEDULE = \"FAILED_AND_REVIEWED_REQUIRES_RESCHEDULE\", // The appointment failed and should be rebooked by a CSR or coordinator (FAILED + requires follow up).\n FAILED_AND_REVIEWED = \"FAILED_AND_REVIEWED\", // The appointment failed and has been reviewed by a scheduler, nothing else needs to be done (FAILED + post-review complete).\n}\n\n\nexport enum RemoteTechMatchState {\n ACCEPTED = \"ACCEPTED\",\n COMPLETE = \"COMPLETE\",\n}\n\n\nexport type LocationInput = {\n address?: AddressInput | null,\n position?: LocationPositionInput | null,\n};\n\nexport type AddressInput = {\n use?: AddressUse | null,\n lines: Array< string >,\n subunit?: string | null,\n city: string,\n state: string,\n postalCode: string,\n};\n\nexport enum AddressUse {\n HOME = \"HOME\",\n WORK = \"WORK\",\n TEMP = \"TEMP\",\n OLD = \"OLD\",\n BILLING = \"BILLING\",\n}\n\n\nexport type LocationPositionInput = {\n longitude: number,\n latitude: number,\n};\n\nexport enum PartnerOrganization {\n DRVILLIVALAM = \"DRVILLIVALAM\",\n EXACTSCIENCES = \"EXACTSCIENCES\",\n NAVERIS = \"NAVERIS\",\n GUARDANT = \"GUARDANT\",\n GUARDANTSHIELD = \"GUARDANTSHIELD\",\n GRAIL = \"GRAIL\",\n AFFORDABLEPATERNITY = \"AFFORDABLEPATERNITY\",\n DISCOVERHEALTH = \"DISCOVERHEALTH\",\n MYDOCTORMEDICALGROUP = \"MYDOCTORMEDICALGROUP\",\n MYDOCTORMEDICALGROUPVIP = \"MYDOCTORMEDICALGROUPVIP\",\n HALESPORTS = \"HALESPORTS\",\n READY2NURSE = \"READY2NURSE\",\n PENINSULADOCTOR = \"PENINSULADOCTOR\",\n ALPHACARE = \"ALPHACARE\",\n BESTHOMEHEALTH = \"BESTHOMEHEALTH\",\n MERIDIANHOMEHEALTH = \"MERIDIANHOMEHEALTH\",\n RUPAHEALTH = \"RUPAHEALTH\",\n STPATRICKHOMEHEALTH = \"STPATRICKHOMEHEALTH\",\n ALLIANCEHOMEHEALTH = \"ALLIANCEHOMEHEALTH\",\n AAHCKINDREDSANJOSE = \"AAHCKINDREDSANJOSE\",\n AAHCKINDREDALAMEDA = \"AAHCKINDREDALAMEDA\",\n ASSISTONCALL = \"ASSISTONCALL\",\n HARMONYHHSANTACLARA = \"HARMONYHHSANTACLARA\",\n HARMONYHHPLEASANTHILL = \"HARMONYHHPLEASANTHILL\",\n FIRSTCHOICEHOMEHEALTH = \"FIRSTCHOICEHOMEHEALTH\",\n YOURCHOICEHOMEHEALTH = \"YOURCHOICEHOMEHEALTH\",\n PRIMELIVINGHOMEHEALTH = \"PRIMELIVINGHOMEHEALTH\",\n NORTHBAYPRIVATEMEDICINE = \"NORTHBAYPRIVATEMEDICINE\",\n NURSINGANDREHABATHOME = \"NURSINGANDREHABATHOME\",\n CONCIERGEMDLA = \"CONCIERGEMDLA\",\n SEHAJHOMEHEALTH = \"SEHAJHOMEHEALTH\",\n KRISTARAMONASMD = \"KRISTARAMONASMD\",\n AMOREHOMEHEALTH = \"AMOREHOMEHEALTH\",\n INTOUCHHOMECARE = \"INTOUCHHOMECARE\",\n DRIPHYDRATIONPALOALTO = \"DRIPHYDRATIONPALOALTO\",\n CAREMUST = \"CAREMUST\",\n PINNACLEHOMEHEALTH = \"PINNACLEHOMEHEALTH\",\n GUARDIANANGELHOMECARE = \"GUARDIANANGELHOMECARE\",\n EMMANUELHEALTHCAREINC = \"EMMANUELHEALTHCAREINC\",\n HOMEHEALTHBAYAREAINC = \"HOMEHEALTHBAYAREAINC\",\n ELDERCAREMANAGEMENT = \"ELDERCAREMANAGEMENT\",\n SILVERADOBELMONTMEMORYCARE = \"SILVERADOBELMONTMEMORYCARE\",\n COMFORTHOMEHEALTHCARE = \"COMFORTHOMEHEALTHCARE\",\n HEALTHFLEXHOMEHEALTH = \"HEALTHFLEXHOMEHEALTH\",\n SOCOLMD = \"SOCOLMD\",\n FOUNDATIONMEDICINE = \"FOUNDATIONMEDICINE\",\n ABLHEALTHCARE = \"ABLHEALTHCARE\",\n CEDARSSINAI = \"CEDARSSINAI\",\n CAREINTOUCHHOMEHEALTHAGENCY = \"CAREINTOUCHHOMEHEALTHAGENCY\",\n PERPETUALCAREHOMEHEALTH = \"PERPETUALCAREHOMEHEALTH\",\n OPOHEALTH = \"OPOHEALTH\",\n TRUEMED = \"TRUEMED\",\n VNHOMEHEALTHCARE = \"VNHOMEHEALTHCARE\",\n GEORGIAHANDSHOULDERELBOW = \"GEORGIAHANDSHOULDERELBOW\",\n LONETREEPOSTACUTE = \"LONETREEPOSTACUTE\",\n LEBAE = \"LEBAE\",\n ASIANNETWORKPACIFICHOMECARE = \"ASIANNETWORKPACIFICHOMECARE\",\n MARSHALLMEDICALCENTER = \"MARSHALLMEDICALCENTER\",\n SUNCRESTHOSPICE = \"SUNCRESTHOSPICE\",\n JOHNMUIRHEALTH = \"JOHNMUIRHEALTH\",\n DRIPHYDRATION = \"DRIPHYDRATION\",\n OSCAR = \"OSCAR\",\n UCSF = \"UCSF\",\n A1HOMEHEALTHANDHOSPICE = \"A1HOMEHEALTHANDHOSPICE\",\n CAPITOLHEALTHCARE = \"CAPITOLHEALTHCARE\",\n HEALTHFLEXHOSPICE = \"HEALTHFLEXHOSPICE\",\n TRUEMEDSACRAMENTO = \"TRUEMEDSACRAMENTO\",\n SONDERHEALTHCARE = \"SONDERHEALTHCARE\",\n KANEHEALTH = \"KANEHEALTH\",\n ESSENTIALSHOMEHEALTH = \"ESSENTIALSHOMEHEALTH\",\n BMCDEMO = \"BMCDEMO\",\n PULSEDEMO = \"PULSEDEMO\",\n DEMOPROVIDER = \"DEMOPROVIDER\",\n DEMOLAB = \"DEMOLAB\",\n OSCARDEMO = \"OSCARDEMO\",\n NATERA = \"NATERA\",\n MATTAPAN = \"MATTAPAN\",\n DOTHOUSE = \"DOTHOUSE\",\n CODMAN = \"CODMAN\",\n BMC = \"BMC\",\n BMCEVANS = \"BMCEVANS\",\n FIREFLYHEALTH = \"FIREFLYHEALTH\",\n SILVERLINESTAFF = \"SILVERLINESTAFF\",\n APOLLOHOMEHEALTH = \"APOLLOHOMEHEALTH\",\n STANFORDCANCERCENTER = \"STANFORDCANCERCENTER\",\n WELLSENSE = \"WELLSENSE\",\n BMCFAMILYMEDICINE = \"BMCFAMILYMEDICINE\",\n ROSLINDALE = \"ROSLINDALE\",\n BRADFORDRABINMDANDHIROYUHATANOMD = \"BRADFORDRABINMDANDHIROYUHATANOMD\",\n THEBODYWRX = \"THEBODYWRX\",\n HHRGCARELINK = \"HHRGCARELINK\",\n HHRGHELPINGHANDS = \"HHRGHELPINGHANDS\",\n HHRGMARYSHELP = \"HHRGMARYSHELP\",\n HHRGGOLDENPACIFICHOMEHEALTH = \"HHRGGOLDENPACIFICHOMEHEALTH\",\n HHRGELIXIR = \"HHRGELIXIR\",\n HHRGNORCAL = \"HHRGNORCAL\",\n STANFORDRESEARCH = \"STANFORDRESEARCH\",\n STORYHEALTH = \"STORYHEALTH\",\n INTERMOUNTAINCANCERCENTERSALTLAKE = \"INTERMOUNTAINCANCERCENTERSALTLAKE\",\n INTERMOUNTAINCANCERCENTERSTGEORGE = \"INTERMOUNTAINCANCERCENTERSTGEORGE\",\n INTERMOUNTAINCANCERCENTERRIVERTON = \"INTERMOUNTAINCANCERCENTERRIVERTON\",\n TRAININGPARTNER = \"TRAININGPARTNER\",\n ALIGNMENTSTARS = \"ALIGNMENTSTARS\",\n ALIGNMENTCAREEXTENSION = \"ALIGNMENTCAREEXTENSION\",\n CHARLESRIVERFAMILYMEDICINE = \"CHARLESRIVERFAMILYMEDICINE\",\n OSCARHEALTH = \"OSCARHEALTH\",\n MOLINAUT = \"MOLINAUT\",\n MOLINAMI = \"MOLINAMI\",\n MOLINACA = \"MOLINACA\",\n WELLSENSENHMEDICARE = \"WELLSENSENHMEDICARE\",\n WELLSENSENHMEDICAID = \"WELLSENSENHMEDICAID\",\n UCIHEALTH = \"UCIHEALTH\",\n MOLINAFL = \"MOLINAFL\",\n ELEVANCEHEALTH = \"ELEVANCEHEALTH\",\n CENTENEOH = \"CENTENEOH\",\n CENTENECA = \"CENTENECA\",\n CENTENEFL = \"CENTENEFL\",\n CENTENEMA = \"CENTENEMA\",\n CENTENEMI = \"CENTENEMI\",\n CENTENENH = \"CENTENENH\",\n CENTENEKY = \"CENTENEKY\",\n CENTENEGA = \"CENTENEGA\",\n CENTENEME = \"CENTENEME\",\n CENTENEIN = \"CENTENEIN\",\n CENTENECT = \"CENTENECT\",\n CENTENETX = \"CENTENETX\",\n UHCMA = \"UHCMA\",\n HUMANA = \"HUMANA\",\n HUMANANY = \"HUMANANY\",\n HUMANAMI = \"HUMANAMI\",\n ACCOMPANYHEALTHMI = \"ACCOMPANYHEALTHMI\",\n UCLAHEALTH = \"UCLAHEALTH\",\n DEVOTEDHEALTH = \"DEVOTEDHEALTH\",\n CENTRALCALIFORNIAALLIANCEFORHEALTH = \"CENTRALCALIFORNIAALLIANCEFORHEALTH\",\n UCSDHEALTH = \"UCSDHEALTH\",\n AETNA = \"AETNA\",\n}\n\n\nexport type ChecklistInput = {\n items: Array< ChecklistItemInput >,\n};\n\nexport type ChecklistItemInput = {\n title: string,\n status: ChecklistItemStatus,\n fields: Array< ChecklistItemFieldInput >,\n // The unique, stable name for the item, used for extracting structured data and tracking status changes.\n name?: string | null,\n encounterID?: string | null,\n mediaType?: MediaType | null,\n // The timestamp on item change, currently using status value change.\n updatedAt?: number | null,\n};\n\nexport enum ChecklistItemStatus {\n PENDING = \"PENDING\",\n DONE = \"DONE\",\n}\n\n\nexport type ChecklistItemFieldInput = {\n type: ChecklistItemFieldType,\n label?: string | null,\n placeholder?: string | null,\n options?: Array< ChecklistItemOptionInput > | null,\n // The unique, stable name for the Field, used for extracting structured data and tracking value changes.\n name?: string | null,\n // The timestamp on field change, stores client timestamp\n updatedAt?: number | null,\n value?: string | null,\n values?: Array< string > | null,\n upload?: S3ObjectInput | null,\n uploadS3ObjectID?: string | null,\n encounterID?: string | null,\n explanation?: string | null,\n image?: ChecklistItemImageInput | null,\n help?: string | null,\n icon?: string | null,\n isRequired?: boolean | null,\n parametersJSON?: string | null,\n};\n\nexport enum ChecklistItemFieldType {\n TITLE = \"TITLE\",\n TEXT = \"TEXT\",\n INFORMATION = \"INFORMATION\",\n WARNING = \"WARNING\",\n TEXT_INPUT = \"TEXT_INPUT\",\n TEXT_AREA = \"TEXT_AREA\",\n CHECKBOX = \"CHECKBOX\",\n MULTIPLE_OPTIONS = \"MULTIPLE_OPTIONS\",\n SINGLE_OPTION = \"SINGLE_OPTION\",\n UPLOAD_PHOTO = \"UPLOAD_PHOTO\",\n IMAGE = \"IMAGE\",\n LOCATION = \"LOCATION\",\n OPEN_APP = \"OPEN_APP\",\n QR_CODE = \"QR_CODE\",\n SWITCH = \"SWITCH\",\n NEXT_BUTTON = \"NEXT_BUTTON\",\n REVIEW_ENCOUNTER_COMMENTS = \"REVIEW_ENCOUNTER_COMMENTS\",\n REVIEW_ENCOUNTER_SERVICES = \"REVIEW_ENCOUNTER_SERVICES\",\n REVIEW_APPOINTMENT_COMMENTS = \"REVIEW_APPOINTMENT_COMMENTS\",\n REVIEW_APPOINTMENT_EXTERNAL_ID = \"REVIEW_APPOINTMENT_EXTERNAL_ID\",\n REVIEW_PAST_APPOINTMENT_COMMENTS = \"REVIEW_PAST_APPOINTMENT_COMMENTS\",\n REVIEW_PATIENT_COMMENTS = \"REVIEW_PATIENT_COMMENTS\",\n REVIEW_APPOINTMENT_PREPARATION_DETAILS = \"REVIEW_APPOINTMENT_PREPARATION_DETAILS\",\n DEPART_TO_APPOINTMENT = \"DEPART_TO_APPOINTMENT\",\n ARRIVE_AT_APPOINTMENT = \"ARRIVE_AT_APPOINTMENT\",\n GATHER_COVID19_TEST_REASONS = \"GATHER_COVID19_TEST_REASONS\",\n GATHER_BLOOD_COLLECTION_DETAILS = \"GATHER_BLOOD_COLLECTION_DETAILS\",\n CONFIRM_PATIENT_IDENTITY = \"CONFIRM_PATIENT_IDENTITY\",\n GATHER_ETHNICITY = \"GATHER_ETHNICITY\",\n GATHER_RACES = \"GATHER_RACES\",\n GATHER_GENDER = \"GATHER_GENDER\",\n GATHER_SEX = \"GATHER_SEX\",\n GATHER_PATIENT_HEIGHT = \"GATHER_PATIENT_HEIGHT\",\n GATHER_PATIENT_WEIGHT = \"GATHER_PATIENT_WEIGHT\",\n GATHER_PHONE_NUMBER = \"GATHER_PHONE_NUMBER\",\n GATHER_EMAIL = \"GATHER_EMAIL\",\n CONFIRM_ADHERENCE_TO_CONSTRAINTS = \"CONFIRM_ADHERENCE_TO_CONSTRAINTS\",\n REVIEW_BLOOD_DRAW_HISTORY = \"REVIEW_BLOOD_DRAW_HISTORY\",\n REVIEW_PAST_BLOOD_COLLECTION_DETAILS = \"REVIEW_PAST_BLOOD_COLLECTION_DETAILS\",\n COLLECT_BLOOD_SPECIMENS = \"COLLECT_BLOOD_SPECIMENS\",\n LABEL_BLOOD_SPECIMENS = \"LABEL_BLOOD_SPECIMENS\",\n DEPART_TO_LAB = \"DEPART_TO_LAB\",\n DEPART_TO_DROPOFF = \"DEPART_TO_DROPOFF\",\n ARRIVE_AT_LAB = \"ARRIVE_AT_LAB\",\n TRANSFER_SPECIMENS_TO_LAB = \"TRANSFER_SPECIMENS_TO_LAB\",\n SUBMIT_COMMENTS = \"SUBMIT_COMMENTS\",\n MARK_FAILED_APPOINTMENT = \"MARK_FAILED_APPOINTMENT\",\n CLOSE_APPOINTMENT = \"CLOSE_APPOINTMENT\",\n COLLECT_VITAL = \"COLLECT_VITAL\",\n MONOFILAMENT_TEST_LEFT = \"MONOFILAMENT_TEST_LEFT\",\n MONOFILAMENT_TEST_RIGHT = \"MONOFILAMENT_TEST_RIGHT\",\n REVIEW_FAILED_SERVICES = \"REVIEW_FAILED_SERVICES\",\n REQUEST_FOR_REMOTE_TECH_MATCH = \"REQUEST_FOR_REMOTE_TECH_MATCH\",\n AWV_PROVIDER_CALL = \"AWV_PROVIDER_CALL\", // AWV stands for Annual Wellness Visit\n COLLECT_MEDICATIONS = \"COLLECT_MEDICATIONS\",\n SATELLITE_AND_STREET_VIEW_PHOTO = \"SATELLITE_AND_STREET_VIEW_PHOTO\",\n REVIEW_COORDINATOR_INFO = \"REVIEW_COORDINATOR_INFO\",\n REVIEW_REQUISITION = \"REVIEW_REQUISITION\",\n REVIEW_INSURANCE_CARD = \"REVIEW_INSURANCE_CARD\",\n REVIEW_MEDICARE_CARD = \"REVIEW_MEDICARE_CARD\",\n REVIEW_SPRINTER_FEASIBILITY = \"REVIEW_SPRINTER_FEASIBILITY\",\n REVIEW_BMI = \"REVIEW_BMI\",\n GATHER_SERVICE_REQUESTS = \"GATHER_SERVICE_REQUESTS\",\n CANCEL_APPOINTMENT = \"CANCEL_APPOINTMENT\",\n GENERATE_APPOINTMENT_CHECKLIST = \"GENERATE_APPOINTMENT_CHECKLIST\",\n REGISTER_PATIENTS_IN_IMAGEMOVER = \"REGISTER_PATIENTS_IN_IMAGEMOVER\",\n REROUTE_APPOINTMENT = \"REROUTE_APPOINTMENT\",\n CLOSE_PRE_REVIEW = \"CLOSE_PRE_REVIEW\",\n SUBMIT_PRE_REVIEW = \"SUBMIT_PRE_REVIEW\",\n REVIEW_CONTACT_POINTS = \"REVIEW_CONTACT_POINTS\",\n REVIEW_APPOINTMENT_FAILURE = \"REVIEW_APPOINTMENT_FAILURE\",\n REVIEW_ENCOUNTER_SERVICE_OUTCOMES = \"REVIEW_ENCOUNTER_SERVICE_OUTCOMES\",\n REVIEW_BILLING_DETAILS = \"REVIEW_BILLING_DETAILS\",\n SUBMIT_POST_REVIEW = \"SUBMIT_POST_REVIEW\",\n GENERATE_ENCOUNTER_SUMMARY = \"GENERATE_ENCOUNTER_SUMMARY\",\n UPLOAD_LAB_RESULTS = \"UPLOAD_LAB_RESULTS\",\n SEND_EFAX = \"SEND_EFAX\",\n SEND_EMAIL = \"SEND_EMAIL\",\n SEND_ENCOUNTER_SUMMARY_TO_PRACTITIONER = \"SEND_ENCOUNTER_SUMMARY_TO_PRACTITIONER\",\n REVIEW_ENCOUNTER_PATIENT_INFO = \"REVIEW_ENCOUNTER_PATIENT_INFO\",\n REVIEW_PATIENT_INFO = \"REVIEW_PATIENT_INFO\",\n REVIEW_AUTOMATED_POST_REVIEW_RESULTS = \"REVIEW_AUTOMATED_POST_REVIEW_RESULTS\",\n REVIEW_UNSET_REQUIRED_FIELDS = \"REVIEW_UNSET_REQUIRED_FIELDS\",\n}\n\n\nexport type ChecklistItemOptionInput = {\n label: string,\n value: string,\n};\n\nexport type S3ObjectInput = {\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n};\n\nexport type ChecklistItemImageInput = {\n uri: string,\n width: number,\n height: number,\n};\n\nexport enum MediaType {\n INSURANCE_CARD = \"INSURANCE_CARD\",\n MEDICARE_CARD = \"MEDICARE_CARD\",\n REQUISITION = \"REQUISITION\",\n SPRINTER_FEASIBILITY = \"SPRINTER_FEASIBILITY\",\n SPRINTER_CHECKLIST = \"SPRINTER_CHECKLIST\",\n ENCOUNTER_SUMMARY = \"ENCOUNTER_SUMMARY\",\n SDOH_RESOURCES = \"SDOH_RESOURCES\",\n}\n\n\n// Identifies the type of post review that's required for this appointment.\nexport enum PostReviewType {\n UNKNOWN = \"UNKNOWN\", // Post review automation has not completed (or the automation has failed).\n AUTOMATED = \"AUTOMATED\", // Appointment was automatically post-reviewed.\n CLINICAL = \"CLINICAL\", // Appointment requires clinical review.\n NON_CLINICAL = \"NON_CLINICAL\", // Appointment requires non-clinical review.\n}\n\n\nexport enum AppointmentOverrideMode {\n TECH_FORCE_OVERRIDE = \"TECH_FORCE_OVERRIDE\",\n}\n\n\nexport enum QualificationType {\n NURSE_PRACTITIONER = \"NURSE_PRACTITIONER\",\n}\n\n\nexport type ChildDocumentURLResponseInput = {\n url?: string | null,\n};\n\nexport enum VisitType {\n IN_HOME = \"IN_HOME\",\n REMOTE = \"REMOTE\",\n}\n\n\nexport enum RemoteConnectionMethod {\n AUDIO_ONLY = \"AUDIO_ONLY\",\n VIDEO = \"VIDEO\",\n}\n\n\nexport type AutomatedPostReviewResultsInput = {\n flags: Array< PostReviewFlagInput >,\n timestamp: number,\n};\n\nexport type PostReviewFlagInput = {\n severityLevel: PostReviewFlagSeverityLevel,\n displayMessage: string,\n flagType: string,\n checklistItemName?: string | null,\n checklistFieldName?: string | null,\n encounterID?: string | null,\n};\n\nexport enum PostReviewFlagSeverityLevel {\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR_CLINICAL = \"ERROR_CLINICAL\",\n ERROR_NON_CLINICAL = \"ERROR_NON_CLINICAL\",\n}\n\n\nexport type ModelAppointmentConditionInput = {\n status?: ModelAppointmentStatusInput | null,\n isFailed?: ModelBooleanInput | null,\n hasSuccessfulServices?: ModelBooleanInput | null,\n hasFailedServices?: ModelBooleanInput | null,\n needsRebooking?: ModelBooleanInput | null,\n isPreReviewed?: ModelBooleanInput | null,\n isPostReviewed?: ModelBooleanInput | null,\n isEscalated?: ModelBooleanInput | null,\n start?: ModelStringInput | null,\n end?: ModelStringInput | null,\n techID?: ModelIDInput | null,\n remoteTechID?: ModelIDInput | null,\n remoteTechMatchState?: ModelRemoteTechMatchStateInput | null,\n allocatedRemoteTechID?: ModelIDInput | null,\n coordinatorID?: ModelIDInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n postReviewType?: ModelPostReviewTypeInput | null,\n serviceRegionName?: ModelStringInput | null,\n geographicalState?: ModelStringInput | null,\n timezone?: ModelStringInput | null,\n avoidTechIDs?: ModelIDInput | null,\n lastBookedAt?: ModelIntInput | null,\n statusUpdatedAt?: ModelIntInput | null,\n stripeCustomerID?: ModelStringInput | null,\n stripePriceToCharge?: ModelIntInput | null,\n hasPetsAtLocation?: ModelBooleanInput | null,\n commentsFromCoordinatorAboutAppointment?: ModelStringInput | null,\n commentsFromTechAboutAppointment?: ModelStringInput | null,\n commentsFromTechAboutSystem?: ModelStringInput | null,\n commentsFromTechAboutAppointmentFailure?: ModelStringInput | null,\n commentsFromSchedulerAboutAppointmentFailure?: ModelStringInput | null,\n commentsFromSchedulerAboutCancellation?: ModelStringInput | null,\n partnerOrganizationBookingURL?: ModelStringInput | null,\n overrideMode?: ModelAppointmentOverrideModeInput | null,\n sharedSlotRank?: ModelFloatInput | null,\n estimatedServiceDurationSeconds?: ModelIntInput | null,\n stripeInvoiceLineItemIDs?: ModelStringInput | null,\n stripePaymentIntentIDs?: ModelStringInput | null,\n hasPatientConfirmed?: ModelBooleanInput | null,\n isGuestBooked?: ModelBooleanInput | null,\n referralID?: ModelIDInput | null,\n historyJSON?: ModelStringInput | null,\n externalID?: ModelIDInput | null,\n clonedFromAppointmentID?: ModelIDInput | null,\n remoteTechQualificationTypeRequired?: ModelQualificationTypeInput | null,\n markedReadyForRemoteTechAt?: ModelStringInput | null,\n visitType?: ModelVisitTypeInput | null,\n remoteConnectionMethod?: ModelRemoteConnectionMethodInput | null,\n and?: Array< ModelAppointmentConditionInput | null > | null,\n or?: Array< ModelAppointmentConditionInput | null > | null,\n not?: ModelAppointmentConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelAppointmentStatusInput = {\n eq?: AppointmentStatus | null,\n ne?: AppointmentStatus | null,\n};\n\nexport type ModelBooleanInput = {\n ne?: boolean | null,\n eq?: boolean | null,\n attributeExists?: boolean | null,\n attributeType?: ModelAttributeTypes | null,\n};\n\nexport type ModelIDInput = {\n ne?: string | null,\n eq?: string | null,\n le?: string | null,\n lt?: string | null,\n ge?: string | null,\n gt?: string | null,\n contains?: string | null,\n notContains?: string | null,\n between?: Array< string | null > | null,\n beginsWith?: string | null,\n attributeExists?: boolean | null,\n attributeType?: ModelAttributeTypes | null,\n size?: ModelSizeInput | null,\n};\n\nexport type ModelRemoteTechMatchStateInput = {\n eq?: RemoteTechMatchState | null,\n ne?: RemoteTechMatchState | null,\n};\n\nexport type ModelPartnerOrganizationInput = {\n eq?: PartnerOrganization | null,\n ne?: PartnerOrganization | null,\n};\n\nexport type ModelPostReviewTypeInput = {\n eq?: PostReviewType | null,\n ne?: PostReviewType | null,\n};\n\nexport type ModelAppointmentOverrideModeInput = {\n eq?: AppointmentOverrideMode | null,\n ne?: AppointmentOverrideMode | null,\n};\n\nexport type ModelFloatInput = {\n ne?: number | null,\n eq?: number | null,\n le?: number | null,\n lt?: number | null,\n ge?: number | null,\n gt?: number | null,\n between?: Array< number | null > | null,\n attributeExists?: boolean | null,\n attributeType?: ModelAttributeTypes | null,\n};\n\nexport type ModelQualificationTypeInput = {\n eq?: QualificationType | null,\n ne?: QualificationType | null,\n};\n\nexport type ModelVisitTypeInput = {\n eq?: VisitType | null,\n ne?: VisitType | null,\n};\n\nexport type ModelRemoteConnectionMethodInput = {\n eq?: RemoteConnectionMethod | null,\n ne?: RemoteConnectionMethod | null,\n};\n\nexport type Appointment = {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: RemoteTech | null,\n coordinatorID: string,\n location: Location,\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: Checklist | null,\n checklist?: Checklist | null,\n postReviewChecklist?: Checklist | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: ModelEncounterConnection | null,\n tech?: Tech | null,\n remoteTech?: RemoteTech | null,\n coordinator: Coordinator,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: Referral | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: ChildDocumentURLResponse | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type RemoteTech = {\n __typename: \"RemoteTech\",\n id: string,\n name: HumanName,\n email: string,\n phone?: string | null,\n profilePicture?: S3Object | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n availabilityRules: Array,\n isActive: boolean,\n qualifications: Array,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCode?: S3Object | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n appointments?: ModelAppointmentConnection | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n matchableAndAcceptedAppointments?: Array | null,\n childDocumentURL?: ChildDocumentURLResponse | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type HumanName = {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n};\n\nexport enum NameUse {\n USUAL = \"USUAL\",\n OFFICIAL = \"OFFICIAL\",\n TEMP = \"TEMP\",\n NICKNAME = \"NICKNAME\",\n ANONYMOUS = \"ANONYMOUS\",\n OLD = \"OLD\",\n MAIDEN = \"MAIDEN\",\n}\n\n\nexport enum HumanNamePrefix {\n MS = \"MS\",\n MISS = \"MISS\",\n MRS = \"MRS\",\n MR = \"MR\",\n DR = \"DR\",\n}\n\n\nexport type S3Object = {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n};\n\nexport type TimeRangeRule = {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n};\n\nexport enum TimeRangeRuleInclusion {\n INCLUDE = \"INCLUDE\",\n EXCLUDE = \"EXCLUDE\",\n}\n\n\nexport enum TimeRangeRulePeriod {\n DAY = \"DAY\",\n WEEK = \"WEEK\",\n}\n\n\nexport enum TimeRangeRuleUnavailabilityReason {\n EXCHANGE_SUPPLIES = \"EXCHANGE_SUPPLIES\",\n LUNCH = \"LUNCH\",\n ABSENCE = \"ABSENCE\",\n OFFICE = \"OFFICE\",\n HOLIDAY = \"HOLIDAY\",\n PTO = \"PTO\",\n SICK = \"SICK\",\n SHADOWING = \"SHADOWING\",\n TRAINING = \"TRAINING\",\n CAR_TROUBLE = \"CAR_TROUBLE\",\n OTHER = \"OTHER\",\n}\n\n\nexport type Qualification = {\n __typename: \"Qualification\",\n qualificationType: QualificationType,\n geographicalState: string,\n};\n\nexport enum ServiceType {\n BLOOD = \"BLOOD\",\n CAPILLARY_BLOOD_DRAW = \"CAPILLARY_BLOOD_DRAW\",\n CARDIAC_AUSCULTATION = \"CARDIAC_AUSCULTATION\",\n DIABETIC_FOOT_SCREENING = \"DIABETIC_FOOT_SCREENING\",\n DIABETIC_RETINAL_SCAN = \"DIABETIC_RETINAL_SCAN\",\n ECG = \"ECG\",\n FIT_KIT_PICKUP = \"FIT_KIT_PICKUP\",\n RAPID_COVID_TEST = \"RAPID_COVID_TEST\",\n URINE = \"URINE\",\n VITALS = \"VITALS\",\n CARE_NAVIGATION = \"CARE_NAVIGATION\",\n KIT_DELIVERY_AND_EDUCATION = \"KIT_DELIVERY_AND_EDUCATION\",\n KIT_DELIVERY = \"KIT_DELIVERY\",\n XRAY = \"XRAY\",\n MISCELLANEOUS_SPECIMEN = \"MISCELLANEOUS_SPECIMEN\",\n RACE_AND_ETHNICITY = \"RACE_AND_ETHNICITY\",\n RISK_ASSESSMENT = \"RISK_ASSESSMENT\",\n SDOH_QUESTIONNAIRE = \"SDOH_QUESTIONNAIRE\", // SDOH = Social Determinants of Health\n SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE = \"SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE\",\n DEXA_SCAN_CARE_NAVIGATION_BOOKING = \"DEXA_SCAN_CARE_NAVIGATION_BOOKING\",\n DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION = \"DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION\",\n MAMMOGRAM_CARE_NAVIGATION_BOOKING = \"MAMMOGRAM_CARE_NAVIGATION_BOOKING\",\n MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION = \"MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION\",\n PCP_VISIT_CARE_NAVIGATION_BOOKING = \"PCP_VISIT_CARE_NAVIGATION_BOOKING\", // PCP = Primary Care Provider\n PCP_VISIT_CARE_NAVIGATION_CONFIRMATION = \"PCP_VISIT_CARE_NAVIGATION_CONFIRMATION\", // PCP = Primary Care Provider\n HEIGHT_AND_WEIGHT_COLLECTION = \"HEIGHT_AND_WEIGHT_COLLECTION\",\n COLOGUARD_KIT_ORDERING = \"COLOGUARD_KIT_ORDERING\",\n COLOGUARD_KIT_EDUCATION = \"COLOGUARD_KIT_EDUCATION\",\n ANNUAL_WELLNESS_VISIT_PROVIDER_CALL = \"ANNUAL_WELLNESS_VISIT_PROVIDER_CALL\",\n ADULT_PREVENTIVE_VISIT = \"ADULT_PREVENTIVE_VISIT\",\n PAIN_SCREENING = \"PAIN_SCREENING\",\n BONE_DENSITY_SCAN = \"BONE_DENSITY_SCAN\",\n TOPICAL_FLUORIDE = \"TOPICAL_FLUORIDE\",\n STATIN_ADHERENCE_ASSESSMENT = \"STATIN_ADHERENCE_ASSESSMENT\",\n WEIGHT_COUNSELING_FOR_CHILDREN = \"WEIGHT_COUNSELING_FOR_CHILDREN\",\n}\n\n\nexport type ModelAppointmentConnection = {\n __typename: \"ModelAppointmentConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ChildDocumentURLResponse = {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n};\n\nexport type Location = {\n __typename: \"Location\",\n address?: Address | null,\n position?: LocationPosition | null,\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n};\n\nexport type Address = {\n __typename: \"Address\",\n use?: AddressUse | null,\n lines: Array< string >,\n subunit?: string | null,\n city: string,\n state: string,\n postalCode: string,\n};\n\nexport type LocationPosition = {\n __typename: \"LocationPosition\",\n longitude: number,\n latitude: number,\n};\n\nexport type Checklist = {\n __typename: \"Checklist\",\n items: Array,\n};\n\nexport type ChecklistItem = {\n __typename: \"ChecklistItem\",\n title: string,\n // The unique, stable name for the item, used for extracting structured data and tracking status changes.\n name?: string | null,\n status: ChecklistItemStatus,\n fields: Array,\n encounterID?: string | null,\n mediaType?: MediaType | null,\n updatedAt?: number | null,\n};\n\nexport type ChecklistItemField = {\n __typename: \"ChecklistItemField\",\n type: ChecklistItemFieldType,\n label?: string | null,\n placeholder?: string | null,\n options?: Array | null,\n name?: string | null,\n value?: string | null,\n values?: Array< string > | null,\n upload?: S3Object | null,\n uploadS3ObjectID?: string | null,\n encounterID?: string | null,\n explanation?: string | null,\n image?: ChecklistItemImage | null,\n updatedAt?: number | null,\n help?: string | null,\n icon?: string | null,\n isRequired?: boolean | null,\n parametersJSON?: string | null,\n};\n\nexport type ChecklistItemOption = {\n __typename: \"ChecklistItemOption\",\n label: string,\n value: string,\n};\n\nexport type ChecklistItemImage = {\n __typename: \"ChecklistItemImage\",\n uri: string,\n width: number,\n height: number,\n};\n\nexport type ModelEncounterConnection = {\n __typename: \"ModelEncounterConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type Encounter = {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n appointment: Appointment,\n patientID: string,\n patient: Patient,\n coordinatorID: string,\n coordinator?: Coordinator | null,\n techID?: string | null,\n tech?: Tech | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitions?: Array | null,\n requisitionUploads?: Array | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n covid19Questions?: COVID19Questions | null,\n bloodCollectionDetails?: SpecimenCollectionDetails | null,\n capillaryDrawCollectionDetails?: SpecimenCollectionDetails | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n serviceOutcomes?: Array | null,\n diagnosisCodes?: Array | null,\n // The partner's identifier for this encounter/appointment:\n // - FMI Case number for Foundation,\n // - Accession Number for Guardant,\n // - Job ID for Natera\n partnersEncounterID?: CustomProperty | null,\n documents?: Array | null,\n observations?: Array | null,\n procedures?: Array | null,\n escalation?: Escalation | null,\n // List of questionnaires associated with the encounter\n questionnaires?: Array | null,\n colorectalCancerScreeningAnswers?: QuestionnaireResponse | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n childDocumentURL?: ChildDocumentURLResponse | null,\n duplicateChildDocuments?: DuplicateChildDocumentResponse | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type Patient = {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n location?: Location | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n labOrganizationPatientIDs?: Array | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n consentToContactForAppointmentBySMS?: Consent | null,\n consentToContactForAppointmentByEmail?: Consent | null,\n name: HumanName,\n caregiverName?: HumanName | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFront?: S3Object | null,\n insuranceCardUploadBack?: S3Object | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFront?: S3Object | null,\n medicareCardUploadBack?: S3Object | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n encounters?: ModelEncounterConnection | null,\n coordinator: Coordinator,\n commentsFromTechsAboutEncounters?: Array | null,\n bloodCollectionDetailsFromEncounters?: Array | null,\n capillaryDrawCollectionDetailsFromEncounters?: Array | null,\n referrals?: ModelReferralConnection | null,\n careNavigationEpisodes?: ModelCareNavigationEpisodeConnection | null,\n campaigns?: ModelPatientCampaignStateConnection | null,\n watchlistedAppointmentID?: string | null,\n watchlistedAppointment?: Appointment | null,\n responsiblePractitionerID?: string | null,\n responsiblePractitioner?: Practitioner | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n consentToContactForMarketingSMS?: Consent | null,\n consentToContactForMarketingEmail?: Consent | null,\n consentToContactForMarketingPhone?: Consent | null,\n suggestedAppointmentLocation?: Location | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n mailingAddress?: Address | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n consents?: Array | null,\n telecom?: ModelPatientContactPointConnection | null,\n childDocumentURL?: ChildDocumentURLResponse | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type LabOrganizationPatientID = {\n __typename: \"LabOrganizationPatientID\",\n labOrganization: LabOrganization,\n externalID: string,\n planNameForLabOrdering: string,\n};\n\nexport enum LabOrganization {\n AFFORDABLE_PATERNITY = \"AFFORDABLE_PATERNITY\",\n BIO_REFERENCE = \"BIO_REFERENCE\",\n CYREX = \"CYREX\",\n DEMO_LAB = \"DEMO_LAB\",\n EXACT_SCIENCES = \"EXACT_SCIENCES\",\n FOUNDATION_MEDICINE = \"FOUNDATION_MEDICINE\",\n GRAIL = \"GRAIL\",\n GUARDANT = \"GUARDANT\",\n INTERMOUNTAIN = \"INTERMOUNTAIN\",\n INTERMOUNTAIN_CANCER_CENTER = \"INTERMOUNTAIN_CANCER_CENTER\",\n MUIRLAB = \"MUIRLAB\",\n KAISER = \"KAISER\",\n LABCORP = \"LABCORP\",\n MARSHALL_LABORATORY = \"MARSHALL_LABORATORY\",\n NATERA = \"NATERA\",\n NAVERIS = \"NAVERIS\",\n QUEST = \"QUEST\",\n PULSE_DEMO = \"PULSE_DEMO\",\n RUPA_HEALTH = \"RUPA_HEALTH\",\n SPRINTER_HEALTH = \"SPRINTER_HEALTH\",\n STANFORD = \"STANFORD\",\n STANFORD_CHILDRENS_HOSPITAL = \"STANFORD_CHILDRENS_HOSPITAL\",\n STANFORD_CANCER_CENTER = \"STANFORD_CANCER_CENTER\",\n STANFORD_RESEARCH = \"STANFORD_RESEARCH\",\n UCSF_BLOOD_DRAW_LAB = \"UCSF_BLOOD_DRAW_LAB\",\n WEST_PAC = \"WEST_PAC\",\n DOTHOUSE_LAB = \"DOTHOUSE_LAB\",\n CODMAN_LAB = \"CODMAN_LAB\",\n BMC_LAB = \"BMC_LAB\",\n ROSLINDALE_LAB = \"ROSLINDALE_LAB\",\n LETS_GET_CHECKED_LAB = \"LETS_GET_CHECKED_LAB\",\n OTHER = \"OTHER\",\n TRAINING_PARTNER_LAB = \"TRAINING_PARTNER_LAB\",\n UCI_LAB = \"UCI_LAB\",\n}\n\n\n// A person's diabetic type.\nexport enum DiabeticType {\n TYPE_1 = \"TYPE_1\",\n TYPE_2 = \"TYPE_2\",\n}\n\n\nexport type Consent = {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n};\n\n// A person's biological (genetic) sex. See https://www.hl7.org/fhir/patient.html#gender for more information.\nexport enum Sex {\n FEMALE = \"FEMALE\",\n MALE = \"MALE\",\n OTHER = \"OTHER\",\n}\n\n\n// A person's administrative gender. See https://www.hl7.org/fhir/patient.html#gender for more information.\nexport enum Gender {\n FEMALE = \"FEMALE\",\n MALE = \"MALE\",\n OTHER = \"OTHER\",\n}\n\n\n// A person's ethnicity, as defined by the Office of Management and Budget's Revisions to the Standards for the Classification of Federal Data on Race and Ethnicity. See https://www.govinfo.gov/content/pkg/FR-1997-10-30/pdf/97-28653.pdf for more information.\nexport enum Ethnicity {\n HISPANIC_OR_LATINO = \"HISPANIC_OR_LATINO\",\n NOT_HISPANIC_OR_LATINO = \"NOT_HISPANIC_OR_LATINO\",\n UNKNOWN = \"UNKNOWN\",\n PREFER_NOT_TO_DISCLOSE = \"PREFER_NOT_TO_DISCLOSE\",\n}\n\n\n// A person's race, as defined by the Office of Management and Budget's Revisions to the Standards for the Classification of Federal Data on Race and Ethnicity. See https://www.govinfo.gov/content/pkg/FR-1997-10-30/pdf/97-28653.pdf for more information.\nexport enum Race {\n AMERICAN_INDIAN_OR_ALASKA_NATIVE = \"AMERICAN_INDIAN_OR_ALASKA_NATIVE\",\n ASIAN = \"ASIAN\",\n BLACK_OR_AFRICAN_AMERICAN = \"BLACK_OR_AFRICAN_AMERICAN\",\n NATIVE_HAWAIIAN_OR_OTHER_PACIFIC_ISLANDER = \"NATIVE_HAWAIIAN_OR_OTHER_PACIFIC_ISLANDER\",\n PREFER_NOT_TO_DISCLOSE = \"PREFER_NOT_TO_DISCLOSE\",\n SOME_OTHER_RACE = \"SOME_OTHER_RACE\",\n UNKNOWN = \"UNKNOWN\",\n WHITE = \"WHITE\",\n}\n\n\nexport type Coordinator = {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n name?: HumanName | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n consentToContactForAppointmentBySMS?: Consent | null,\n billingCustomerID?: string | null,\n consentToContactForResearch?: Consent | null,\n consentToContactForMarketing?: Consent | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n patients?: ModelPatientConnection | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport enum ManagePartnerUsersAuthorization {\n ALLOW_MANAGE_PARTNER_USERS = \"ALLOW_MANAGE_PARTNER_USERS\",\n DISALLOW_MANAGE_PARTNER_USERS = \"DISALLOW_MANAGE_PARTNER_USERS\",\n}\n\n\nexport type ModelPatientConnection = {\n __typename: \"ModelPatientConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type CommentsFromTechAboutEncounter = {\n __typename: \"CommentsFromTechAboutEncounter\",\n encounterID: string,\n appointmentStart: string,\n techName: HumanName,\n comments?: string | null,\n};\n\nexport type SpecimenCollectionDetailsFromEncounter = {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n techName: HumanName,\n specimenCollectionDetails: SpecimenCollectionDetails,\n failureReason?: ServiceFailureReason | null,\n};\n\nexport type SpecimenCollectionDetails = {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n};\n\nexport enum Laterality {\n LEFT = \"LEFT\",\n RIGHT = \"RIGHT\",\n}\n\n\nexport enum BodyStructure {\n EYE = \"EYE\",\n MEDIAN_CUBITAL = \"MEDIAN_CUBITAL\",\n CEPHALIC = \"CEPHALIC\",\n BASILIC = \"BASILIC\",\n HAND = \"HAND\",\n WRIST = \"WRIST\",\n FOREARM = \"FOREARM\",\n UPPER_ARM = \"UPPER_ARM\",\n OTHER = \"OTHER\",\n}\n\n\nexport enum SpecimenCollectionDeviceType {\n HYPODERMIC_NEEDLE_19_GAUGE_BUTTERFLY = \"HYPODERMIC_NEEDLE_19_GAUGE_BUTTERFLY\",\n HYPODERMIC_NEEDLE_21_GAUGE_BUTTERFLY = \"HYPODERMIC_NEEDLE_21_GAUGE_BUTTERFLY\",\n HYPODERMIC_NEEDLE_21_GAUGE_STRAIGHT = \"HYPODERMIC_NEEDLE_21_GAUGE_STRAIGHT\",\n HYPODERMIC_NEEDLE_22_GAUGE_STRAIGHT = \"HYPODERMIC_NEEDLE_22_GAUGE_STRAIGHT\",\n HYPODERMIC_NEEDLE_23_GAUGE_BUTTERFLY = \"HYPODERMIC_NEEDLE_23_GAUGE_BUTTERFLY\",\n HYPODERMIC_NEEDLE_25_GAUGE_BUTTERFLY = \"HYPODERMIC_NEEDLE_25_GAUGE_BUTTERFLY\",\n OTHER = \"OTHER\",\n}\n\n\n// See SERVICE_FAILURE_REASON_CONFIG for addititonal metadata.\nexport enum ServiceFailureReason {\n MORE_STICKS_REQUIRED = \"MORE_STICKS_REQUIRED\", // Blood draw failed because two sticks were attempted and failed\n ATTEMPTED_STICKS_FAILED = \"ATTEMPTED_STICKS_FAILED\", // Blood draw failed because the sprinter attempted the logged number of sticks failed\n NONADHERENCE_TO_ABSTENTION = \"NONADHERENCE_TO_ABSTENTION\", // Service failed because the patient did not adhere to required abstentions (fasting, vitamin B12 abstention, etc.)\n LAB_DID_NOT_ACCEPT_SPECIMENS = \"LAB_DID_NOT_ACCEPT_SPECIMENS\", // Service failed because the lab rejected the specimen at dropoff\n LAB_LOST_SPECIMENS = \"LAB_LOST_SPECIMENS\", // Service failed because the lab lost the specimens after dropoff\n LAB_CLOSED = \"LAB_CLOSED\", // Service failed because the lab was closed unexpectedly when the Sprinter arrived for dropoff\n INSUFFICIENT_SUPPLIES = \"INSUFFICIENT_SUPPLIES\", // Service failed because the Sprinter did not bring the supplies necessary to complete the service\n PATIENT_UNABLE_TO_PROVIDE_SAMPLE = \"PATIENT_UNABLE_TO_PROVIDE_SAMPLE\", // Service failed because the specimen sample (urine, blood) was not ready for collection at the time of the appointment\n INCOMPATIBLE_EQUIPMENT = \"INCOMPATIBLE_EQUIPMENT\", // Service failed because the equipment did not fit the patient properly (i.e. BP cuff too small, ECG lead too big)\n DEVICE_FAILURE = \"DEVICE_FAILURE\", // Service failed because the device malfunctioned during the appointment, or electronic results failed to transmit\n UNABLE_TO_CAPTURE_IMAGE = \"UNABLE_TO_CAPTURE_IMAGE\", // DRE failed because the device was unable to capture an image of the patient's retina (patient anatomic issues, etc.)\n ESCALATION = \"ESCALATION\", // Service failed because the critical escalation protocol was engaged\n PATIENT_REFUSED_SERVICE = \"PATIENT_REFUSED_SERVICE\", // Service failed because the patient refused the service\n UNABLE_TO_REACH_PATIENT = \"UNABLE_TO_REACH_PATIENT\", // Service failed because the patient was unable to be reached\n PATIENT_RECEIVED_SERVICE_ELSEWHERE = \"PATIENT_RECEIVED_SERVICE_ELSEWHERE\", // Service failed because the patient received service elsewhere\n PATIENT_COLLECTED_SPECIMEN_INCORRECTLY = \"PATIENT_COLLECTED_SPECIMEN_INCORRECTLY\", // Service failed because the Sprinter arrived and the kit was completed incorrectly\n PATIENT_DID_NOT_QUALIFY_FOR_SERVICE = \"PATIENT_DID_NOT_QUALIFY_FOR_SERVICE\", // The patient has comorbidity or conditions that disqualify them from the service.\n KIT_EXPIRED = \"KIT_EXPIRED\", // Service failed because the kit was expired\n PATIENT_NEVER_RECEIVED_KIT = \"PATIENT_NEVER_RECEIVED_KIT\", // Service failed because the Sprinter arrived and the patient did not have a kit\n PATIENT_NO_SHOW = \"PATIENT_NO_SHOW\", // The patient was not at the location of the appointment when the Sprinter arrived\n PATIENT_NOT_AWARE_OF_APPOINTMENT = \"PATIENT_NOT_AWARE_OF_APPOINTMENT\", // The Sprinter arrived and the patient did not know that they had an appointment scheduled (patient home)\n SPRINTER_UNABLE_TO_GET_TO_APPOINTMENT = \"SPRINTER_UNABLE_TO_GET_TO_APPOINTMENT\", // Sprinter unable to make the appointment due to illness, car issues, traffic, etc.\n INSUFFICIENT_APPOINTMENT_INFORMATION = \"INSUFFICIENT_APPOINTMENT_INFORMATION\", // Lack of information required for the appointment (wrong requisition uploaded, patient name misspelled, etc.)\n CONNECTIVITY_ISSUES = \"CONNECTIVITY_ISSUES\", // Sprinter phone or tablet had connectivity issues during the appointment.\n HAZARDOUS_ENVIRONMENT = \"HAZARDOUS_ENVIRONMENT\", // The location of the appointment is unsafe for the Sprinter to conduct services.\n NO_AVAILABILITY_IN_AREA = \"NO_AVAILABILITY_IN_AREA\", // We are unable to locate or otherwise supply a valid provider in the desired location of the appointment.\n SPRINTER_UNABLE_TO_CAPTURE_IMAGE = \"SPRINTER_UNABLE_TO_CAPTURE_IMAGE\", // Sprinter unable to capture image of the patient's eye due to the Sprinter's fault, not due to patient anatomical or medical issues (see UNABLE_TO_CAPTURE_IMAGE).\n LINE_DISCONNECTED = \"LINE_DISCONNECTED\", // Phone number provided by the patient is not active\n CALL_UNANSWERED = \"CALL_UNANSWERED\", // Patient did not answer call\n PATIENT_DID_NOT_PROVIDE_HEIGHT_AND_WEIGHT = \"PATIENT_DID_NOT_PROVIDE_HEIGHT_AND_WEIGHT\", // Patient could not provide height and weight\n SPRINTER_UNABLE_TO_GET_TO_APPOINTMENT_MAP_ROUTE_FAILURE = \"SPRINTER_UNABLE_TO_GET_TO_APPOINTMENT_MAP_ROUTE_FAILURE\",\n SPRINTER_UNABLE_TO_GET_TO_APPOINTMENT_CAR_TROUBLE = \"SPRINTER_UNABLE_TO_GET_TO_APPOINTMENT_CAR_TROUBLE\",\n SPRINTER_UNABLE_TO_GET_TO_APPOINTMENT_PERSONAL_EMERGENCY = \"SPRINTER_UNABLE_TO_GET_TO_APPOINTMENT_PERSONAL_EMERGENCY\",\n SPRINTER_UNABLE_TO_GET_TO_APPOINTMENT_WEATHER = \"SPRINTER_UNABLE_TO_GET_TO_APPOINTMENT_WEATHER\",\n SPRINTER_UNABLE_TO_GET_TO_APPOINTMENT_LOCATION_INACCESSIBLE = \"SPRINTER_UNABLE_TO_GET_TO_APPOINTMENT_LOCATION_INACCESSIBLE\",\n INSUFFICIENT_OR_INCORRECT_APPOINTMENT_INFORMATION_PROVIDED_ADDRESS_OR_ENTRY_CODE_MISSING_OR_WRONG = \"INSUFFICIENT_OR_INCORRECT_APPOINTMENT_INFORMATION_PROVIDED_ADDRESS_OR_ENTRY_CODE_MISSING_OR_WRONG\",\n INSUFFICIENT_OR_INCORRECT_APPOINTMENT_INFORMATION_PROVIDED_REQUISITION_MISSING = \"INSUFFICIENT_OR_INCORRECT_APPOINTMENT_INFORMATION_PROVIDED_REQUISITION_MISSING\",\n NO_NP_AVAILABLE = \"NO_NP_AVAILABLE\",\n PATIENT_UNABLE_TO_PROVIDE_SAMPLE_JUST_VOIDED = \"PATIENT_UNABLE_TO_PROVIDE_SAMPLE_JUST_VOIDED\", // Patient was not able to provide urine sample but can be rescheduled\n PATIENT_UNABLE_TO_PROVIDE_SAMPLE_INCONTINENT_OLIGURIC = \"PATIENT_UNABLE_TO_PROVIDE_SAMPLE_INCONTINENT_OLIGURIC\", // Patient unable to have urine collected by Sprinter ever (should have been excluded from service)\n PATIENT_UNABLE_TO_PROVIDE_SAMPLE_ON_DIALYSIS = \"PATIENT_UNABLE_TO_PROVIDE_SAMPLE_ON_DIALYSIS\",\n PATIENT_UNABLE_TO_FOLLOW_DIRECTION = \"PATIENT_UNABLE_TO_FOLLOW_DIRECTION\", // Patient confused or disability preventing them from service\n PATIENT_COULD_NOT_PROVIDE_VITALS = \"PATIENT_COULD_NOT_PROVIDE_VITALS\",\n PATIENT_PERSONAL_EMERGENCY = \"PATIENT_PERSONAL_EMERGENCY\",\n OTHER = \"OTHER\", // Uncatalogued reason for failure which will be captured by the Scheduler via free text field.\n}\n\n\nexport type ModelReferralConnection = {\n __typename: \"ModelReferralConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type Referral = {\n __typename: \"Referral\",\n id: string,\n appointments?: ModelAppointmentConnection | null,\n patientID: string,\n patient: Patient,\n partnerOrganization: PartnerOrganization,\n requisitions?: Array | null,\n requisitionUploads?: Array | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n diagnosisCodes?: Array | null,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n outreachOutcomesPerServiceRequest?: Array | null,\n ttl?: number | null,\n childDocumentURL?: ChildDocumentURLResponse | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type Requisition = {\n __typename: \"Requisition\",\n id: string,\n labOrganization?: LabOrganization | null,\n serviceRequests?: Array | null,\n // Related type information for services requested in the service requests.\n // In a future state one should be able to point to this collection for reads instead of the serviceRequests\n // \n // This currently must be a custom resolver as the Requisition is a \"type\" which cannot hold hasMany\n // references to models.\n serviceRequestTypes?: Array | null,\n // A unique numerical patient requisition number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n requisitionNumber?: string | null,\n};\n\nexport type ServiceRequest = {\n __typename: \"ServiceRequest\",\n id: string,\n externalID: string,\n isNewServiceRequestEntry?: boolean | null,\n displayName?: string | null,\n};\n\nexport type ServiceRequestType = {\n __typename: \"ServiceRequestType\",\n id: string,\n cptCodes: Array< string | null >,\n externalID: string,\n displayName: string,\n // Alternate names for service requests, to be used in service request lookup\n synonyms?: Array< string | null > | null,\n labOrganization: LabOrganization,\n container?: string | null,\n serviceRequestTypeContainerID?: string | null,\n serviceRequestTypeContainer?: ServiceRequestTypeContainer | null,\n specimen?: string | null,\n preferredSpecimen?: string | null,\n preferredVolumeDescription?: string | null,\n preferredVolumeMilliliters?: number | null,\n minimumVolume?: string | null,\n minimumVolumeAmount?: number | null,\n alternateSpecimen?: string | null,\n transportInstructions?: string | null,\n collectionInstructions?: string | null,\n collectionInstructionsVideoURL?: string | null,\n rejectionCriteria?: string | null,\n specimenStability?: string | null,\n patientPreparation?: string | null,\n resultAvailability?: string | null,\n serviceTypes?: Array< ServiceType > | null,\n containerSpecimenVolumes?: Array | null,\n abstentions?: Array | null,\n customKit?: ServiceRequestCustomKit | null,\n collectionTimeRules?: Array | null,\n requiresBinaryPatientSex?: boolean | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type ServiceRequestTypeContainer = {\n __typename: \"ServiceRequestTypeContainer\",\n id: string,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type SpecimenContainerSpecimenVolumes = {\n __typename: \"SpecimenContainerSpecimenVolumes\",\n // The ID of the container assigned to a serviceRequest, only applicable for non-combinable serviceRequests\n containerOverrideID?: string | null,\n // The type of tube e.g., SST, LAV EDTA, Urine Cup\n containerCategory?: SpecimenContainerCategory | null,\n // The minimum volume needed for a test\n minimumMilliliters?: number | null,\n // The preferred volume for a test in case we do not have minumum volume set above.\n preferredMilliliters?: number | null,\n // Whether it's acceptable to combine the specimens for this test and others into a single container during container calculations.\n // For example, if true, then blood for two tests requiring 2 mL of whole blood each can be drawn into a single 5 mL tube rather than two separate 3 mL tubes.\n isCombinable: boolean,\n // minimum container count needed for the specimen\n minimumContainerCount?: number | null,\n specimenTestTypes?: Array< SpecimenTestType | null > | null,\n};\n\nexport enum SpecimenContainerCategory {\n BLACK_AND_YELLOW_NMR_LIPO_TUBE = \"BLACK_AND_YELLOW_NMR_LIPO_TUBE\",\n DISCARD_TUBE = \"DISCARD_TUBE\",\n GOLD_VACUETTE_WITH_GEL = \"GOLD_VACUETTE_WITH_GEL\",\n GREEN_LITHIUM_HEPARIN_TUBE_NO_GEL = \"GREEN_LITHIUM_HEPARIN_TUBE_NO_GEL\",\n GREEN_LITHIUM_HEPARIN_TUBE_WITH_GEL = \"GREEN_LITHIUM_HEPARIN_TUBE_WITH_GEL\",\n GREEN_LITHIUM_HEPARIN_TUBE_WITH_GEL_VACUETTE = \"GREEN_LITHIUM_HEPARIN_TUBE_WITH_GEL_VACUETTE\",\n GREEN_SODIUM_HEPARIN_TUBE = \"GREEN_SODIUM_HEPARIN_TUBE\",\n GREEN_VACUETTE_NO_GEL = \"GREEN_VACUETTE_NO_GEL\",\n GREEN_VACUETTE_WITH_GEL = \"GREEN_VACUETTE_WITH_GEL\",\n GRAY_GLUCOSE_TUBE = \"GRAY_GLUCOSE_TUBE\",\n LAVENDER_EDTA_TUBE = \"LAVENDER_EDTA_TUBE\",\n LAVENDER_VACUETTE = \"LAVENDER_VACUETTE\",\n LIGHT_BLUE_AND_BLACK_VACUETTE = \"LIGHT_BLUE_AND_BLACK_VACUETTE\",\n LIGHT_BLUE_AND_WHITE_VACUETTE = \"LIGHT_BLUE_AND_WHITE_VACUETTE\",\n LIGHT_BLUE_CITRATE_TUBE = \"LIGHT_BLUE_CITRATE_TUBE\",\n PEARL_TUBE = \"PEARL_TUBE\",\n PINK_EDTA_TUBE = \"PINK_EDTA_TUBE\",\n PINK_VACUETTE = \"PINK_VACUETTE\",\n POLYMEDCO_KIT = \"POLYMEDCO_KIT\",\n POLYMEDCO_OC_AUTO_SAMPLING_BOTTLE = \"POLYMEDCO_OC_AUTO_SAMPLING_BOTTLE\",\n PROTEASE_INHIBITOR_TUBE = \"PROTEASE_INHIBITOR_TUBE\",\n INSURE_FOBT_TEST_CARD = \"INSURE_FOBT_TEST_CARD\",\n RED_VACUETTE_WITH_GEL = \"RED_VACUETTE_WITH_GEL\",\n ROYAL_BLUE_TUBE = \"ROYAL_BLUE_TUBE\",\n ROYAL_BLUE_VACUETTE = \"ROYAL_BLUE_VACUETTE\",\n SERUM_SEPARATING_TUBE = \"SERUM_SEPARATING_TUBE\",\n SERUM_SEPARATING_TUBE_NO_GEL = \"SERUM_SEPARATING_TUBE_NO_GEL\",\n TAN_TUBE = \"TAN_TUBE\",\n TUBERCULOSIS_TUBE = \"TUBERCULOSIS_TUBE\",\n TIGER_SST_TUBE = \"TIGER_SST_TUBE\",\n URINE_CUP = \"URINE_CUP\",\n YELLOW_ACDA_TUBE = \"YELLOW_ACDA_TUBE\",\n YELLOW_ACDB_TUBE = \"YELLOW_ACDB_TUBE\",\n CPT_TUBE = \"CPT_TUBE\",\n LAVENDER_EDTA_CAPILLARY_TUBE = \"LAVENDER_EDTA_CAPILLARY_TUBE\",\n}\n\n\nexport enum SpecimenTestType {\n THYROID = \"THYROID\",\n}\n\n\nexport type Abstention = {\n __typename: \"Abstention\",\n abstentionType: AbstentionType,\n preferredDurationMinutes: number,\n requiredDurationMinutes?: number | null,\n};\n\nexport enum AbstentionType {\n FOOD = \"FOOD\",\n NICOTINE = \"NICOTINE\",\n EXERCISE = \"EXERCISE\",\n CAFFEINE = \"CAFFEINE\",\n BIOTIN = \"BIOTIN\",\n URINATION = \"URINATION\",\n INTRAVENOUS_CHEMOTHERAPY = \"INTRAVENOUS_CHEMOTHERAPY\",\n}\n\n\nexport type ServiceRequestCustomKit = {\n __typename: \"ServiceRequestCustomKit\",\n photoURL: string,\n barcodePhotoURL?: string | null,\n recipient: CustomKitRecipient,\n // requires test requisition form (TRF) completion\n requiresTRFCompletion: boolean,\n // requires benefit correction form (BCF) completion\n requiresBCFCompletion: boolean,\n};\n\nexport enum CustomKitRecipient {\n PATIENT = \"PATIENT\",\n SPRINTER = \"SPRINTER\",\n}\n\n\nexport type Coding = {\n __typename: \"Coding\",\n system: string,\n code: string,\n displayName?: string | null,\n};\n\nexport type ServiceRequestOutreachOutcome = {\n __typename: \"ServiceRequestOutreachOutcome\",\n serviceRequestExternalID: string,\n productType?: ProductType | null,\n serviceTypes?: Array< ServiceType > | null,\n labOrganization: LabOrganization,\n outcome: string,\n notes?: string | null,\n};\n\n// Product types are used for similar billing of service types.\nexport enum ProductType {\n CARDIAC_AUSCULTATION = \"CARDIAC_AUSCULTATION\",\n DIABETIC_FOOT_SCREENING = \"DIABETIC_FOOT_SCREENING\",\n FIT_KIT_PICKUP = \"FIT_KIT_PICKUP\",\n DIABETIC_RETINAL_SCAN = \"DIABETIC_RETINAL_SCAN\",\n ECG = \"ECG\",\n LAB_TEST = \"LAB_TEST\",\n RAPID_COVID_TEST = \"RAPID_COVID_TEST\",\n VITALS = \"VITALS\",\n CARE_NAVIGATION_DROP_IN = \"CARE_NAVIGATION_DROP_IN\",\n KIT_DELIVERY_AND_EDUCATION = \"KIT_DELIVERY_AND_EDUCATION\",\n KIT_DELIVERY = \"KIT_DELIVERY\",\n XRAY = \"XRAY\",\n QUESTIONNAIRES = \"QUESTIONNAIRES\",\n SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE = \"SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE\",\n DEXA_SCAN_CARE_NAVIGATION_BOOKING = \"DEXA_SCAN_CARE_NAVIGATION_BOOKING\",\n DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION = \"DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION\",\n MAMMOGRAM_CARE_NAVIGATION_BOOKING = \"MAMMOGRAM_CARE_NAVIGATION_BOOKING\",\n MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION = \"MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION\",\n RISK_ASSESSMENT = \"RISK_ASSESSMENT\",\n PCP_VISIT_CARE_NAVIGATION_BOOKING = \"PCP_VISIT_CARE_NAVIGATION_BOOKING\", // PCP = Primary Care Provider\n PCP_VISIT_CARE_NAVIGATION_CONFIRMATION = \"PCP_VISIT_CARE_NAVIGATION_CONFIRMATION\", // PCP = Primary Care Provider\n COLOGUARD_KIT_ORDERING = \"COLOGUARD_KIT_ORDERING\",\n COLOGUARD_KIT_EDUCATION = \"COLOGUARD_KIT_EDUCATION\",\n WEIGHT_COUNSELING_FOR_CHILDREN = \"WEIGHT_COUNSELING_FOR_CHILDREN\",\n HEIGHT_AND_WEIGHT_COLLECTION = \"HEIGHT_AND_WEIGHT_COLLECTION\", // Used for annual wellness visits\n ANNUAL_WELLNESS_VISIT_PROVIDER_CALL = \"ANNUAL_WELLNESS_VISIT_PROVIDER_CALL\",\n ADULT_PREVENTIVE_VISIT = \"ADULT_PREVENTIVE_VISIT\",\n PAIN_SCREENING = \"PAIN_SCREENING\",\n BONE_DENSITY_SCAN = \"BONE_DENSITY_SCAN\",\n TOPICAL_FLUORIDE = \"TOPICAL_FLUORIDE\",\n STATIN_ADHERENCE_ASSESSMENT = \"STATIN_ADHERENCE_ASSESSMENT\",\n}\n\n\nexport type ModelCareNavigationEpisodeConnection = {\n __typename: \"ModelCareNavigationEpisodeConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type CareNavigationEpisode = {\n __typename: \"CareNavigationEpisode\",\n closedAt?: string | null,\n careNavigationGroup: CareNavigationGroup,\n patientID: string,\n patient: Patient,\n partnerOrganization: PartnerOrganization,\n referralID: string,\n referral: Referral,\n zendeskTicketID?: number | null,\n serviceOutcomes?: Array | null,\n documents?: Array | null,\n observations?: Array | null,\n onboardingQuestionsAndAnswers?: Array | null,\n createdAt: string,\n childDocumentURL?: ChildDocumentURLResponse | null,\n id: string,\n updatedAt: string,\n};\n\nexport enum CareNavigationGroup {\n DEXA_SCAN = \"DEXA_SCAN\",\n MAMMOGRAM = \"MAMMOGRAM\",\n PCP_VISIT = \"PCP_VISIT\",\n}\n\n\nexport type CareNavigationEpisodeServiceOutcome = {\n __typename: \"CareNavigationEpisodeServiceOutcome\",\n id: string,\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromCareNavigatorAboutServiceFailure?: string | null,\n statusChangedAt?: string | null,\n serviceDetailJSON: string,\n};\n\nexport enum ServiceFailureFault {\n SPRINTER_HEALTH = \"SPRINTER_HEALTH\",\n PATIENT = \"PATIENT\",\n PARTNER = \"PARTNER\",\n REFERRED_PROVIDER = \"REFERRED_PROVIDER\",\n LAB = \"LAB\",\n NO_FAULT = \"NO_FAULT\",\n}\n\n\nexport enum ServiceStatus {\n SUCCESSFUL = \"SUCCESSFUL\",\n FAILED = \"FAILED\",\n}\n\n\nexport type Document = {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3Object?: S3Object | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n};\n\nexport enum DocumentType {\n DIABETIC_RETINAL_SCAN_EXAM_REPORT = \"DIABETIC_RETINAL_SCAN_EXAM_REPORT\",\n OSTEOPOROSIS_SCREENING_REPORT = \"OSTEOPOROSIS_SCREENING_REPORT\",\n MAMMOGRAM_REPORT = \"MAMMOGRAM_REPORT\",\n LAB_RESULT = \"LAB_RESULT\",\n PATIENT_ENCOUNTER_SUMMARY = \"PATIENT_ENCOUNTER_SUMMARY\",\n CARE_NAVIGATION_EPISODE_SUMMARY = \"CARE_NAVIGATION_EPISODE_SUMMARY\",\n SDOH_RESOURCES = \"SDOH_RESOURCES\",\n ELATION_BILLING_REPORT = \"ELATION_BILLING_REPORT\",\n PATIENT_INFORMED_CONSENT = \"PATIENT_INFORMED_CONSENT\",\n PATIENT_PRIVACY_CONSENT = \"PATIENT_PRIVACY_CONSENT\",\n PROVIDER_ENCOUNTER_SUMMARY = \"PROVIDER_ENCOUNTER_SUMMARY\",\n}\n\n\nexport enum DocumentFormat {\n PDF = \"PDF\",\n HL7 = \"HL7\",\n CSV = \"CSV\",\n XLSX = \"XLSX\",\n GOOGLE_SPREADSHEET = \"GOOGLE_SPREADSHEET\",\n}\n\n\nexport type Observation = {\n __typename: \"Observation\",\n id: string,\n basedOnServiceRequestType?: ObservationPartialServiceRequestType | null,\n identifiers?: Array | null,\n // Per FHIR specifications, we should only have value or valueCoding\n value?: string | null,\n valueCoding?: Array | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n notes?: string | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n source?: ObservationSource | null,\n};\n\nexport type ObservationPartialServiceRequestType = {\n __typename: \"ObservationPartialServiceRequestType\",\n id?: string | null,\n externalID: string,\n labOrganization: LabOrganization,\n};\n\nexport type ObservationIdentifier = {\n __typename: \"ObservationIdentifier\",\n system: ObservationIdentifierSystem,\n code: string,\n displayName?: string | null,\n};\n\nexport enum ObservationIdentifierSystem {\n VENDOR_SPECIFIC = \"VENDOR_SPECIFIC\",\n LOINC = \"LOINC\",\n}\n\n\nexport enum ObservationCategory {\n SOCIAL_HISTORY = \"SOCIAL_HISTORY\",\n VITAL_SIGNS = \"VITAL_SIGNS\",\n IMAGING = \"IMAGING\",\n LABORATORY = \"LABORATORY\",\n PROCEDURE = \"PROCEDURE\",\n SURVEY = \"SURVEY\",\n EXAM = \"EXAM\",\n THERAPY = \"THERAPY\",\n ACTIVITY = \"ACTIVITY\",\n HEIGHT_AND_WEIGHT = \"HEIGHT_AND_WEIGHT\",\n}\n\n\nexport enum ObservationPerformerType {\n TECH = \"TECH\",\n LAB = \"LAB\",\n REMOTE_TECH = \"REMOTE_TECH\",\n PATIENT_ENGAGEMENT_SPECIALIST = \"PATIENT_ENGAGEMENT_SPECIALIST\",\n PATIENT = \"PATIENT\",\n}\n\n\nexport enum ObservationInterpretationCode {\n CARRIER = \"CARRIER\",\n BETTER = \"BETTER\",\n SIGNIFICANT_CHANGE_DOWN = \"SIGNIFICANT_CHANGE_DOWN\",\n SIGNIFICANT_CHANGE_UP = \"SIGNIFICANT_CHANGE_UP\",\n WORSE = \"WORSE\",\n OFF_SCALE_LOW = \"OFF_SCALE_LOW\",\n OFF_SCALE_HIGH = \"OFF_SCALE_HIGH\",\n INSUFFICIENT_EVIDENCE = \"INSUFFICIENT_EVIDENCE\",\n ABNORMAL = \"ABNORMAL\",\n CRITICAL_ABNORMAL = \"CRITICAL_ABNORMAL\",\n CRITICAL_HIGH = \"CRITICAL_HIGH\",\n CRITICAL_LOW = \"CRITICAL_LOW\",\n HIGH = \"HIGH\",\n SIGNIFICANTLY_HIGH = \"SIGNIFICANTLY_HIGH\",\n LOW = \"LOW\",\n SIGNIFICANTLY_LOW = \"SIGNIFICANTLY_LOW\",\n NORMAL = \"NORMAL\",\n INTERMEDIATE = \"INTERMEDIATE\",\n MODERATELY_SUSCEPTIBLE = \"MODERATELY_SUSCEPTIBLE\",\n NO_CLSI_DEFINED_BREAKPOINT = \"NO_CLSI_DEFINED_BREAKPOINT\",\n NON_SUSCEPTIBLE = \"NON_SUSCEPTIBLE\",\n RESISTANT = \"RESISTANT\",\n SYNERGY_RESISTANT = \"SYNERGY_RESISTANT\",\n SUSCEPTIBLE = \"SUSCEPTIBLE\",\n SUSCEPTIBLE_DOSE_DEPENDENT = \"SUSCEPTIBLE_DOSE_DEPENDENT\",\n SYNERGY_SUSCEPTIBLE = \"SYNERGY_SUSCEPTIBLE\",\n VERY_SUSCEPTIBLE = \"VERY_SUSCEPTIBLE\",\n OUTSIDE_THRESHOLD = \"OUTSIDE_THRESHOLD\",\n ABOVE_HIGH_THRESHOLD = \"ABOVE_HIGH_THRESHOLD\",\n BELOW_LOW_THRESHOLD = \"BELOW_LOW_THRESHOLD\",\n HOLD_FOR_MEDICAL_REVIEW = \"HOLD_FOR_MEDICAL_REVIEW\",\n INDETERMINATE = \"INDETERMINATE\",\n EQUIVOCAL = \"EQUIVOCAL\",\n NEGATIVE = \"NEGATIVE\",\n NOT_DETECTED = \"NOT_DETECTED\",\n POSITIVE = \"POSITIVE\",\n DETECTED = \"DETECTED\",\n EXPECTED = \"EXPECTED\",\n UNEXPECTED = \"UNEXPECTED\",\n NON_REACTIVE = \"NON_REACTIVE\",\n REACTIVE = \"REACTIVE\",\n}\n\n\nexport enum ObservationSource {\n CHANGE_HEALTHCARE = \"CHANGE_HEALTHCARE\",\n MANUAL_DATA_IMPORT = \"MANUAL_DATA_IMPORT\",\n REMOTE_TECH_PAGE = \"REMOTE_TECH_PAGE\",\n REFERRAL_BOOKING_PAGE = \"REFERRAL_BOOKING_PAGE\",\n APPOINTMENT_BOOKING_PAGE = \"APPOINTMENT_BOOKING_PAGE\",\n}\n\n\nexport type OnboardingQuestionAnswerPair = {\n __typename: \"OnboardingQuestionAnswerPair\",\n key: string,\n question: string,\n answer: string,\n};\n\nexport type ModelPatientCampaignStateConnection = {\n __typename: \"ModelPatientCampaignStateConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type PatientCampaignState = {\n __typename: \"PatientCampaignState\",\n id: string,\n patientID: string,\n patient: Patient,\n name: PatientCampaignStateName,\n campaignName: CampaignName,\n eligibilityStart: string,\n eligibilityEnd: string,\n cohort?: number | null,\n contextJSON: string,\n enteredAt: number,\n partnerOrganization: PartnerOrganization,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport enum PatientCampaignStateName {\n ELIGIBLE = \"ELIGIBLE\",\n READY_FOR_OUTREACH = \"READY_FOR_OUTREACH\",\n READY_FOR_FIRST_PHONE_QUEUED = \"READY_FOR_FIRST_PHONE_QUEUED\",\n FIRST_EMAIL_SENT = \"FIRST_EMAIL_SENT\",\n FIRST_EMAIL_NOT_SENT = \"FIRST_EMAIL_NOT_SENT\",\n FIRST_SMS_SENT = \"FIRST_SMS_SENT\",\n FIRST_SMS_NOT_SENT = \"FIRST_SMS_NOT_SENT\",\n FIRST_PHONE_QUEUED = \"FIRST_PHONE_QUEUED\",\n FIRST_PHONE_CALLED = \"FIRST_PHONE_CALLED\",\n SECOND_PHONE_QUEUED = \"SECOND_PHONE_QUEUED\",\n SECOND_PHONE_CALLED = \"SECOND_PHONE_CALLED\",\n THIRD_PHONE_QUEUED = \"THIRD_PHONE_QUEUED\",\n THIRD_PHONE_CALLED = \"THIRD_PHONE_CALLED\",\n FOURTH_PHONE_QUEUED = \"FOURTH_PHONE_QUEUED\",\n FOURTH_PHONE_CALLED = \"FOURTH_PHONE_CALLED\",\n DELEGATED_TO_CUSTOMER_SUPPORT = \"DELEGATED_TO_CUSTOMER_SUPPORT\",\n STALE = \"STALE\",\n APPOINTMENT_BOOKED = \"APPOINTMENT_BOOKED\",\n COMPLETED_APPOINTMENT = \"COMPLETED_APPOINTMENT\",\n INELIGIBLE_FOR_TRICKLE = \"INELIGIBLE_FOR_TRICKLE\",\n DETERMINED_INELIGIBLE_AFTER_TRICKLE = \"DETERMINED_INELIGIBLE_AFTER_TRICKLE\",\n DECLINED_SERVICES = \"DECLINED_SERVICES\",\n CALLBACK_PHONE_SCHEDULED = \"CALLBACK_PHONE_SCHEDULED\",\n CALLBACK_PHONE_QUEUED = \"CALLBACK_PHONE_QUEUED\",\n CALLBACK_PHONE_CALLED = \"CALLBACK_PHONE_CALLED\",\n STALE_READY_FOR_FIRST_PHONE_QUEUED = \"STALE_READY_FOR_FIRST_PHONE_QUEUED\",\n STALE_READY_FOR_OUTREACH = \"STALE_READY_FOR_OUTREACH\",\n STALE_FIRST_EMAIL_SENT = \"STALE_FIRST_EMAIL_SENT\",\n STALE_FIRST_EMAIL_NOT_SENT = \"STALE_FIRST_EMAIL_NOT_SENT\",\n STALE_SECOND_EMAIL_SENT = \"STALE_SECOND_EMAIL_SENT\",\n STALE_SECOND_EMAIL_NOT_SENT = \"STALE_SECOND_EMAIL_NOT_SENT\",\n STALE_THIRD_EMAIL_SENT = \"STALE_THIRD_EMAIL_SENT\",\n STALE_THIRD_EMAIL_NOT_SENT = \"STALE_THIRD_EMAIL_NOT_SENT\",\n STALE_FIRST_SMS_SENT = \"STALE_FIRST_SMS_SENT\",\n STALE_FIRST_SMS_NOT_SENT = \"STALE_FIRST_SMS_NOT_SENT\",\n STALE_FIRST_PHONE_QUEUED = \"STALE_FIRST_PHONE_QUEUED\",\n STALE_FIRST_PHONE_CALLED = \"STALE_FIRST_PHONE_CALLED\",\n STALE_SECOND_PHONE_QUEUED = \"STALE_SECOND_PHONE_QUEUED\",\n STALE_SECOND_PHONE_CALLED = \"STALE_SECOND_PHONE_CALLED\",\n STALE_THIRD_PHONE_QUEUED = \"STALE_THIRD_PHONE_QUEUED\",\n STALE_THIRD_PHONE_CALLED = \"STALE_THIRD_PHONE_CALLED\",\n STALE_FOURTH_PHONE_QUEUED = \"STALE_FOURTH_PHONE_QUEUED\",\n STALE_FOURTH_PHONE_CALLED = \"STALE_FOURTH_PHONE_CALLED\",\n STALE_2 = \"STALE_2\",\n STALE_2_READY_FOR_OUTREACH = \"STALE_2_READY_FOR_OUTREACH\",\n STALE_2_READY_FOR_FIRST_PHONE_QUEUED = \"STALE_2_READY_FOR_FIRST_PHONE_QUEUED\",\n STALE_2_FIRST_EMAIL_SENT = \"STALE_2_FIRST_EMAIL_SENT\",\n STALE_2_FIRST_EMAIL_NOT_SENT = \"STALE_2_FIRST_EMAIL_NOT_SENT\",\n STALE_2_FIRST_SMS_SENT = \"STALE_2_FIRST_SMS_SENT\",\n STALE_2_FIRST_SMS_NOT_SENT = \"STALE_2_FIRST_SMS_NOT_SENT\",\n STALE_2_FIRST_PHONE_QUEUED = \"STALE_2_FIRST_PHONE_QUEUED\",\n STALE_2_FIRST_PHONE_CALLED = \"STALE_2_FIRST_PHONE_CALLED\",\n STALE_2_SECOND_PHONE_QUEUED = \"STALE_2_SECOND_PHONE_QUEUED\",\n STALE_2_SECOND_PHONE_CALLED = \"STALE_2_SECOND_PHONE_CALLED\",\n STALE_2_THIRD_PHONE_QUEUED = \"STALE_2_THIRD_PHONE_QUEUED\",\n STALE_2_THIRD_PHONE_CALLED = \"STALE_2_THIRD_PHONE_CALLED\",\n STALE_2_FOURTH_PHONE_QUEUED = \"STALE_2_FOURTH_PHONE_QUEUED\",\n STALE_2_FOURTH_PHONE_CALLED = \"STALE_2_FOURTH_PHONE_CALLED\",\n STALE_3 = \"STALE_3\",\n STALE_3_READY_FOR_OUTREACH = \"STALE_3_READY_FOR_OUTREACH\",\n STALE_3_READY_FOR_FIRST_PHONE_QUEUED = \"STALE_3_READY_FOR_FIRST_PHONE_QUEUED\",\n STALE_3_FIRST_PHONE_QUEUED = \"STALE_3_FIRST_PHONE_QUEUED\",\n STALE_3_FIRST_PHONE_CALLED = \"STALE_3_FIRST_PHONE_CALLED\",\n STALE_3_SECOND_PHONE_QUEUED = \"STALE_3_SECOND_PHONE_QUEUED\",\n STALE_3_SECOND_PHONE_CALLED = \"STALE_3_SECOND_PHONE_CALLED\",\n STALE_3_THIRD_PHONE_QUEUED = \"STALE_3_THIRD_PHONE_QUEUED\",\n STALE_3_THIRD_PHONE_CALLED = \"STALE_3_THIRD_PHONE_CALLED\",\n STALE_3_FOURTH_PHONE_QUEUED = \"STALE_3_FOURTH_PHONE_QUEUED\",\n STALE_3_FOURTH_PHONE_CALLED = \"STALE_3_FOURTH_PHONE_CALLED\",\n STALE_4 = \"STALE_4\",\n STALE_4_READY_FOR_OUTREACH = \"STALE_4_READY_FOR_OUTREACH\",\n STALE_4_READY_FOR_FIRST_PHONE_QUEUED = \"STALE_4_READY_FOR_FIRST_PHONE_QUEUED\",\n STALE_4_FIRST_PHONE_QUEUED = \"STALE_4_FIRST_PHONE_QUEUED\",\n STALE_4_FIRST_PHONE_CALLED = \"STALE_4_FIRST_PHONE_CALLED\",\n STALE_4_SECOND_PHONE_QUEUED = \"STALE_4_SECOND_PHONE_QUEUED\",\n STALE_4_SECOND_PHONE_CALLED = \"STALE_4_SECOND_PHONE_CALLED\",\n STALE_4_THIRD_PHONE_QUEUED = \"STALE_4_THIRD_PHONE_QUEUED\",\n STALE_4_THIRD_PHONE_CALLED = \"STALE_4_THIRD_PHONE_CALLED\",\n STALE_4_FOURTH_PHONE_QUEUED = \"STALE_4_FOURTH_PHONE_QUEUED\",\n STALE_4_FOURTH_PHONE_CALLED = \"STALE_4_FOURTH_PHONE_CALLED\",\n STALE_5 = \"STALE_5\",\n STALE_5_READY_FOR_OUTREACH = \"STALE_5_READY_FOR_OUTREACH\",\n STALE_5_READY_FOR_FIRST_PHONE_QUEUED = \"STALE_5_READY_FOR_FIRST_PHONE_QUEUED\",\n STALE_5_FIRST_PHONE_QUEUED = \"STALE_5_FIRST_PHONE_QUEUED\",\n STALE_5_FIRST_PHONE_CALLED = \"STALE_5_FIRST_PHONE_CALLED\",\n STALE_5_SECOND_PHONE_QUEUED = \"STALE_5_SECOND_PHONE_QUEUED\",\n STALE_5_SECOND_PHONE_CALLED = \"STALE_5_SECOND_PHONE_CALLED\",\n STALE_5_THIRD_PHONE_QUEUED = \"STALE_5_THIRD_PHONE_QUEUED\",\n STALE_5_THIRD_PHONE_CALLED = \"STALE_5_THIRD_PHONE_CALLED\",\n STALE_5_FOURTH_PHONE_QUEUED = \"STALE_5_FOURTH_PHONE_QUEUED\",\n STALE_5_FOURTH_PHONE_CALLED = \"STALE_5_FOURTH_PHONE_CALLED\",\n STALE_6 = \"STALE_6\",\n STALE_6_READY_FOR_OUTREACH = \"STALE_6_READY_FOR_OUTREACH\",\n STALE_6_READY_FOR_FIRST_PHONE_QUEUED = \"STALE_6_READY_FOR_FIRST_PHONE_QUEUED\",\n STALE_6_FIRST_PHONE_QUEUED = \"STALE_6_FIRST_PHONE_QUEUED\",\n STALE_6_FIRST_PHONE_CALLED = \"STALE_6_FIRST_PHONE_CALLED\",\n STALE_6_SECOND_PHONE_QUEUED = \"STALE_6_SECOND_PHONE_QUEUED\",\n STALE_6_SECOND_PHONE_CALLED = \"STALE_6_SECOND_PHONE_CALLED\",\n STALE_6_THIRD_PHONE_QUEUED = \"STALE_6_THIRD_PHONE_QUEUED\",\n STALE_6_THIRD_PHONE_CALLED = \"STALE_6_THIRD_PHONE_CALLED\",\n STALE_6_FOURTH_PHONE_QUEUED = \"STALE_6_FOURTH_PHONE_QUEUED\",\n STALE_6_FOURTH_PHONE_CALLED = \"STALE_6_FOURTH_PHONE_CALLED\",\n STALE_7 = \"STALE_7\",\n STALE_7_READY_FOR_OUTREACH = \"STALE_7_READY_FOR_OUTREACH\",\n STALE_7_READY_FOR_FIRST_PHONE_QUEUED = \"STALE_7_READY_FOR_FIRST_PHONE_QUEUED\",\n STALE_7_FIRST_PHONE_QUEUED = \"STALE_7_FIRST_PHONE_QUEUED\",\n STALE_7_FIRST_PHONE_CALLED = \"STALE_7_FIRST_PHONE_CALLED\",\n STALE_7_SECOND_PHONE_QUEUED = \"STALE_7_SECOND_PHONE_QUEUED\",\n STALE_7_SECOND_PHONE_CALLED = \"STALE_7_SECOND_PHONE_CALLED\",\n STALE_7_THIRD_PHONE_QUEUED = \"STALE_7_THIRD_PHONE_QUEUED\",\n STALE_7_THIRD_PHONE_CALLED = \"STALE_7_THIRD_PHONE_CALLED\",\n STALE_7_FOURTH_PHONE_QUEUED = \"STALE_7_FOURTH_PHONE_QUEUED\",\n STALE_7_FOURTH_PHONE_CALLED = \"STALE_7_FOURTH_PHONE_CALLED\",\n STALE_8 = \"STALE_8\",\n STALE_8_READY_FOR_OUTREACH = \"STALE_8_READY_FOR_OUTREACH\",\n STALE_8_READY_FOR_FIRST_PHONE_QUEUED = \"STALE_8_READY_FOR_FIRST_PHONE_QUEUED\",\n STALE_8_FIRST_PHONE_QUEUED = \"STALE_8_FIRST_PHONE_QUEUED\",\n STALE_8_FIRST_PHONE_CALLED = \"STALE_8_FIRST_PHONE_CALLED\",\n STALE_8_SECOND_PHONE_QUEUED = \"STALE_8_SECOND_PHONE_QUEUED\",\n STALE_8_SECOND_PHONE_CALLED = \"STALE_8_SECOND_PHONE_CALLED\",\n STALE_8_THIRD_PHONE_QUEUED = \"STALE_8_THIRD_PHONE_QUEUED\",\n STALE_8_THIRD_PHONE_CALLED = \"STALE_8_THIRD_PHONE_CALLED\",\n STALE_8_FOURTH_PHONE_QUEUED = \"STALE_8_FOURTH_PHONE_QUEUED\",\n STALE_8_FOURTH_PHONE_CALLED = \"STALE_8_FOURTH_PHONE_CALLED\",\n STALE_9 = \"STALE_9\",\n STALE_9_READY_FOR_OUTREACH = \"STALE_9_READY_FOR_OUTREACH\",\n STALE_9_READY_FOR_FIRST_PHONE_QUEUED = \"STALE_9_READY_FOR_FIRST_PHONE_QUEUED\",\n STALE_9_FIRST_PHONE_QUEUED = \"STALE_9_FIRST_PHONE_QUEUED\",\n STALE_9_FIRST_PHONE_CALLED = \"STALE_9_FIRST_PHONE_CALLED\",\n STALE_9_SECOND_PHONE_QUEUED = \"STALE_9_SECOND_PHONE_QUEUED\",\n STALE_9_SECOND_PHONE_CALLED = \"STALE_9_SECOND_PHONE_CALLED\",\n STALE_9_THIRD_PHONE_QUEUED = \"STALE_9_THIRD_PHONE_QUEUED\",\n STALE_9_THIRD_PHONE_CALLED = \"STALE_9_THIRD_PHONE_CALLED\",\n STALE_9_FOURTH_PHONE_QUEUED = \"STALE_9_FOURTH_PHONE_QUEUED\",\n STALE_9_FOURTH_PHONE_CALLED = \"STALE_9_FOURTH_PHONE_CALLED\",\n STALE_10 = \"STALE_10\",\n CAMPAIGN_TERMINATED = \"CAMPAIGN_TERMINATED\",\n PAUSED = \"PAUSED\",\n}\n\n\nexport enum CampaignName {\n OSCARCARE_VPC_FLORIDA_TELEPHONIC_ONLY_INITIAL_ENGAGEMENT_06_12_2023 = \"OSCARCARE_VPC_FLORIDA_TELEPHONIC_ONLY_INITIAL_ENGAGEMENT_06_12_2023\",\n OSCARCARE_VPC_FLORIDA_DIGITAL_ONLY_INITIAL_ENGAGEMENT_2023 = \"OSCARCARE_VPC_FLORIDA_DIGITAL_ONLY_INITIAL_ENGAGEMENT_2023\",\n ALIGNMENTSTARS_MEDICARE_CALIFORNIA_INITIAL_ENGAGEMENT_07_07_2023 = \"ALIGNMENTSTARS_MEDICARE_CALIFORNIA_INITIAL_ENGAGEMENT_07_07_2023\",\n OSCARHEALTH_IFP_CALIFORNIA_INITIAL_ENGAGEMENT_07_20_2023 = \"OSCARHEALTH_IFP_CALIFORNIA_INITIAL_ENGAGEMENT_07_20_2023\",\n OSCARHEALTH_MEDICARE_FLORIDA_DIGITAL_ONLY_INITIAL_ENGAGEMENT_07_27_2023 = \"OSCARHEALTH_MEDICARE_FLORIDA_DIGITAL_ONLY_INITIAL_ENGAGEMENT_07_27_2023\",\n OSCARHEALTH_MEDICARE_FLORIDA_DIGITAL_ONLY_EVENING_INITIAL_ENGAGEMENT_07_27_2023 = \"OSCARHEALTH_MEDICARE_FLORIDA_DIGITAL_ONLY_EVENING_INITIAL_ENGAGEMENT_07_27_2023\",\n MOLINA_UTAH_MEDICAID_INITIAL_ENGAGEMENT_2023 = \"MOLINA_UTAH_MEDICAID_INITIAL_ENGAGEMENT_2023\",\n MOLINA_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2023 = \"MOLINA_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2023\",\n MOLINA_MICHIGAN_MEDICAID_INITIAL_ENGAGEMENT_2023 = \"MOLINA_MICHIGAN_MEDICAID_INITIAL_ENGAGEMENT_2023\",\n WELLSENSE_NEWHAMPSHIRE_MEDICARE_INITIAL_ENGAGEMENT_2023 = \"WELLSENSE_NEWHAMPSHIRE_MEDICARE_INITIAL_ENGAGEMENT_2023\",\n MOLINA_UTAH_MEDICARE_INITIAL_ENGAGEMENT_2023 = \"MOLINA_UTAH_MEDICARE_INITIAL_ENGAGEMENT_2023\",\n WELLSENSE_MASSACHUSETTS_MEDICARE_INITIAL_ENGAGEMENT_2023 = \"WELLSENSE_MASSACHUSETTS_MEDICARE_INITIAL_ENGAGEMENT_2023\",\n WELLSENSE_NEWHAMPSHIRE_MEDICAID_INITIAL_ENGAGEMENT_2023 = \"WELLSENSE_NEWHAMPSHIRE_MEDICAID_INITIAL_ENGAGEMENT_2023\",\n MOLINA_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2023 = \"MOLINA_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2023\",\n MOLINA_CALIFORNIA_EXCHANGE_INITIAL_ENGAGEMENT_2023 = \"MOLINA_CALIFORNIA_EXCHANGE_INITIAL_ENGAGEMENT_2023\",\n MOLINA_MICHIGAN_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2023 = \"MOLINA_MICHIGAN_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2023\",\n WELLSENSE_NEWHAMPSHIRE_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2023 = \"WELLSENSE_NEWHAMPSHIRE_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2023\",\n UCIHEALTH_CALIFORNIA_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2023 = \"UCIHEALTH_CALIFORNIA_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2023\",\n UCIHEALTH_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2023 = \"UCIHEALTH_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2023\",\n MOLINA_FLORIDA_MEDICAID_INITIAL_ENGAGEMENT_2023 = \"MOLINA_FLORIDA_MEDICAID_INITIAL_ENGAGEMENT_2023\",\n ALIGNMENTSTARS_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"ALIGNMENTSTARS_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_CONNECTICUT_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_CONNECTICUT_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_FLORIDA_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_FLORIDA_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_GEORGIA_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_GEORGIA_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_INDIANA_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_INDIANA_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_KENTUCKY_MEDICAID_INITIAL_ENGAGEMENT_2024 = \"CENTENE_KENTUCKY_MEDICAID_INITIAL_ENGAGEMENT_2024\",\n CENTENE_KENTUCKY_MEDICAID_PEDIATRIC_INITIAL_ENGAGEMENT_2024 = \"CENTENE_KENTUCKY_MEDICAID_PEDIATRIC_INITIAL_ENGAGEMENT_2024\",\n CENTENE_KENTUCKY_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_KENTUCKY_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_MAINE_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_MAINE_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_MASSACHUSETTS_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_MASSACHUSETTS_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_MICHIGAN_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_MICHIGAN_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_MICHIGAN_MEDICAID_INITIAL_ENGAGEMENT_2024 = \"CENTENE_MICHIGAN_MEDICAID_INITIAL_ENGAGEMENT_2024\",\n CENTENE_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_NEWHAMPSHIRE_EXCHANGE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_NEWHAMPSHIRE_EXCHANGE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_NEWHAMPSHIRE_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_NEWHAMPSHIRE_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_OHIO_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_OHIO_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_OHIO_EXCHANGE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_OHIO_EXCHANGE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_OHIO_MEDICAID_INITIAL_ENGAGEMENT_2024 = \"CENTENE_OHIO_MEDICAID_INITIAL_ENGAGEMENT_2024\",\n CENTENE_OHIO_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_OHIO_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n CENTENE_TEXAS_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"CENTENE_TEXAS_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n ELEVANCEHEALTH_NATIONAL_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"ELEVANCEHEALTH_NATIONAL_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n HUMANA_NATIONAL_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"HUMANA_NATIONAL_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n HUMANA_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"HUMANA_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n HUMANA_NEWYORK_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"HUMANA_NEWYORK_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n MOLINA_CALIFORNIA_EXCHANGE_INITIAL_ENGAGEMENT_2024 = \"MOLINA_CALIFORNIA_EXCHANGE_INITIAL_ENGAGEMENT_2024\",\n MOLINA_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2024 = \"MOLINA_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2024\",\n MOLINA_CALIFORNIA_MEDICAID_PEDIATRIC_INITIAL_ENGAGEMENT_2024 = \"MOLINA_CALIFORNIA_MEDICAID_PEDIATRIC_INITIAL_ENGAGEMENT_2024\",\n MOLINA_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"MOLINA_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n MOLINA_FLORIDA_MEDICAID_INITIAL_ENGAGEMENT_2024 = \"MOLINA_FLORIDA_MEDICAID_INITIAL_ENGAGEMENT_2024\",\n MOLINA_FLORIDA_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2024 = \"MOLINA_FLORIDA_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2024\",\n MOLINA_MICHIGAN_MEDICAID_INITIAL_ENGAGEMENT_2024 = \"MOLINA_MICHIGAN_MEDICAID_INITIAL_ENGAGEMENT_2024\",\n MOLINA_MICHIGAN_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2024 = \"MOLINA_MICHIGAN_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2024\",\n MOLINA_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"MOLINA_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n MOLINA_UTAH_MEDICAID_INITIAL_ENGAGEMENT_2024 = \"MOLINA_UTAH_MEDICAID_INITIAL_ENGAGEMENT_2024\",\n MOLINA_UTAH_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"MOLINA_UTAH_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n OSCARCARE_FLORIDA_EXCHANGE_DIGITAL_ONLY_INITIAL_ENGAGEMENT_2024 = \"OSCARCARE_FLORIDA_EXCHANGE_DIGITAL_ONLY_INITIAL_ENGAGEMENT_2024\",\n OSCARCARE_NATIONAL_EXCHANGE_DIGITAL_ONLY_INITIAL_ENGAGEMENT_2024 = \"OSCARCARE_NATIONAL_EXCHANGE_DIGITAL_ONLY_INITIAL_ENGAGEMENT_2024\",\n TRAININGPARTNER_NATIONAL_MEDICARE_CAMPAIGN_INITIAL_ENGAGEMENT_2024 = \"TRAININGPARTNER_NATIONAL_MEDICARE_CAMPAIGN_INITIAL_ENGAGEMENT_2024\",\n UCIHEALTH_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2024 = \"UCIHEALTH_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2024\",\n UCIHEALTH_CALIFORNIA_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2024 = \"UCIHEALTH_CALIFORNIA_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2024\",\n UCLAHEALTH_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2024 = \"UCLAHEALTH_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2024\",\n UHC_MASSACHUSETTS_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2024 = \"UHC_MASSACHUSETTS_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2024\",\n ALIGNMENTSTARS_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"ALIGNMENTSTARS_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_CONNECTICUT_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_CONNECTICUT_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_FLORIDA_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_FLORIDA_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_GEORGIA_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_GEORGIA_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_INDIANA_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_INDIANA_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_KENTUCKY_MEDICAID_INITIAL_ENGAGEMENT_2025 = \"CENTENE_KENTUCKY_MEDICAID_INITIAL_ENGAGEMENT_2025\",\n CENTENE_KENTUCKY_MEDICAID_PEDIATRIC_INITIAL_ENGAGEMENT_2025 = \"CENTENE_KENTUCKY_MEDICAID_PEDIATRIC_INITIAL_ENGAGEMENT_2025\",\n CENTENE_KENTUCKY_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_KENTUCKY_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_MAINE_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_MAINE_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_MASSACHUSETTS_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_MASSACHUSETTS_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_MICHIGAN_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_MICHIGAN_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_MICHIGAN_MEDICAID_INITIAL_ENGAGEMENT_2025 = \"CENTENE_MICHIGAN_MEDICAID_INITIAL_ENGAGEMENT_2025\",\n CENTENE_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_NEWHAMPSHIRE_EXCHANGE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_NEWHAMPSHIRE_EXCHANGE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_NEWHAMPSHIRE_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_NEWHAMPSHIRE_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_OHIO_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_OHIO_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_OHIO_EXCHANGE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_OHIO_EXCHANGE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_OHIO_MEDICAID_INITIAL_ENGAGEMENT_2025 = \"CENTENE_OHIO_MEDICAID_INITIAL_ENGAGEMENT_2025\",\n CENTENE_OHIO_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_OHIO_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTENE_TEXAS_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"CENTENE_TEXAS_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n ELEVANCEHEALTH_NATIONAL_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"ELEVANCEHEALTH_NATIONAL_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n HUMANA_NATIONAL_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"HUMANA_NATIONAL_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n HUMANA_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"HUMANA_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n HUMANA_NEWYORK_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"HUMANA_NEWYORK_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n MOLINA_CALIFORNIA_EXCHANGE_INITIAL_ENGAGEMENT_2025 = \"MOLINA_CALIFORNIA_EXCHANGE_INITIAL_ENGAGEMENT_2025\",\n MOLINA_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2025 = \"MOLINA_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2025\",\n MOLINA_CALIFORNIA_MEDICAID_PEDIATRIC_INITIAL_ENGAGEMENT_2025 = \"MOLINA_CALIFORNIA_MEDICAID_PEDIATRIC_INITIAL_ENGAGEMENT_2025\",\n MOLINA_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"MOLINA_CALIFORNIA_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n MOLINA_FLORIDA_MEDICAID_INITIAL_ENGAGEMENT_2025 = \"MOLINA_FLORIDA_MEDICAID_INITIAL_ENGAGEMENT_2025\",\n MOLINA_FLORIDA_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2025 = \"MOLINA_FLORIDA_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2025\",\n MOLINA_MICHIGAN_MEDICAID_INITIAL_ENGAGEMENT_2025 = \"MOLINA_MICHIGAN_MEDICAID_INITIAL_ENGAGEMENT_2025\",\n MOLINA_MICHIGAN_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2025 = \"MOLINA_MICHIGAN_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2025\",\n MOLINA_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"MOLINA_MICHIGAN_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n MOLINA_UTAH_MEDICAID_INITIAL_ENGAGEMENT_2025 = \"MOLINA_UTAH_MEDICAID_INITIAL_ENGAGEMENT_2025\",\n MOLINA_UTAH_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"MOLINA_UTAH_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n OSCARCARE_FLORIDA_EXCHANGE_DIGITAL_ONLY_INITIAL_ENGAGEMENT_2025 = \"OSCARCARE_FLORIDA_EXCHANGE_DIGITAL_ONLY_INITIAL_ENGAGEMENT_2025\",\n OSCARCARE_NATIONAL_EXCHANGE_DIGITAL_ONLY_INITIAL_ENGAGEMENT_2025 = \"OSCARCARE_NATIONAL_EXCHANGE_DIGITAL_ONLY_INITIAL_ENGAGEMENT_2025\",\n TRAININGPARTNER_NATIONAL_MEDICARE_CAMPAIGN_INITIAL_ENGAGEMENT_2025 = \"TRAININGPARTNER_NATIONAL_MEDICARE_CAMPAIGN_INITIAL_ENGAGEMENT_2025\",\n UCIHEALTH_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2025 = \"UCIHEALTH_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2025\",\n UCIHEALTH_CALIFORNIA_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2025 = \"UCIHEALTH_CALIFORNIA_MEDICAID_LEAD_SCREENING_INITIAL_ENGAGEMENT_2025\",\n UCLAHEALTH_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2025 = \"UCLAHEALTH_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2025\",\n UHC_MASSACHUSETTS_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2025 = \"UHC_MASSACHUSETTS_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2025\",\n CENTRALCALIFORNIAALLIANCEFORHEALTH_CALIFORNIA_MEDICAID_ADULT_INITIAL_ENGAGEMENT_2025 = \"CENTRALCALIFORNIAALLIANCEFORHEALTH_CALIFORNIA_MEDICAID_ADULT_INITIAL_ENGAGEMENT_2025\",\n CENTRALCALIFORNIAALLIANCEFORHEALTH_CALIFORNIA_MEDICAID_PEDIATRIC_INITIAL_ENGAGEMENT_2025 = \"CENTRALCALIFORNIAALLIANCEFORHEALTH_CALIFORNIA_MEDICAID_PEDIATRIC_INITIAL_ENGAGEMENT_2025\",\n UCSDHEALTH_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2025 = \"UCSDHEALTH_CALIFORNIA_MEDICAID_INITIAL_ENGAGEMENT_2025\",\n}\n\n\nexport enum ReasonForTransitionToTerminalState {\n ALREADY_COMPLETED_SERVICES_OUTSIDE = \"ALREADY_COMPLETED_SERVICES_OUTSIDE\",\n ALREADY_COMPLETED_SERVICES_WITH_SPRINTER = \"ALREADY_COMPLETED_SERVICES_WITH_SPRINTER\",\n INCORRECT_CONTACT_INFORMATION = \"INCORRECT_CONTACT_INFORMATION\",\n NOT_ASSOCIATED_WITH_PROVIDER_OR_PAYER = \"NOT_ASSOCIATED_WITH_PROVIDER_OR_PAYER\",\n LINE_DISCONNECTED = \"LINE_DISCONNECTED\",\n OUTSIDE_SERVICE_REGION = \"OUTSIDE_SERVICE_REGION\",\n OUTSIDE_APPOINTMENT_AVAILABILITY = \"OUTSIDE_APPOINTMENT_AVAILABILITY\",\n FAILED_CONTRAINDICATIONS = \"FAILED_CONTRAINDICATIONS\",\n DECEASED = \"DECEASED\",\n AGED_OUT = \"AGED_OUT\",\n WATCHLISTED = \"WATCHLISTED\",\n DECLINED_TO_SHARE_REASON = \"DECLINED_TO_SHARE_REASON\",\n PREFER_TO_BE_SEEN_IN_CLINIC_BY_PROVIDER = \"PREFER_TO_BE_SEEN_IN_CLINIC_BY_PROVIDER\",\n UNCOMFORTABLE_WITH_IN_HOME_VISIT = \"UNCOMFORTABLE_WITH_IN_HOME_VISIT\",\n DECLINED_TO_VERIFY_IDENTITY = \"DECLINED_TO_VERIFY_IDENTITY\",\n NOT_INTERESTED = \"NOT_INTERESTED\",\n NEEDS_WEEKEND_OR_AFTER_HOURS_APPT = \"NEEDS_WEEKEND_OR_AFTER_HOURS_APPT\",\n REQUESTED_DO_NOT_CALL = \"REQUESTED_DO_NOT_CALL\",\n INVALID_PATIENT_PHONE_PROVIDED = \"INVALID_PATIENT_PHONE_PROVIDED\",\n INVALID_PATIENT_LOCATION_PROVIDED = \"INVALID_PATIENT_LOCATION_PROVIDED\",\n APPOINTMENT_BOOKED_BEFORE_TRICKLE = \"APPOINTMENT_BOOKED_BEFORE_TRICKLE\",\n APPOINTMENT_BOOKED_BEFORE_FIRST_OUTREACH_ATTEMPT = \"APPOINTMENT_BOOKED_BEFORE_FIRST_OUTREACH_ATTEMPT\",\n EXPIRED_REFERRAL = \"EXPIRED_REFERRAL\",\n}\n\n\nexport type Practitioner = {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n name?: HumanName | null,\n practitionerGroupName?: string | null,\n address?: Address | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport enum FaxConfirmationStatus {\n CONFIRMED = \"CONFIRMED\",\n PENDING = \"PENDING\",\n UNATTEMPTED = \"UNATTEMPTED\",\n INCORRECT = \"INCORRECT\",\n}\n\n\nexport enum DirectTrustConfirmationStatus {\n CONFIRMED_PRESENT = \"CONFIRMED_PRESENT\",\n CONFIRMED_NOT_PRESENT = \"CONFIRMED_NOT_PRESENT\",\n UNCONFIRMED = \"UNCONFIRMED\",\n}\n\n\nexport enum PractitionerRole {\n PEDIATRICIAN = \"PEDIATRICIAN\",\n}\n\n\nexport enum PatientPopulation {\n MEDICAID = \"MEDICAID\",\n MEDICARE = \"MEDICARE\",\n EXCHANGE = \"EXCHANGE\",\n COMMERCIAL = \"COMMERCIAL\",\n DUAL_MEDICAID_MEDICARE = \"DUAL_MEDICAID_MEDICARE\",\n}\n\n\nexport type ConsentForm = {\n __typename: \"ConsentForm\",\n consentedAt: string,\n type: ConsentType,\n document?: Document | null,\n platform: QuestionnairePlatform,\n formID: string,\n responseID: string,\n appointmentID: string,\n rawResponseJSON: string,\n};\n\nexport enum ConsentType {\n INFORMED_CONSENT = \"INFORMED_CONSENT\",\n PRIVACY_CONSENT = \"PRIVACY_CONSENT\",\n}\n\n\nexport enum QuestionnairePlatform {\n QUALTRICS = \"QUALTRICS\",\n JOTFORM = \"JOTFORM\",\n}\n\n\nexport type ModelPatientContactPointConnection = {\n __typename: \"ModelPatientContactPointConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type PatientContactPoint = {\n __typename: \"PatientContactPoint\",\n id: string,\n patientID: string,\n patient: Patient,\n system: ContactPointSystem,\n value: string,\n status: ContactPointStatus,\n statusLastUpdatedAt?: string | null,\n sources?: Array | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport enum ContactPointSystem {\n PHONE = \"PHONE\",\n FAX = \"FAX\",\n EMAIL = \"EMAIL\",\n PAGER = \"PAGER\",\n URL = \"URL\",\n SMS = \"SMS\", // SMS should only be used for short codes. Mobile phone numbers should be used with the PHONE system.\n OTHER = \"OTHER\",\n}\n\n\nexport enum ContactPointStatus {\n CONFIRMED = \"CONFIRMED\",\n PENDING = \"PENDING\", // Attempted but not confirmed\n UNATTEMPTED = \"UNATTEMPTED\", // Contact has not been attempted\n INCORRECT = \"INCORRECT\", // Attempted and explicitly determined to be incorrect\n}\n\n\nexport type PatientContactPointSource = {\n __typename: \"PatientContactPointSource\",\n source: ContactPointSource,\n // Specifies a preferred order in which to use a set of contacts. ContactPoints with lower rank values are more preferred than those with higher rank values.\n rank?: number | null,\n system: ContactPointSystem,\n // The date and time the source reports the contact point as last being utilized. For example in the LexisNexis report they include the last time they saw the contact point in their data. This differs from the last time they reported it to _us_.\n reportedAsLastSeenAt?: string | null,\n // The date and time the source first reported this contact point associated to the patient\n firstReportedAt?: string | null,\n // The date and time the source last reported this contact point associated to the patient\n lastReportedAt?: string | null,\n metadataJSON?: string | null,\n};\n\nexport enum ContactPointSource {\n REFERRALS_FLOW = \"REFERRALS_FLOW\",\n PARTNER_PORTAL = \"PARTNER_PORTAL\",\n PARTNER_GAP_LIST = \"PARTNER_GAP_LIST\",\n LEXIS_NEXIS = \"LEXIS_NEXIS\",\n DIRECT_TO_CONSUMER_FLOW = \"DIRECT_TO_CONSUMER_FLOW\",\n UNKNOWN_LEGACY = \"UNKNOWN_LEGACY\",\n // Patients provided on suplemental lists from partners which can be called but should not receive voicemails.\n // For Elevance these patients are patients which have previously been opted out of calls from other healthcare providers (but we are still able to call)\n PARTNER_NO_VOICEMAIL_LIST = \"PARTNER_NO_VOICEMAIL_LIST\",\n}\n\n\nexport type Tech = {\n __typename: \"Tech\",\n id: string,\n name: HumanName,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n vehicle?: Vehicle | null,\n serviceTypes?: Array< ServiceType | null > | null,\n serviceTypesAvailabilityRules?: Array | null,\n availabilityRules?: Array | null,\n locations?: Array | null,\n profilePicture?: S3Object | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n serviceRegions?: ModelTechServiceRegionConnection | null,\n appointments?: ModelAppointmentConnection | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n childDocumentURL?: ChildDocumentURLResponse | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type Vehicle = {\n __typename: \"Vehicle\",\n make: string,\n model: string,\n color: string,\n};\n\nexport type ServiceTypeAvailabilityRules = {\n __typename: \"ServiceTypeAvailabilityRules\",\n serviceType: ServiceType,\n availabilityRules: Array,\n};\n\nexport type ModelTechServiceRegionConnection = {\n __typename: \"ModelTechServiceRegionConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type TechServiceRegion = {\n __typename: \"TechServiceRegion\",\n id: string,\n techID: string,\n serviceRegionName: string,\n tech: Tech,\n availabilityRules?: Array | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport enum TechCapability {\n PEDIATRIC_VENOUS_BLOOD_DRAW = \"PEDIATRIC_VENOUS_BLOOD_DRAW\",\n}\n\n\nexport type COVID19Questions = {\n __typename: \"COVID19Questions\",\n isForTravel?: boolean | null,\n isForWorkOrSchool?: boolean | null,\n isForAPublicEvent?: boolean | null,\n isForPotentialExposure?: boolean | null,\n isForSymptoms?: boolean | null,\n isForOtherReasons?: boolean | null,\n};\n\nexport type ServiceOutcome = {\n __typename: \"ServiceOutcome\",\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromSchedulerAboutServiceFailure?: string | null,\n serviceDetailJSON?: string | null,\n};\n\nexport type CustomProperty = {\n __typename: \"CustomProperty\",\n key: CustomPropertyKey,\n value: string,\n};\n\nexport enum CustomPropertyKey {\n FMI_CASE_NUMBER = \"FMI_CASE_NUMBER\",\n GUARDANT_ACCESSION_NUMBER = \"GUARDANT_ACCESSION_NUMBER\",\n NATERA_JOB_NAME = \"NATERA_JOB_NAME\",\n}\n\n\nexport type Procedure = {\n __typename: \"Procedure\",\n code: Coding,\n source: ProcedureSource,\n};\n\nexport enum ProcedureSource {\n ELATION_BILLING_REPORT = \"ELATION_BILLING_REPORT\",\n CHECKLIST = \"CHECKLIST\",\n POST_REVIEW = \"POST_REVIEW\",\n MIGRATION = \"MIGRATION\",\n}\n\n\nexport type Escalation = {\n __typename: \"Escalation\",\n isResolved?: boolean | null,\n symptoms?: Array< EscalationSymptom > | null,\n // If OTHER is selected in the symptoms this contains the list of other symptoms.\n otherSymptoms?: string | null,\n // Comments from the patient to the escalation owner, like their medical history. The escalation owner is the scheduler who is filling out the report.\n commentsFromPatientToEscalationOwner?: string | null,\n // Comments from the escalation owner to the partner about the escalation. This includes the general assessment of the situation involving the patient. The escalation owner is the scheduler who is filling out the report.\n commentsFromEscalationOwnerToPartnerAboutEscalation?: string | null,\n outcome?: EscalationOutcome | null,\n // If OTHER is selected for the outcome this contains a description of the outcome.\n otherOutcome?: string | null,\n outcomeTimeframe?: EscalationOutcomeTimeframe | null,\n outcomeApproverName?: HumanName | null,\n triggeringObservation?: Observation | null,\n createdAt?: string | null,\n resolvedAt?: string | null,\n};\n\nexport enum EscalationSymptom {\n DIFFICULTY_BREATHING_OR_SHORTNESS_OF_BREATH = \"DIFFICULTY_BREATHING_OR_SHORTNESS_OF_BREATH\",\n CHEST_SHOULDER_OR_JAW_PAIN = \"CHEST_SHOULDER_OR_JAW_PAIN\",\n HEADACHE = \"HEADACHE\",\n DIZZINESS = \"DIZZINESS\",\n BLURRED_VISION = \"BLURRED_VISION\",\n NUMBNESS_OR_TINGLING_IN_HANDS_OR_FEET = \"NUMBNESS_OR_TINGLING_IN_HANDS_OR_FEET\",\n NOSEBLEED = \"NOSEBLEED\",\n DROWSINESS = \"DROWSINESS\",\n CONFUSION = \"CONFUSION\",\n SUDDEN_WEAKNESS = \"SUDDEN_WEAKNESS\",\n FAINTING = \"FAINTING\",\n ABDOMINAL_PAIN = \"ABDOMINAL_PAIN\",\n RECENT_INJURY_OR_FALL = \"RECENT_INJURY_OR_FALL\",\n NO_SYMPTOMS = \"NO_SYMPTOMS\",\n OTHER = \"OTHER\",\n}\n\n\nexport enum EscalationOutcome {\n REFERRED_TO_URGENT_CARE = \"REFERRED_TO_URGENT_CARE\",\n REFERRED_TO_PCP_OR_SPECIALIST = \"REFERRED_TO_PCP_OR_SPECIALIST\",\n RECOMMENDED_EMERGENCY_DEPARTMENT_WITH_ACCOMPANIED_RIDE = \"RECOMMENDED_EMERGENCY_DEPARTMENT_WITH_ACCOMPANIED_RIDE\",\n SENT_TO_EMERGENCY_DEPARTMENT_WITH_EMS = \"SENT_TO_EMERGENCY_DEPARTMENT_WITH_EMS\",\n RECOMMENDED_EMERGENCY_DEPARTMENT_BUT_THEY_REFUSED = \"RECOMMENDED_EMERGENCY_DEPARTMENT_BUT_THEY_REFUSED\",\n CLOSED_AFTER_ACCIDENTAL_TRIGGERING = \"CLOSED_AFTER_ACCIDENTAL_TRIGGERING\",\n HANDED_OFF_TO_PARTNER = \"HANDED_OFF_TO_PARTNER\", // The patient was given a warm handoff to the partner's nurse line or escalation resource.\n OTHER = \"OTHER\",\n}\n\n\nexport enum EscalationOutcomeTimeframe {\n IMMEDIATELY = \"IMMEDIATELY\",\n WITHIN_1_HOUR = \"WITHIN_1_HOUR\",\n WITHIN_24_HOURS = \"WITHIN_24_HOURS\",\n WITHIN_1_WEEK = \"WITHIN_1_WEEK\",\n}\n\n\nexport type QuestionnaireEmbedded = {\n __typename: \"QuestionnaireEmbedded\",\n type: QuestionnaireType,\n url: string,\n response?: QuestionnaireResponse | null,\n metadataJSON?: string | null,\n};\n\n// Should be added to survey Platform callback to be able to identify the way of parsing response\nexport enum QuestionnaireType {\n PRAPARE_SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE = \"PRAPARE_SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE\",\n PATIENT_INFORMED_CONSENT = \"PATIENT_INFORMED_CONSENT\",\n PATIENT_PRIVACY_CONSENT = \"PATIENT_PRIVACY_CONSENT\",\n}\n\n\nexport type QuestionnaireResponse = {\n __typename: \"QuestionnaireResponse\",\n // Canonical id of Questionnaire being answered\n responseID?: string | null,\n // Date the answers were gathered\n authoredAt?: string | null,\n items?: Array | null,\n};\n\nexport type QuestionnaireResponseItem = {\n __typename: \"QuestionnaireResponseItem\",\n // Pointer to specific question from Questionnaire e.g. LOINC code\n // (used in survey platform callback to identify question)\n externalID: string,\n // A reference to an ElementDefinition that provides the details for the item e. g. https://loinc.org/56051-6\n definition?: string | null,\n text: string,\n answers?: Array | null,\n items?: Array | null,\n};\n\nexport type QuestionnaireResponseItemAnswer = {\n __typename: \"QuestionnaireResponseItemAnswer\",\n value?: string | null,\n valueCoding?: Coding | null,\n};\n\nexport type DuplicateChildDocumentResponse = {\n __typename: \"DuplicateChildDocumentResponse\",\n s3ObjectIDs?: Array< string > | null,\n s3Objects?: Array | null,\n};\n\nexport type AutomatedPostReviewResults = {\n __typename: \"AutomatedPostReviewResults\",\n flags: Array,\n timestamp: number,\n};\n\nexport type PostReviewFlag = {\n __typename: \"PostReviewFlag\",\n severityLevel: PostReviewFlagSeverityLevel,\n displayMessage: string,\n flagType: string,\n checklistItemName?: string | null,\n checklistFieldName?: string | null,\n encounterID?: string | null,\n};\n\nexport type UpdateAppointmentInput = {\n id: string,\n status?: AppointmentStatus | null,\n isFailed?: boolean | null,\n hasSuccessfulServices?: boolean | null,\n hasFailedServices?: boolean | null,\n needsRebooking?: boolean | null,\n isPreReviewed?: boolean | null,\n isPostReviewed?: boolean | null,\n isEscalated?: boolean | null,\n start?: string | null,\n end?: string | null,\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID?: string | null,\n location?: LocationInput | null,\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: ChecklistInput | null,\n checklist?: ChecklistInput | null,\n postReviewChecklist?: ChecklistInput | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone?: string | null,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n commentsFromCoordinatorAboutAppointment?: string | null,\n commentsFromTechAboutAppointment?: string | null,\n commentsFromTechAboutSystem?: string | null,\n commentsFromTechAboutAppointmentFailure?: string | null,\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n sharedSlotRank?: number | null,\n estimatedServiceDurationSeconds?: number | null,\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n stripePaymentIntentIDs?: Array< string | null > | null,\n hasPatientConfirmed?: boolean | null,\n isGuestBooked?: boolean | null,\n referralID?: string | null,\n historyJSON?: string | null,\n externalID?: string | null,\n clonedFromAppointmentID?: string | null,\n remoteTechQualificationTypeRequired?: QualificationType | null,\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n visitType?: VisitType | null,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n automatedPostReviewResults?: Array< AutomatedPostReviewResultsInput > | null,\n};\n\nexport type DeleteAppointmentInput = {\n id: string,\n};\n\nexport type CreateEncounterInput = {\n id?: string | null,\n appointmentID: string,\n patientID: string,\n coordinatorID: string,\n techID?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitions?: Array< RequisitionInput > | null,\n requisitionUploads?: Array< S3ObjectInput > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n commentsFromCoordinatorAboutPatient?: string | null,\n commentsFromSchedulerAboutEncounter?: string | null,\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n commentsFromTechAboutEncounter?: string | null,\n commentsFromCustomerSupportAboutEncounter?: string | null,\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n covid19Questions?: COVID19QuestionsInput | null,\n bloodCollectionDetails?: SpecimenCollectionDetailsInput | null,\n capillaryDrawCollectionDetails?: SpecimenCollectionDetailsInput | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n serviceOutcomes?: Array< ServiceOutcomeInput > | null,\n diagnosisCodes?: Array< CodingInput > | null,\n partnersEncounterID?: CustomPropertyInput | null,\n documents?: Array< DocumentInput > | null,\n observations?: Array< ObservationInput > | null,\n procedures?: Array< ProcedureInput > | null,\n escalation?: EscalationInput | null,\n questionnaires?: Array< QuestionnaireEmbeddedInput > | null,\n colorectalCancerScreeningAnswers?: QuestionnaireResponseInput | null,\n patientEncounterSummaryLastSentAt?: string | null,\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n hasPatientRequestedMailedResults?: boolean | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n duplicateChildDocuments?: DuplicateChildDocumentResponseInput | null,\n};\n\nexport type RequisitionInput = {\n id: string,\n labOrganization?: LabOrganization | null,\n serviceRequests?: Array< ServiceRequestInput > | null,\n // A unique numerical patient requisition number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n requisitionNumber?: string | null,\n};\n\nexport type ServiceRequestInput = {\n id: string,\n isNewServiceRequestEntry?: boolean | null,\n displayName?: string | null,\n externalID: string,\n};\n\nexport type COVID19QuestionsInput = {\n isForTravel?: boolean | null,\n isForWorkOrSchool?: boolean | null,\n isForAPublicEvent?: boolean | null,\n isForPotentialExposure?: boolean | null,\n isForSymptoms?: boolean | null,\n isForOtherReasons?: boolean | null,\n};\n\nexport type SpecimenCollectionDetailsInput = {\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n};\n\nexport type ServiceOutcomeInput = {\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromSchedulerAboutServiceFailure?: string | null,\n serviceDetailJSON?: string | null,\n};\n\nexport type CodingInput = {\n system: string,\n code: string,\n displayName?: string | null,\n};\n\nexport type CustomPropertyInput = {\n key: CustomPropertyKey,\n value: string,\n};\n\nexport type DocumentInput = {\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3Object?: S3ObjectInput | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n};\n\nexport type ObservationInput = {\n id: string,\n identifiers?: Array< ObservationIdentifierInput > | null,\n basedOnServiceRequestType?: ObservationPartialServiceRequestTypeInput | null,\n value?: string | null,\n valueCoding?: Array< CodingInput > | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n notes?: string | null,\n source?: ObservationSource | null,\n};\n\nexport type ObservationIdentifierInput = {\n system: ObservationIdentifierSystem,\n code: string,\n displayName?: string | null,\n};\n\nexport type ObservationPartialServiceRequestTypeInput = {\n id?: string | null,\n externalID: string,\n labOrganization: LabOrganization,\n};\n\nexport type ProcedureInput = {\n code: CodingInput,\n source: ProcedureSource,\n};\n\nexport type EscalationInput = {\n isResolved?: boolean | null,\n symptoms?: Array< EscalationSymptom > | null,\n otherSymptoms?: string | null,\n commentsFromPatientToEscalationOwner?: string | null,\n commentsFromEscalationOwnerToPartnerAboutEscalation?: string | null,\n outcome?: EscalationOutcome | null,\n otherOutcome?: string | null,\n outcomeTimeframe?: EscalationOutcomeTimeframe | null,\n outcomeApproverName?: HumanNameInput | null,\n triggeringObservation?: ObservationInput | null,\n createdAt?: string | null,\n resolvedAt?: string | null,\n};\n\nexport type HumanNameInput = {\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n};\n\nexport type QuestionnaireEmbeddedInput = {\n type: QuestionnaireType,\n url: string,\n response?: QuestionnaireResponseInput | null,\n metadataJSON?: string | null,\n};\n\nexport type QuestionnaireResponseInput = {\n responseID?: string | null,\n authoredAt?: string | null,\n items?: Array< QuestionnaireResponseItemInput > | null,\n};\n\nexport type QuestionnaireResponseItemInput = {\n externalID: string,\n definition?: string | null,\n text: string,\n answers?: Array< QuestionnaireResponseItemAnswerInput > | null,\n items?: Array< QuestionnaireResponseItemInput > | null,\n};\n\nexport type QuestionnaireResponseItemAnswerInput = {\n value?: string | null,\n valueCoding?: CodingInput | null,\n};\n\nexport type DuplicateChildDocumentResponseInput = {\n s3ObjectIDs?: Array< string > | null,\n s3Objects?: Array< S3ObjectInput > | null,\n};\n\nexport type ModelEncounterConditionInput = {\n appointmentID?: ModelIDInput | null,\n patientID?: ModelIDInput | null,\n coordinatorID?: ModelIDInput | null,\n techID?: ModelIDInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n requisitionUploadS3ObjectIDs?: ModelIDInput | null,\n commentsFromCoordinatorAboutPatient?: ModelStringInput | null,\n commentsFromSchedulerAboutEncounter?: ModelStringInput | null,\n commentsFromSchedulerToTechAboutEncounter?: ModelStringInput | null,\n commentsFromTechAboutEncounter?: ModelStringInput | null,\n commentsFromCustomerSupportAboutEncounter?: ModelStringInput | null,\n commentsFromSchedulerToPartnerAboutEncounter?: ModelStringInput | null,\n productTypes?: ModelProductTypeListInput | null,\n isMedicare?: ModelBooleanInput | null,\n isMedicareEligible?: ModelBooleanInput | null,\n wasPatientManuallyAdded?: ModelBooleanInput | null,\n patientEncounterSummaryLastSentAt?: ModelStringInput | null,\n cologuardOrderSuccessfullyPlacedAt?: ModelStringInput | null,\n hasPatientRequestedMailedResults?: ModelBooleanInput | null,\n and?: Array< ModelEncounterConditionInput | null > | null,\n or?: Array< ModelEncounterConditionInput | null > | null,\n not?: ModelEncounterConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelProductTypeListInput = {\n eq?: Array< ProductType | null > | null,\n ne?: Array< ProductType | null > | null,\n contains?: ProductType | null,\n notContains?: ProductType | null,\n};\n\nexport type UpdateEncounterInput = {\n id: string,\n appointmentID?: string | null,\n patientID?: string | null,\n coordinatorID?: string | null,\n techID?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitions?: Array< RequisitionInput > | null,\n requisitionUploads?: Array< S3ObjectInput > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n commentsFromCoordinatorAboutPatient?: string | null,\n commentsFromSchedulerAboutEncounter?: string | null,\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n commentsFromTechAboutEncounter?: string | null,\n commentsFromCustomerSupportAboutEncounter?: string | null,\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n covid19Questions?: COVID19QuestionsInput | null,\n bloodCollectionDetails?: SpecimenCollectionDetailsInput | null,\n capillaryDrawCollectionDetails?: SpecimenCollectionDetailsInput | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n serviceOutcomes?: Array< ServiceOutcomeInput > | null,\n diagnosisCodes?: Array< CodingInput > | null,\n partnersEncounterID?: CustomPropertyInput | null,\n documents?: Array< DocumentInput > | null,\n observations?: Array< ObservationInput > | null,\n procedures?: Array< ProcedureInput > | null,\n escalation?: EscalationInput | null,\n questionnaires?: Array< QuestionnaireEmbeddedInput > | null,\n colorectalCancerScreeningAnswers?: QuestionnaireResponseInput | null,\n patientEncounterSummaryLastSentAt?: string | null,\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n hasPatientRequestedMailedResults?: boolean | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n duplicateChildDocuments?: DuplicateChildDocumentResponseInput | null,\n};\n\nexport type DeleteEncounterInput = {\n id: string,\n};\n\nexport type CreateCareNavigationEpisodeInput = {\n closedAt?: string | null,\n careNavigationGroup: CareNavigationGroup,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n referralID: string,\n zendeskTicketID?: number | null,\n serviceOutcomes?: Array< CareNavigationEpisodeServiceOutcomeInput > | null,\n documents?: Array< DocumentInput > | null,\n observations?: Array< ObservationInput > | null,\n onboardingQuestionsAndAnswers?: Array< OnboardingQuestionAnswerPairInput > | null,\n createdAt?: string | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n id?: string | null,\n};\n\nexport type CareNavigationEpisodeServiceOutcomeInput = {\n id: string,\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromCareNavigatorAboutServiceFailure?: string | null,\n statusChangedAt?: string | null,\n serviceDetailJSON: string,\n};\n\nexport type OnboardingQuestionAnswerPairInput = {\n key: string,\n question: string,\n answer: string,\n};\n\nexport type ModelCareNavigationEpisodeConditionInput = {\n closedAt?: ModelStringInput | null,\n careNavigationGroup?: ModelCareNavigationGroupInput | null,\n patientID?: ModelIDInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n referralID?: ModelIDInput | null,\n zendeskTicketID?: ModelIntInput | null,\n createdAt?: ModelStringInput | null,\n and?: Array< ModelCareNavigationEpisodeConditionInput | null > | null,\n or?: Array< ModelCareNavigationEpisodeConditionInput | null > | null,\n not?: ModelCareNavigationEpisodeConditionInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelCareNavigationGroupInput = {\n eq?: CareNavigationGroup | null,\n ne?: CareNavigationGroup | null,\n};\n\nexport type UpdateCareNavigationEpisodeInput = {\n closedAt?: string | null,\n careNavigationGroup?: CareNavigationGroup | null,\n patientID?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n referralID?: string | null,\n zendeskTicketID?: number | null,\n serviceOutcomes?: Array< CareNavigationEpisodeServiceOutcomeInput > | null,\n documents?: Array< DocumentInput > | null,\n observations?: Array< ObservationInput > | null,\n onboardingQuestionsAndAnswers?: Array< OnboardingQuestionAnswerPairInput > | null,\n createdAt?: string | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n id: string,\n};\n\nexport type DeleteCareNavigationEpisodeInput = {\n id: string,\n};\n\nexport type CreateS3ObjectDataInput = {\n id?: string | null,\n region: string,\n bucket: string,\n key: string,\n identityID: string,\n parentType: S3ObjectParentType,\n parentID: string,\n contentType?: string | null,\n};\n\nexport enum S3ObjectParentType {\n APPOINTMENT = \"APPOINTMENT\",\n ENCOUNTER = \"ENCOUNTER\",\n CARE_NAVIGATION_EPISODE = \"CARE_NAVIGATION_EPISODE\",\n UNLINKABLE_REPORT = \"UNLINKABLE_REPORT\",\n PATIENT = \"PATIENT\",\n TECH = \"TECH\",\n REMOTE_TECH = \"REMOTE_TECH\",\n REFERRAL = \"REFERRAL\",\n}\n\n\nexport type ModelS3ObjectDataConditionInput = {\n region?: ModelStringInput | null,\n bucket?: ModelStringInput | null,\n key?: ModelStringInput | null,\n identityID?: ModelStringInput | null,\n parentType?: ModelS3ObjectParentTypeInput | null,\n parentID?: ModelIDInput | null,\n contentType?: ModelStringInput | null,\n and?: Array< ModelS3ObjectDataConditionInput | null > | null,\n or?: Array< ModelS3ObjectDataConditionInput | null > | null,\n not?: ModelS3ObjectDataConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelS3ObjectParentTypeInput = {\n eq?: S3ObjectParentType | null,\n ne?: S3ObjectParentType | null,\n};\n\nexport type S3ObjectData = {\n __typename: \"S3ObjectData\",\n id: string,\n region: string,\n bucket: string,\n key: string,\n identityID: string,\n parentType: S3ObjectParentType,\n parentID: string,\n contentType?: string | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type UpdateS3ObjectDataInput = {\n id: string,\n region?: string | null,\n bucket?: string | null,\n key?: string | null,\n identityID?: string | null,\n parentType?: S3ObjectParentType | null,\n parentID?: string | null,\n contentType?: string | null,\n};\n\nexport type DeleteS3ObjectDataInput = {\n id: string,\n};\n\nexport type CreatePartnerUserInviteInput = {\n id?: string | null,\n email: string,\n partnerOrganization: PartnerOrganization,\n status: PartnerUserInviteStatus,\n expiry: number,\n ttl?: number | null,\n managePartnerUsersAuthorization: ManagePartnerUsersAuthorization,\n isArchived?: boolean | null,\n};\n\nexport enum PartnerUserInviteStatus {\n PENDING = \"PENDING\", // The CSR has been invited, but they haven't clicked on the link\n ACCEPTED = \"ACCEPTED\", // The CSR is done signing up\n}\n\n\nexport type ModelPartnerUserInviteConditionInput = {\n email?: ModelStringInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n status?: ModelPartnerUserInviteStatusInput | null,\n expiry?: ModelIntInput | null,\n ttl?: ModelIntInput | null,\n managePartnerUsersAuthorization?: ModelManagePartnerUsersAuthorizationInput | null,\n isArchived?: ModelBooleanInput | null,\n and?: Array< ModelPartnerUserInviteConditionInput | null > | null,\n or?: Array< ModelPartnerUserInviteConditionInput | null > | null,\n not?: ModelPartnerUserInviteConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelPartnerUserInviteStatusInput = {\n eq?: PartnerUserInviteStatus | null,\n ne?: PartnerUserInviteStatus | null,\n};\n\nexport type ModelManagePartnerUsersAuthorizationInput = {\n eq?: ManagePartnerUsersAuthorization | null,\n ne?: ManagePartnerUsersAuthorization | null,\n};\n\nexport type PartnerUserInvite = {\n __typename: \"PartnerUserInvite\",\n id: string,\n email: string,\n partnerOrganization: PartnerOrganization,\n status: PartnerUserInviteStatus,\n expiry: number,\n ttl?: number | null,\n managePartnerUsersAuthorization: ManagePartnerUsersAuthorization,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type UpdatePartnerUserInviteInput = {\n id: string,\n email?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n status?: PartnerUserInviteStatus | null,\n expiry?: number | null,\n ttl?: number | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n isArchived?: boolean | null,\n};\n\nexport type DeletePartnerUserInviteInput = {\n id: string,\n};\n\nexport type CreatePractitionerInput = {\n id?: string | null,\n NPI: string,\n name?: HumanNameInput | null,\n practitionerGroupName?: string | null,\n address?: AddressInput | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n};\n\nexport type ModelPractitionerConditionInput = {\n NPI?: ModelStringInput | null,\n practitionerGroupName?: ModelStringInput | null,\n phone?: ModelStringInput | null,\n email?: ModelStringInput | null,\n fax?: ModelStringInput | null,\n faxConfirmationStatus?: ModelFaxConfirmationStatusInput | null,\n faxLastConfirmedAt?: ModelStringInput | null,\n testFaxLastSentAt?: ModelStringInput | null,\n directTrustConfirmationStatus?: ModelDirectTrustConfirmationStatusInput | null,\n incorrectFaxes?: ModelStringInput | null,\n role?: ModelPractitionerRoleInput | null,\n and?: Array< ModelPractitionerConditionInput | null > | null,\n or?: Array< ModelPractitionerConditionInput | null > | null,\n not?: ModelPractitionerConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelFaxConfirmationStatusInput = {\n eq?: FaxConfirmationStatus | null,\n ne?: FaxConfirmationStatus | null,\n};\n\nexport type ModelDirectTrustConfirmationStatusInput = {\n eq?: DirectTrustConfirmationStatus | null,\n ne?: DirectTrustConfirmationStatus | null,\n};\n\nexport type ModelPractitionerRoleInput = {\n eq?: PractitionerRole | null,\n ne?: PractitionerRole | null,\n};\n\nexport type UpdatePractitionerInput = {\n id: string,\n NPI?: string | null,\n name?: HumanNameInput | null,\n practitionerGroupName?: string | null,\n address?: AddressInput | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n};\n\nexport type DeletePractitionerInput = {\n id: string,\n};\n\nexport type CreateTechInput = {\n id?: string | null,\n name: HumanNameInput,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n vehicle?: VehicleInput | null,\n serviceTypes?: Array< ServiceType | null > | null,\n serviceTypesAvailabilityRules?: Array< ServiceTypeAvailabilityRulesInput > | null,\n availabilityRules?: Array< TimeRangeRuleInput > | null,\n locations?: Array< LocationInput > | null,\n profilePicture?: S3ObjectInput | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n};\n\nexport type VehicleInput = {\n make: string,\n model: string,\n color: string,\n};\n\nexport type ServiceTypeAvailabilityRulesInput = {\n serviceType: ServiceType,\n availabilityRules: Array< TimeRangeRuleInput >,\n};\n\nexport type TimeRangeRuleInput = {\n id: string,\n inclusion: TimeRangeRuleInclusion,\n start: string,\n end: string,\n recurrenceStart: string,\n recurrenceEnd?: string | null,\n recurrenceMultiple: number,\n recurrencePeriod: TimeRangeRulePeriod,\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n notes?: string | null,\n updatedAt?: string | null,\n updatedBy?: string | null,\n};\n\nexport type ModelTechConditionInput = {\n gender?: ModelGenderInput | null,\n phone?: ModelStringInput | null,\n email?: ModelStringInput | null,\n serviceTypes?: ModelServiceTypeListInput | null,\n profilePictureS3ObjectID?: ModelIDInput | null,\n isActive?: ModelBooleanInput | null,\n biographyItems?: ModelStringInput | null,\n patientTestimonials?: ModelStringInput | null,\n partialAppointmentsForTeamAvailabilityJSON?: ModelStringInput | null,\n capabilities?: ModelTechCapabilityListInput | null,\n isIneligibleForMatchmaking?: ModelBooleanInput | null,\n and?: Array< ModelTechConditionInput | null > | null,\n or?: Array< ModelTechConditionInput | null > | null,\n not?: ModelTechConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n id?: ModelStringInput | null,\n};\n\nexport type ModelGenderInput = {\n eq?: Gender | null,\n ne?: Gender | null,\n};\n\nexport type ModelServiceTypeListInput = {\n eq?: Array< ServiceType | null > | null,\n ne?: Array< ServiceType | null > | null,\n contains?: ServiceType | null,\n notContains?: ServiceType | null,\n};\n\nexport type ModelTechCapabilityListInput = {\n eq?: Array< TechCapability | null > | null,\n ne?: Array< TechCapability | null > | null,\n contains?: TechCapability | null,\n notContains?: TechCapability | null,\n};\n\nexport type CreateTechServiceRegionInput = {\n id?: string | null,\n techID: string,\n serviceRegionName: string,\n availabilityRules?: Array< TimeRangeRuleInput > | null,\n};\n\nexport type ModelTechServiceRegionConditionInput = {\n techID?: ModelIDInput | null,\n serviceRegionName?: ModelStringInput | null,\n and?: Array< ModelTechServiceRegionConditionInput | null > | null,\n or?: Array< ModelTechServiceRegionConditionInput | null > | null,\n not?: ModelTechServiceRegionConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type UpdateTechServiceRegionInput = {\n id: string,\n techID?: string | null,\n serviceRegionName?: string | null,\n availabilityRules?: Array< TimeRangeRuleInput > | null,\n};\n\nexport type DeleteTechServiceRegionInput = {\n id: string,\n};\n\nexport type CreateRemoteTechInput = {\n id?: string | null,\n name: HumanNameInput,\n email: string,\n phone?: string | null,\n profilePicture?: S3ObjectInput | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n availabilityRules: Array< TimeRangeRuleInput >,\n isActive: boolean,\n qualifications: Array< QualificationInput >,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCode?: S3ObjectInput | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n};\n\nexport type QualificationInput = {\n qualificationType: QualificationType,\n geographicalState: string,\n};\n\nexport type ModelRemoteTechConditionInput = {\n email?: ModelStringInput | null,\n phone?: ModelStringInput | null,\n profilePictureS3ObjectID?: ModelIDInput | null,\n timezone?: ModelStringInput | null,\n isActive?: ModelBooleanInput | null,\n serviceTypes?: ModelServiceTypeInput | null,\n remoteVisitZoomLink?: ModelStringInput | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: ModelIDInput | null,\n partialAppointmentsForTeamAvailabilityJSON?: ModelStringInput | null,\n and?: Array< ModelRemoteTechConditionInput | null > | null,\n or?: Array< ModelRemoteTechConditionInput | null > | null,\n not?: ModelRemoteTechConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n id?: ModelStringInput | null,\n};\n\nexport type ModelServiceTypeInput = {\n eq?: ServiceType | null,\n ne?: ServiceType | null,\n};\n\nexport type UpdateRemoteTechInput = {\n id: string,\n name?: HumanNameInput | null,\n email?: string | null,\n phone?: string | null,\n profilePicture?: S3ObjectInput | null,\n profilePictureS3ObjectID?: string | null,\n timezone?: string | null,\n availabilityRules?: Array< TimeRangeRuleInput > | null,\n isActive?: boolean | null,\n qualifications?: Array< QualificationInput > | null,\n serviceTypes?: Array< ServiceType > | null,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCode?: S3ObjectInput | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n};\n\nexport type CreateCoordinatorInput = {\n id?: string | null,\n authorizedTechIDs?: Array< string > | null,\n name?: HumanNameInput | null,\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n consentToContactForAppointmentBySMS?: ConsentInput | null,\n billingCustomerID?: string | null,\n consentToContactForResearch?: ConsentInput | null,\n consentToContactForMarketing?: ConsentInput | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n};\n\nexport type ConsentInput = {\n permit: boolean,\n version: number,\n};\n\nexport type ModelCoordinatorConditionInput = {\n authorizedTechIDs?: ModelIDInput | null,\n isCSR?: ModelBooleanInput | null,\n isActive?: ModelBooleanInput | null,\n managePartnerUsersAuthorization?: ModelManagePartnerUsersAuthorizationInput | null,\n authorizedPartnerOrganizations?: ModelPartnerOrganizationListInput | null,\n phone?: ModelStringInput | null,\n email?: ModelStringInput | null,\n billingCustomerID?: ModelStringInput | null,\n outstandingPartnerOrganizationBookingURLs?: ModelStringInput | null,\n stripeCustomerID?: ModelStringInput | null,\n isArchived?: ModelBooleanInput | null,\n and?: Array< ModelCoordinatorConditionInput | null > | null,\n or?: Array< ModelCoordinatorConditionInput | null > | null,\n not?: ModelCoordinatorConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n id?: ModelStringInput | null,\n};\n\nexport type ModelPartnerOrganizationListInput = {\n eq?: Array< PartnerOrganization | null > | null,\n ne?: Array< PartnerOrganization | null > | null,\n contains?: PartnerOrganization | null,\n notContains?: PartnerOrganization | null,\n};\n\nexport type UpdateCoordinatorInput = {\n id: string,\n authorizedTechIDs?: Array< string > | null,\n name?: HumanNameInput | null,\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n consentToContactForAppointmentBySMS?: ConsentInput | null,\n billingCustomerID?: string | null,\n consentToContactForResearch?: ConsentInput | null,\n consentToContactForMarketing?: ConsentInput | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n};\n\nexport type DeleteCoordinatorInput = {\n id: string,\n};\n\nexport type CreatePatientInput = {\n id?: string | null,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n location?: LocationInput | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n phone?: string | null,\n secondaryPhone?: string | null,\n email?: string | null,\n consentToContactForAppointmentBySMS?: ConsentInput | null,\n consentToContactForAppointmentByEmail?: ConsentInput | null,\n name: HumanNameInput,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFront?: S3ObjectInput | null,\n insuranceCardUploadBack?: S3ObjectInput | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFront?: S3ObjectInput | null,\n medicareCardUploadBack?: S3ObjectInput | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n commentsFromTechsAboutEncounters?: Array< CommentsFromTechAboutEncounterInput > | null,\n bloodCollectionDetailsFromEncounters?: Array< SpecimenCollectionDetailsFromEncounterInput > | null,\n capillaryDrawCollectionDetailsFromEncounters?: Array< SpecimenCollectionDetailsFromEncounterInput > | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n consentToContactForMarketingSMS?: ConsentInput | null,\n consentToContactForMarketingEmail?: ConsentInput | null,\n consentToContactForMarketingPhone?: ConsentInput | null,\n suggestedAppointmentLocation?: LocationInput | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n mailingAddress?: AddressInput | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n caregiverName?: HumanNameInput | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n labOrganizationPatientIDs?: Array< LabOrganizationPatientIDInput > | null,\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n consents?: Array< ConsentFormInput > | null,\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n};\n\nexport type CommentsFromTechAboutEncounterInput = {\n encounterID: string,\n appointmentStart: string,\n techName: HumanNameInput,\n comments?: string | null,\n};\n\nexport type SpecimenCollectionDetailsFromEncounterInput = {\n encounterID: string,\n appointmentStart: string,\n techName: HumanNameInput,\n specimenCollectionDetails: SpecimenCollectionDetailsInput,\n failureReason?: ServiceFailureReason | null,\n};\n\nexport type LabOrganizationPatientIDInput = {\n labOrganization: LabOrganization,\n externalID: string,\n planNameForLabOrdering: string,\n};\n\nexport type ConsentFormInput = {\n consentedAt: string,\n type: ConsentType,\n document?: DocumentInput | null,\n platform: QuestionnairePlatform,\n formID: string,\n responseID: string,\n appointmentID: string,\n rawResponseJSON: string,\n};\n\nexport type ModelPatientConditionInput = {\n csrPartnerOrganization?: ModelPartnerOrganizationInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n coordinatorID?: ModelIDInput | null,\n medicareCardID?: ModelStringInput | null,\n imageMoverUserID?: ModelIDInput | null,\n externalID?: ModelStringInput | null,\n secondaryExternalID?: ModelStringInput | null,\n specimenLabelID?: ModelStringInput | null,\n qtMedicalPatientID?: ModelIDInput | null,\n planName?: ModelStringInput | null,\n diabeticType?: ModelDiabeticTypeInput | null,\n authorizedTechIDs?: ModelIDInput | null,\n isCoordinator?: ModelBooleanInput | null,\n phone?: ModelStringInput | null,\n email?: ModelStringInput | null,\n secondaryPhone?: ModelStringInput | null,\n birthdate?: ModelStringInput | null,\n sex?: ModelSexInput | null,\n gender?: ModelGenderInput | null,\n ethnicity?: ModelEthnicityInput | null,\n races?: ModelRaceListInput | null,\n passportNumber?: ModelStringInput | null,\n insuranceCardUploadFrontS3ObjectID?: ModelIDInput | null,\n insuranceCardUploadBackS3ObjectID?: ModelIDInput | null,\n medicareCardUploadFrontS3ObjectID?: ModelIDInput | null,\n medicareCardUploadBackS3ObjectID?: ModelIDInput | null,\n watchlistedAppointmentID?: ModelIDInput | null,\n responsiblePractitionerID?: ModelIDInput | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: ModelStringInput | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: ModelStringInput | null,\n suggestedAppointmentLocationAdditionalInformation?: ModelStringInput | null,\n preferredLanguage?: ModelStringInput | null,\n primaryLanguageBCP47?: ModelStringInput | null,\n secondaryLanguagesBCP47?: ModelStringInput | null,\n patientNumber?: ModelStringInput | null,\n latestGapListUploadID?: ModelStringInput | null,\n latestGapListRowJSON?: ModelStringInput | null,\n latestGapListPassthroughJSON?: ModelStringInput | null,\n brandCode?: ModelStringInput | null,\n population?: ModelPatientPopulationInput | null,\n elationID?: ModelStringInput | null,\n zusUPID?: ModelStringInput | null,\n zusSprinterHealthPatientRecordID?: ModelStringInput | null,\n and?: Array< ModelPatientConditionInput | null > | null,\n or?: Array< ModelPatientConditionInput | null > | null,\n not?: ModelPatientConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelDiabeticTypeInput = {\n eq?: DiabeticType | null,\n ne?: DiabeticType | null,\n};\n\nexport type ModelSexInput = {\n eq?: Sex | null,\n ne?: Sex | null,\n};\n\nexport type ModelEthnicityInput = {\n eq?: Ethnicity | null,\n ne?: Ethnicity | null,\n};\n\nexport type ModelRaceListInput = {\n eq?: Array< Race | null > | null,\n ne?: Array< Race | null > | null,\n contains?: Race | null,\n notContains?: Race | null,\n};\n\nexport type ModelPatientPopulationInput = {\n eq?: PatientPopulation | null,\n ne?: PatientPopulation | null,\n};\n\nexport type UpdatePatientInput = {\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n location?: LocationInput | null,\n coordinatorID?: string | null,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n labOrganizationPatientIDs?: Array< LabOrganizationPatientIDInput > | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator?: boolean | null,\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n consentToContactForAppointmentBySMS?: ConsentInput | null,\n consentToContactForAppointmentByEmail?: ConsentInput | null,\n name?: HumanNameInput | null,\n caregiverName?: HumanNameInput | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFront?: S3ObjectInput | null,\n insuranceCardUploadBack?: S3ObjectInput | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFront?: S3ObjectInput | null,\n medicareCardUploadBack?: S3ObjectInput | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n commentsFromTechsAboutEncounters?: Array< CommentsFromTechAboutEncounterInput > | null,\n bloodCollectionDetailsFromEncounters?: Array< SpecimenCollectionDetailsFromEncounterInput > | null,\n capillaryDrawCollectionDetailsFromEncounters?: Array< SpecimenCollectionDetailsFromEncounterInput > | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n consentToContactForMarketingSMS?: ConsentInput | null,\n consentToContactForMarketingEmail?: ConsentInput | null,\n consentToContactForMarketingPhone?: ConsentInput | null,\n suggestedAppointmentLocation?: LocationInput | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n mailingAddress?: AddressInput | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n patientNumber?: string | null,\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n consents?: Array< ConsentFormInput > | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n};\n\nexport type DeletePatientInput = {\n id: string,\n};\n\nexport type CreatePatientContactPointInput = {\n id?: string | null,\n patientID: string,\n system: ContactPointSystem,\n value: string,\n status: ContactPointStatus,\n statusLastUpdatedAt?: string | null,\n sources?: Array< PatientContactPointSourceInput > | null,\n};\n\nexport type PatientContactPointSourceInput = {\n source: ContactPointSource,\n rank?: number | null,\n system: ContactPointSystem,\n reportedAsLastSeenAt?: string | null,\n firstReportedAt?: string | null,\n lastReportedAt?: string | null,\n metadataJSON?: string | null,\n};\n\nexport type ModelPatientContactPointConditionInput = {\n patientID?: ModelIDInput | null,\n system?: ModelContactPointSystemInput | null,\n value?: ModelStringInput | null,\n status?: ModelContactPointStatusInput | null,\n statusLastUpdatedAt?: ModelStringInput | null,\n and?: Array< ModelPatientContactPointConditionInput | null > | null,\n or?: Array< ModelPatientContactPointConditionInput | null > | null,\n not?: ModelPatientContactPointConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelContactPointSystemInput = {\n eq?: ContactPointSystem | null,\n ne?: ContactPointSystem | null,\n};\n\nexport type ModelContactPointStatusInput = {\n eq?: ContactPointStatus | null,\n ne?: ContactPointStatus | null,\n};\n\nexport type UpdatePatientContactPointInput = {\n id: string,\n patientID?: string | null,\n system?: ContactPointSystem | null,\n value?: string | null,\n status?: ContactPointStatus | null,\n statusLastUpdatedAt?: string | null,\n sources?: Array< PatientContactPointSourceInput > | null,\n};\n\nexport type DeletePatientContactPointInput = {\n id: string,\n};\n\nexport type CreateReferralInput = {\n id?: string | null,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitions?: Array< RequisitionInput > | null,\n requisitionUploads?: Array< S3ObjectInput > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n diagnosisCodes?: Array< CodingInput > | null,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n outreachOutcomesPerServiceRequest?: Array< ServiceRequestOutreachOutcomeInput > | null,\n ttl?: number | null,\n};\n\nexport type ServiceRequestOutreachOutcomeInput = {\n serviceRequestExternalID: string,\n productType?: ProductType | null,\n serviceTypes?: Array< ServiceType > | null,\n labOrganization: LabOrganization,\n outcome: string,\n notes?: string | null,\n};\n\nexport type ModelReferralConditionInput = {\n patientID?: ModelIDInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n requisitionUploadS3ObjectIDs?: ModelIDInput | null,\n serviceTypes?: ModelServiceTypeInput | null,\n isBooked?: ModelBooleanInput | null,\n isExpired?: ModelBooleanInput | null,\n ttl?: ModelIntInput | null,\n and?: Array< ModelReferralConditionInput | null > | null,\n or?: Array< ModelReferralConditionInput | null > | null,\n not?: ModelReferralConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type UpdateReferralInput = {\n id: string,\n patientID?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitions?: Array< RequisitionInput > | null,\n requisitionUploads?: Array< S3ObjectInput > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes?: Array< ServiceType > | null,\n diagnosisCodes?: Array< CodingInput > | null,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n outreachOutcomesPerServiceRequest?: Array< ServiceRequestOutreachOutcomeInput > | null,\n ttl?: number | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n};\n\nexport type DeleteReferralInput = {\n id: string,\n};\n\nexport type CreatePatientCampaignStateInput = {\n id?: string | null,\n patientID: string,\n name: PatientCampaignStateName,\n campaignName: CampaignName,\n eligibilityStart: string,\n eligibilityEnd: string,\n cohort?: number | null,\n contextJSON: string,\n enteredAt: number,\n partnerOrganization: PartnerOrganization,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n};\n\nexport type ModelPatientCampaignStateConditionInput = {\n patientID?: ModelIDInput | null,\n name?: ModelPatientCampaignStateNameInput | null,\n campaignName?: ModelCampaignNameInput | null,\n eligibilityStart?: ModelStringInput | null,\n eligibilityEnd?: ModelStringInput | null,\n cohort?: ModelIntInput | null,\n contextJSON?: ModelStringInput | null,\n enteredAt?: ModelIntInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n previousStateName?: ModelPatientCampaignStateNameInput | null,\n reasonForTransitionToTerminalState?: ModelReasonForTransitionToTerminalStateInput | null,\n and?: Array< ModelPatientCampaignStateConditionInput | null > | null,\n or?: Array< ModelPatientCampaignStateConditionInput | null > | null,\n not?: ModelPatientCampaignStateConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelPatientCampaignStateNameInput = {\n eq?: PatientCampaignStateName | null,\n ne?: PatientCampaignStateName | null,\n};\n\nexport type ModelCampaignNameInput = {\n eq?: CampaignName | null,\n ne?: CampaignName | null,\n};\n\nexport type ModelReasonForTransitionToTerminalStateInput = {\n eq?: ReasonForTransitionToTerminalState | null,\n ne?: ReasonForTransitionToTerminalState | null,\n};\n\nexport type UpdatePatientCampaignStateInput = {\n id: string,\n patientID?: string | null,\n name?: PatientCampaignStateName | null,\n campaignName?: CampaignName | null,\n eligibilityStart?: string | null,\n eligibilityEnd?: string | null,\n cohort?: number | null,\n contextJSON?: string | null,\n enteredAt?: number | null,\n partnerOrganization?: PartnerOrganization | null,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n};\n\nexport type DeletePatientCampaignStateInput = {\n id: string,\n};\n\nexport type CreateProjectedEngagementActivityScheduleInput = {\n id?: string | null,\n name: string,\n status: ProjectedEngagementActivityScheduleStatus,\n acceptedAt?: string | null,\n totalBatches?: number | null,\n processedBatches?: number | null,\n parametersJSON?: string | null,\n};\n\nexport enum ProjectedEngagementActivityScheduleStatus {\n PROCESSING = \"PROCESSING\",\n PENDING = \"PENDING\",\n ACCEPTED = \"ACCEPTED\",\n ARCHIVED = \"ARCHIVED\", // The schedule has been archived and is no longer in use. It is still available in S3 but has been removed from OpenSearch.\n}\n\n\nexport type ModelProjectedEngagementActivityScheduleConditionInput = {\n name?: ModelStringInput | null,\n status?: ModelProjectedEngagementActivityScheduleStatusInput | null,\n acceptedAt?: ModelStringInput | null,\n totalBatches?: ModelIntInput | null,\n processedBatches?: ModelIntInput | null,\n parametersJSON?: ModelStringInput | null,\n and?: Array< ModelProjectedEngagementActivityScheduleConditionInput | null > | null,\n or?: Array< ModelProjectedEngagementActivityScheduleConditionInput | null > | null,\n not?: ModelProjectedEngagementActivityScheduleConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelProjectedEngagementActivityScheduleStatusInput = {\n eq?: ProjectedEngagementActivityScheduleStatus | null,\n ne?: ProjectedEngagementActivityScheduleStatus | null,\n};\n\nexport type ProjectedEngagementActivitySchedule = {\n __typename: \"ProjectedEngagementActivitySchedule\",\n id: string,\n // A friendly(-ish) name for the schedule.\n name: string,\n // The status of the schedule. This largely serves as a partition key so we can query for schedules sorted by accepted at.\n status: ProjectedEngagementActivityScheduleStatus,\n acceptedAt?: string | null,\n totalBatches?: number | null,\n processedBatches?: number | null,\n parametersJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type UpdateProjectedEngagementActivityScheduleInput = {\n id: string,\n name?: string | null,\n status?: ProjectedEngagementActivityScheduleStatus | null,\n acceptedAt?: string | null,\n totalBatches?: number | null,\n processedBatches?: number | null,\n parametersJSON?: string | null,\n};\n\nexport type DeleteProjectedEngagementActivityScheduleInput = {\n id: string,\n};\n\nexport type CreateUnlinkableReportInput = {\n id?: string | null,\n externalID: string,\n documents: Array< DocumentInput >,\n zendeskTicketID?: number | null,\n hasBeenResolved?: boolean | null,\n patientName?: HumanNameInput | null,\n patientNumber?: string | null,\n requisitionNumber?: string | null,\n labOrganization?: LabOrganization | null,\n serviceRequestExternalIDs?: Array< string > | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n};\n\nexport type ModelUnlinkableReportConditionInput = {\n externalID?: ModelStringInput | null,\n zendeskTicketID?: ModelIntInput | null,\n hasBeenResolved?: ModelBooleanInput | null,\n patientNumber?: ModelStringInput | null,\n requisitionNumber?: ModelStringInput | null,\n labOrganization?: ModelLabOrganizationInput | null,\n serviceRequestExternalIDs?: ModelStringInput | null,\n and?: Array< ModelUnlinkableReportConditionInput | null > | null,\n or?: Array< ModelUnlinkableReportConditionInput | null > | null,\n not?: ModelUnlinkableReportConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelLabOrganizationInput = {\n eq?: LabOrganization | null,\n ne?: LabOrganization | null,\n};\n\nexport type UnlinkableReport = {\n __typename: \"UnlinkableReport\",\n id: string,\n externalID: string,\n documents: Array,\n zendeskTicketID?: number | null,\n hasBeenResolved?: boolean | null,\n patientName?: HumanName | null,\n patientNumber?: string | null,\n requisitionNumber?: string | null,\n labOrganization?: LabOrganization | null,\n serviceRequestExternalIDs?: Array< string > | null,\n childDocumentURL?: ChildDocumentURLResponse | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type UpdateUnlinkableReportInput = {\n id: string,\n externalID?: string | null,\n documents?: Array< DocumentInput > | null,\n zendeskTicketID?: number | null,\n hasBeenResolved?: boolean | null,\n patientName?: HumanNameInput | null,\n patientNumber?: string | null,\n requisitionNumber?: string | null,\n labOrganization?: LabOrganization | null,\n serviceRequestExternalIDs?: Array< string > | null,\n childDocumentURL?: ChildDocumentURLResponseInput | null,\n};\n\nexport type DeleteUnlinkableReportInput = {\n id: string,\n};\n\nexport type CreateDropOffInput = {\n id?: string | null,\n organization: DropOffOrganization,\n name: string,\n phone?: string | null,\n email?: string | null,\n location: LocationInput,\n timezone?: string | null,\n availabilityRules: Array< TimeRangeRuleInput >,\n hasParking?: boolean | null,\n hasDropBox?: boolean | null,\n commentsFromScheduler?: string | null,\n googleMapsPlaceID?: string | null,\n metroName: string,\n isActive: boolean,\n};\n\nexport enum DropOffOrganization {\n BIO_REFERENCE = \"BIO_REFERENCE\",\n FEDEX = \"FEDEX\",\n INTERMOUNTAIN = \"INTERMOUNTAIN\",\n INTERMOUNTAIN_CANCER_CENTER = \"INTERMOUNTAIN_CANCER_CENTER\",\n LABCORP = \"LABCORP\",\n MARSHALL_LABORATORY = \"MARSHALL_LABORATORY\",\n MUIRLAB = \"MUIRLAB\",\n QUEST = \"QUEST\",\n SPRINTER_HEALTH = \"SPRINTER_HEALTH\",\n STANFORD = \"STANFORD\",\n STANFORD_CANCER_CENTER = \"STANFORD_CANCER_CENTER\",\n UCSF_BLOOD_DRAW_LAB = \"UCSF_BLOOD_DRAW_LAB\",\n UCI_LAB = \"UCI_LAB\",\n WEST_PAC = \"WEST_PAC\",\n DOTHOUSE_LAB = \"DOTHOUSE_LAB\",\n CODMAN_LAB = \"CODMAN_LAB\",\n BMC_LAB = \"BMC_LAB\",\n ROSLINDALE_LAB = \"ROSLINDALE_LAB\",\n KAISER = \"KAISER\",\n STANFORD_RESEARCH = \"STANFORD_RESEARCH\",\n TRAINING_PARTNER = \"TRAINING_PARTNER\",\n USPS = \"USPS\",\n}\n\n\nexport type ModelDropOffConditionInput = {\n organization?: ModelDropOffOrganizationInput | null,\n name?: ModelStringInput | null,\n phone?: ModelStringInput | null,\n email?: ModelStringInput | null,\n timezone?: ModelStringInput | null,\n hasParking?: ModelBooleanInput | null,\n hasDropBox?: ModelBooleanInput | null,\n commentsFromScheduler?: ModelStringInput | null,\n googleMapsPlaceID?: ModelStringInput | null,\n metroName?: ModelStringInput | null,\n isActive?: ModelBooleanInput | null,\n and?: Array< ModelDropOffConditionInput | null > | null,\n or?: Array< ModelDropOffConditionInput | null > | null,\n not?: ModelDropOffConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelDropOffOrganizationInput = {\n eq?: DropOffOrganization | null,\n ne?: DropOffOrganization | null,\n};\n\nexport type DropOff = {\n __typename: \"DropOff\",\n id: string,\n organization: DropOffOrganization,\n name: string,\n phone?: string | null,\n email?: string | null,\n location: Location,\n // Timezone generated based on the lat/long location of this dropoff\n timezone?: string | null,\n availabilityRules: Array,\n hasParking?: boolean | null,\n hasDropBox?: boolean | null,\n commentsFromScheduler?: string | null,\n googleMapsPlaceID?: string | null,\n metroName: string,\n isActive: boolean,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type UpdateDropOffInput = {\n id: string,\n organization?: DropOffOrganization | null,\n name?: string | null,\n phone?: string | null,\n email?: string | null,\n location?: LocationInput | null,\n timezone?: string | null,\n availabilityRules?: Array< TimeRangeRuleInput > | null,\n hasParking?: boolean | null,\n hasDropBox?: boolean | null,\n commentsFromScheduler?: string | null,\n googleMapsPlaceID?: string | null,\n metroName?: string | null,\n isActive?: boolean | null,\n};\n\nexport type DeleteDropOffInput = {\n id: string,\n};\n\nexport type CreateServiceRequestTypeInput = {\n id?: string | null,\n cptCodes: Array< string | null >,\n externalID: string,\n displayName: string,\n synonyms?: Array< string | null > | null,\n labOrganization: LabOrganization,\n container?: string | null,\n serviceRequestTypeContainerID?: string | null,\n specimen?: string | null,\n preferredSpecimen?: string | null,\n preferredVolumeDescription?: string | null,\n preferredVolumeMilliliters?: number | null,\n minimumVolume?: string | null,\n minimumVolumeAmount?: number | null,\n alternateSpecimen?: string | null,\n transportInstructions?: string | null,\n collectionInstructions?: string | null,\n collectionInstructionsVideoURL?: string | null,\n rejectionCriteria?: string | null,\n specimenStability?: string | null,\n patientPreparation?: string | null,\n resultAvailability?: string | null,\n serviceTypes?: Array< ServiceType > | null,\n containerSpecimenVolumes?: Array< SpecimenContainerSpecimenVolumesInput > | null,\n abstentions?: Array< AbstentionInput > | null,\n customKit?: ServiceRequestCustomKitInput | null,\n collectionTimeRules?: Array< TimeRangeRuleInput > | null,\n requiresBinaryPatientSex?: boolean | null,\n};\n\nexport type SpecimenContainerSpecimenVolumesInput = {\n containerOverrideID?: string | null,\n containerCategory?: SpecimenContainerCategory | null,\n minimumMilliliters?: number | null,\n preferredMilliliters?: number | null,\n isCombinable: boolean,\n minimumContainerCount?: number | null,\n specimenTestTypes?: Array< SpecimenTestType | null > | null,\n};\n\nexport type AbstentionInput = {\n abstentionType: AbstentionType,\n preferredDurationMinutes: number,\n requiredDurationMinutes?: number | null,\n};\n\nexport type ServiceRequestCustomKitInput = {\n photoURL: string,\n barcodePhotoURL?: string | null,\n recipient: CustomKitRecipient,\n requiresTRFCompletion: boolean,\n requiresBCFCompletion: boolean,\n};\n\nexport type ModelServiceRequestTypeConditionInput = {\n cptCodes?: ModelStringInput | null,\n externalID?: ModelStringInput | null,\n displayName?: ModelStringInput | null,\n synonyms?: ModelStringInput | null,\n labOrganization?: ModelLabOrganizationInput | null,\n container?: ModelStringInput | null,\n serviceRequestTypeContainerID?: ModelIDInput | null,\n specimen?: ModelStringInput | null,\n preferredSpecimen?: ModelStringInput | null,\n preferredVolumeDescription?: ModelStringInput | null,\n preferredVolumeMilliliters?: ModelFloatInput | null,\n minimumVolume?: ModelStringInput | null,\n minimumVolumeAmount?: ModelFloatInput | null,\n alternateSpecimen?: ModelStringInput | null,\n transportInstructions?: ModelStringInput | null,\n collectionInstructions?: ModelStringInput | null,\n collectionInstructionsVideoURL?: ModelStringInput | null,\n rejectionCriteria?: ModelStringInput | null,\n specimenStability?: ModelStringInput | null,\n patientPreparation?: ModelStringInput | null,\n resultAvailability?: ModelStringInput | null,\n serviceTypes?: ModelServiceTypeListInput | null,\n requiresBinaryPatientSex?: ModelBooleanInput | null,\n and?: Array< ModelServiceRequestTypeConditionInput | null > | null,\n or?: Array< ModelServiceRequestTypeConditionInput | null > | null,\n not?: ModelServiceRequestTypeConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type UpdateServiceRequestTypeInput = {\n id: string,\n cptCodes?: Array< string | null > | null,\n externalID?: string | null,\n displayName?: string | null,\n synonyms?: Array< string | null > | null,\n labOrganization?: LabOrganization | null,\n container?: string | null,\n serviceRequestTypeContainerID?: string | null,\n specimen?: string | null,\n preferredSpecimen?: string | null,\n preferredVolumeDescription?: string | null,\n preferredVolumeMilliliters?: number | null,\n minimumVolume?: string | null,\n minimumVolumeAmount?: number | null,\n alternateSpecimen?: string | null,\n transportInstructions?: string | null,\n collectionInstructions?: string | null,\n collectionInstructionsVideoURL?: string | null,\n rejectionCriteria?: string | null,\n specimenStability?: string | null,\n patientPreparation?: string | null,\n resultAvailability?: string | null,\n serviceTypes?: Array< ServiceType > | null,\n containerSpecimenVolumes?: Array< SpecimenContainerSpecimenVolumesInput > | null,\n abstentions?: Array< AbstentionInput > | null,\n customKit?: ServiceRequestCustomKitInput | null,\n collectionTimeRules?: Array< TimeRangeRuleInput > | null,\n requiresBinaryPatientSex?: boolean | null,\n};\n\nexport type DeleteServiceRequestTypeInput = {\n id: string,\n};\n\nexport type CreateSpecimenContainerTypeInput = {\n id?: string | null,\n name: string,\n category: SpecimenContainerCategory,\n capacityMilliliters: number,\n serumBloodCapacityMilliliters?: number | null,\n};\n\nexport type ModelSpecimenContainerTypeConditionInput = {\n name?: ModelStringInput | null,\n category?: ModelSpecimenContainerCategoryInput | null,\n capacityMilliliters?: ModelFloatInput | null,\n serumBloodCapacityMilliliters?: ModelFloatInput | null,\n and?: Array< ModelSpecimenContainerTypeConditionInput | null > | null,\n or?: Array< ModelSpecimenContainerTypeConditionInput | null > | null,\n not?: ModelSpecimenContainerTypeConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelSpecimenContainerCategoryInput = {\n eq?: SpecimenContainerCategory | null,\n ne?: SpecimenContainerCategory | null,\n};\n\nexport type SpecimenContainerType = {\n __typename: \"SpecimenContainerType\",\n id: string,\n name: string,\n category: SpecimenContainerCategory,\n // The whole capacity of the container. This would be the \"whole blood capacity\" for SST containers and the\n // general capacity for the containers which are not used for serum tests like Urine Cups and the Insure FOBT.\n capacityMilliliters: number,\n // Serum Capacity. The capacity of the container. Usually this is the volume of the container,\n // but in some cases the relevant capacity might reflect only a portion of the overall volume\n // (e.g. serum capacity in an SST, where the remaining volume is filled with clotted blood components).\n serumBloodCapacityMilliliters?: number | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type UpdateSpecimenContainerTypeInput = {\n id: string,\n name?: string | null,\n category?: SpecimenContainerCategory | null,\n capacityMilliliters?: number | null,\n serumBloodCapacityMilliliters?: number | null,\n};\n\nexport type DeleteSpecimenContainerTypeInput = {\n id: string,\n};\n\nexport type CreateServiceRequestTypeContainerInput = {\n id?: string | null,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n};\n\nexport type ModelServiceRequestTypeContainerConditionInput = {\n containerType?: ModelStringInput | null,\n alternativeContainerTypes?: ModelStringInput | null,\n substituteContainerTypesForCalculations?: ModelStringInput | null,\n containerCategory?: ModelStringInput | null,\n capacity?: ModelFloatInput | null,\n and?: Array< ModelServiceRequestTypeContainerConditionInput | null > | null,\n or?: Array< ModelServiceRequestTypeContainerConditionInput | null > | null,\n not?: ModelServiceRequestTypeContainerConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type UpdateServiceRequestTypeContainerInput = {\n id: string,\n containerType?: string | null,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory?: string | null,\n capacity?: number | null,\n};\n\nexport type DeleteServiceRequestTypeContainerInput = {\n id: string,\n};\n\nexport type CreateSMSInput = {\n id?: string | null,\n type: SMSType,\n contextJSON: string,\n ttl?: number | null,\n};\n\nexport enum SMSType {\n GENERIC_UNEXPECTED_RESPONSE = \"GENERIC_UNEXPECTED_RESPONSE\",\n BOOKING_CONFIRMATION = \"BOOKING_CONFIRMATION\",\n BOOKING_CONFIRMATION_AWV_PRE_WORK_FOCUSED = \"BOOKING_CONFIRMATION_AWV_PRE_WORK_FOCUSED\",\n BOOKING_CONFIRMATION_YES_RESPONSE = \"BOOKING_CONFIRMATION_YES_RESPONSE\",\n BOOKING_CONFIRMATION_RESCHEDULE_RESPONSE = \"BOOKING_CONFIRMATION_RESCHEDULE_RESPONSE\",\n BOOKING_CONFIRMATION_CANCEL_RESPONSE = \"BOOKING_CONFIRMATION_CANCEL_RESPONSE\",\n BOOKING_CONFIRMATION_REMINDER = \"BOOKING_CONFIRMATION_REMINDER\",\n BOOKING_CONFIRMATION_INVALID_RESPONSE = \"BOOKING_CONFIRMATION_INVALID_RESPONSE\",\n BOOKING_CONFIRMATION_ALREADY_CANCELED_RESPONSE = \"BOOKING_CONFIRMATION_ALREADY_CANCELED_RESPONSE\",\n CANCEL_CONFIRMATION = \"CANCEL_CONFIRMATION\",\n RESCHEDULE_CONFIRMATION = \"RESCHEDULE_CONFIRMATION\",\n DAY_BEFORE_REMINDER = \"DAY_BEFORE_REMINDER\",\n DAY_BEFORE_REMINDER_AWV_PRE_WORK_FOCUSED = \"DAY_BEFORE_REMINDER_AWV_PRE_WORK_FOCUSED\",\n DAY_OF_REMINDER = \"DAY_OF_REMINDER\",\n COLLECT_KIT_REMINDER = \"COLLECT_KIT_REMINDER\",\n DEPARTED_TO_APPOINTMENT = \"DEPARTED_TO_APPOINTMENT\",\n RUNNING_LATE = \"RUNNING_LATE\",\n ARRIVED_AT_APPOINTMENT = \"ARRIVED_AT_APPOINTMENT\",\n DEPARTED_TO_LAB = \"DEPARTED_TO_LAB\",\n TRANSFERRED_TO_LAB = \"TRANSFERRED_TO_LAB\",\n POST_APPOINTMENT = \"POST_APPOINTMENT\",\n POST_APPOINTMENT_COLLECT_KIT_REMINDER = \"POST_APPOINTMENT_COLLECT_KIT_REMINDER\",\n TWO_DAYS_BEFORE_REMINDER = \"TWO_DAYS_BEFORE_REMINDER\",\n PATIENT_ENCOUNTER_SUMMARY = \"PATIENT_ENCOUNTER_SUMMARY\",\n PATIENT_OUTREACH = \"PATIENT_OUTREACH\",\n PATIENT_OUTREACH_MORE_INFO_RESPONSE = \"PATIENT_OUTREACH_MORE_INFO_RESPONSE\",\n PATIENT_OUTREACH_MORE_INFO_RESPONSE_FOLLOW_UP = \"PATIENT_OUTREACH_MORE_INFO_RESPONSE_FOLLOW_UP\",\n PATIENT_OUTREACH_HELP_RESPONSE = \"PATIENT_OUTREACH_HELP_RESPONSE\",\n PATIENT_OUTREACH_INITIAL_EASE = \"PATIENT_OUTREACH_INITIAL_EASE\",\n PATIENT_OUTREACH_INITIAL_TEASER = \"PATIENT_OUTREACH_INITIAL_TEASER\",\n PATIENT_OUTREACH_INITIAL_EMPATHETIC = \"PATIENT_OUTREACH_INITIAL_EMPATHETIC\",\n PATIENT_OUTREACH_FOLLOW_UP_EMPATHETIC = \"PATIENT_OUTREACH_FOLLOW_UP_EMPATHETIC\",\n PATIENT_OUTREACH_FOLLOW_UP_NO_VOICEMAIL_TEASER = \"PATIENT_OUTREACH_FOLLOW_UP_NO_VOICEMAIL_TEASER\",\n PATIENT_OUTREACH_FOLLOW_UP_LEFT_VOICEMAIL_TEASER = \"PATIENT_OUTREACH_FOLLOW_UP_LEFT_VOICEMAIL_TEASER\",\n PATIENT_OUTREACH_FOLLOW_UP_NO_VOICEMAIL_AUTHORITATIVE = \"PATIENT_OUTREACH_FOLLOW_UP_NO_VOICEMAIL_AUTHORITATIVE\",\n PATIENT_OUTREACH_FOLLOW_UP_LEFT_VOICEMAIL_AUTHORITATIVE = \"PATIENT_OUTREACH_FOLLOW_UP_LEFT_VOICEMAIL_AUTHORITATIVE\",\n PATIENT_OUTREACH_FOLLOW_UP_NO_VOICEMAIL_HANDWRITTEN = \"PATIENT_OUTREACH_FOLLOW_UP_NO_VOICEMAIL_HANDWRITTEN\",\n PATIENT_OUTREACH_FOLLOW_UP_LEFT_VOICEMAIL_HANDWRITTEN = \"PATIENT_OUTREACH_FOLLOW_UP_LEFT_VOICEMAIL_HANDWRITTEN\",\n PATIENT_OUTREACH_FOLLOW_UP_NO_VOICEMAIL_REWARDS = \"PATIENT_OUTREACH_FOLLOW_UP_NO_VOICEMAIL_REWARDS\",\n PATIENT_OUTREACH_FOLLOW_UP_LEFT_VOICEMAIL_REWARDS = \"PATIENT_OUTREACH_FOLLOW_UP_LEFT_VOICEMAIL_REWARDS\",\n PATIENT_OUTREACH_FOLLOW_UP_NO_VOICEMAIL_EASE = \"PATIENT_OUTREACH_FOLLOW_UP_NO_VOICEMAIL_EASE\",\n PATIENT_OUTREACH_FOLLOW_UP_LEFT_VOICEMAIL_EASE = \"PATIENT_OUTREACH_FOLLOW_UP_LEFT_VOICEMAIL_EASE\",\n PATIENT_OUTREACH_FOLLOW_UP_NO_VOICEMAIL_OUTCOMES = \"PATIENT_OUTREACH_FOLLOW_UP_NO_VOICEMAIL_OUTCOMES\",\n PATIENT_OUTREACH_FOLLOW_UP_LEFT_VOICEMAIL_OUTCOMES = \"PATIENT_OUTREACH_FOLLOW_UP_LEFT_VOICEMAIL_OUTCOMES\",\n SCHEDULER_SAME_DAY_APPOINTMENT_AWAITING_TECH_RESPONSE = \"SCHEDULER_SAME_DAY_APPOINTMENT_AWAITING_TECH_RESPONSE\",\n SCHEDULER_SAME_DAY_APPOINTMENT_BOOKED = \"SCHEDULER_SAME_DAY_APPOINTMENT_BOOKED\",\n SCHEDULER_SAME_DAY_APPOINTMENT_RESCHEDULED = \"SCHEDULER_SAME_DAY_APPOINTMENT_RESCHEDULED\",\n SCHEDULER_SAME_DAY_APPOINTMENT_REMINDER = \"SCHEDULER_SAME_DAY_APPOINTMENT_REMINDER\",\n TECH_SAME_DAY_APPOINTMENT = \"TECH_SAME_DAY_APPOINTMENT\",\n TECH_SAME_DAY_APPOINTMENT_REMINDER = \"TECH_SAME_DAY_APPOINTMENT_REMINDER\",\n TECH_SCHEDULER_SAME_DAY_APPOINTMENT_RESCHEDULED = \"TECH_SCHEDULER_SAME_DAY_APPOINTMENT_RESCHEDULED\",\n TECH_SCHEDULER_SAME_DAY_APPOINTMENT_CANCELED = \"TECH_SCHEDULER_SAME_DAY_APPOINTMENT_CANCELED\",\n TECH_SAME_DAY_APPOINTMENT_RESCHEDULED = \"TECH_SAME_DAY_APPOINTMENT_RESCHEDULED\", // An appointment was rescheduled to another time on the same day to the same tech.\n TECH_SAME_DAY_APPOINTMENT_REMOVAL = \"TECH_SAME_DAY_APPOINTMENT_REMOVAL\", // An appointment was removed from a tech's schedule (the appointment was canceled, rescheduled to a different day, or reassigned to a different tech).\n TECH_SAME_DAY_APPOINTMENT_ADDITION = \"TECH_SAME_DAY_APPOINTMENT_ADDITION\", // An appointment was added to a tech's schedule (same-day appointment booking/rescheduling, or reassigned from a different tech).\n REQUISITION_REUPLOADED = \"REQUISITION_REUPLOADED\",\n}\n\n\nexport type ModelSMSConditionInput = {\n type?: ModelSMSTypeInput | null,\n contextJSON?: ModelStringInput | null,\n ttl?: ModelIntInput | null,\n and?: Array< ModelSMSConditionInput | null > | null,\n or?: Array< ModelSMSConditionInput | null > | null,\n not?: ModelSMSConditionInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n};\n\nexport type ModelSMSTypeInput = {\n eq?: SMSType | null,\n ne?: SMSType | null,\n};\n\nexport type SMS = {\n __typename: \"SMS\",\n id: string,\n type: SMSType,\n contextJSON: string,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n};\n\nexport type BookAppointmentInput = {\n appointmentID: string,\n encounterIDs?: Array< string > | null,\n promoCode?: string | null,\n start?: string | null,\n end?: string | null,\n shouldDeleteAppointmentIfUnbookable?: boolean | null,\n rescheduleReason?: AppointmentRescheduleReason | null,\n commentsFromPartnerAboutReschedule?: string | null,\n commentsFromSchedulerAboutReschedule?: string | null,\n};\n\nexport enum AppointmentRescheduleReason {\n PATIENT_FAMILY_EMERGENCY = \"PATIENT_FAMILY_EMERGENCY\", // Reasons that are related to patient scheduling conflict\n PATIENT_HOSPITALIZED = \"PATIENT_HOSPITALIZED\",\n PATIENT_OR_CAREGIVER_OUT_OF_TOWN = \"PATIENT_OR_CAREGIVER_OUT_OF_TOWN\",\n PATIENT_SICK = \"PATIENT_SICK\",\n PATIENT_FASTING_FORGOTTEN = \"PATIENT_FASTING_FORGOTTEN\", // Reasons related to non-adherence from patient\n PATIENT_INSUFFICIENT_APPOINTMENT_INFO = \"PATIENT_INSUFFICIENT_APPOINTMENT_INFO\",\n PATIENT_URINATION_ISSUE = \"PATIENT_URINATION_ISSUE\",\n PATIENT_CHEMOTHEAPY_ABSTENTION_MISSED = \"PATIENT_CHEMOTHEAPY_ABSTENTION_MISSED\",\n TECH_CAR_ISSUE = \"TECH_CAR_ISSUE\", // Reasons related to tech or remote tech unavailability\n TECH_MEETING_OR_TRAINING = \"TECH_MEETING_OR_TRAINING\",\n TECH_LEFT_REGION = \"TECH_LEFT_REGION\",\n TECH_PREVIOUS_VISIT_WENT_OVER = \"TECH_PREVIOUS_VISIT_WENT_OVER\",\n TECH_REASSIGNMENT_CORRECTION = \"TECH_REASSIGNMENT_CORRECTION\",\n TECH_REGION_CLOSURE = \"TECH_REGION_CLOSURE\",\n TECH_SICK = \"TECH_SICK\",\n TECH_SUPPLIES_MISSING = \"TECH_SUPPLIES_MISSING\",\n TECH_TRAFFIC_ISSUES = \"TECH_TRAFFIC_ISSUES\",\n TECH_TRANSFERRING_APPOINTMENT = \"TECH_TRANSFERRING_APPOINTMENT\",\n TECH_TURNOVER = \"TECH_TURNOVER\",\n TECH_UNPLANNED_PTO = \"TECH_UNPLANNED_PTO\",\n TECH_WEATHER_ISSUES = \"TECH_WEATHER_ISSUES\",\n REMOTE_TECH_MEETING_OR_TRAINING = \"REMOTE_TECH_MEETING_OR_TRAINING\",\n REMOTE_TECH_NO_LICENSE_IN_REGION = \"REMOTE_TECH_NO_LICENSE_IN_REGION\",\n REMOTE_TECH_PREVIOUS_VISIT_WENT_OVER = \"REMOTE_TECH_PREVIOUS_VISIT_WENT_OVER\",\n REMOTE_TECH_REASSIGNMENT_CORRECTION = \"REMOTE_TECH_REASSIGNMENT_CORRECTION\",\n REMOTE_TECH_REGION_CLOSURE = \"REMOTE_TECH_REGION_CLOSURE\",\n REMOTE_TECH_SICK = \"REMOTE_TECH_SICK\",\n REMOTE_TECH_SUPPLIES_MISSING = \"REMOTE_TECH_SUPPLIES_MISSING\",\n REMOTE_TECH_TRANSFERRING_APPOINTMENT = \"REMOTE_TECH_TRANSFERRING_APPOINTMENT\",\n REMOTE_TECH_TURNOVER = \"REMOTE_TECH_TURNOVER\",\n REMOTE_TECH_UNPLANNED_PTO = \"REMOTE_TECH_UNPLANNED_PTO\",\n PATIENT_UNSAFE_ENVIRONMENT = \"PATIENT_UNSAFE_ENVIRONMENT\", // Reasons regarding safety violation\n PATIENT_KIT_MISSING = \"PATIENT_KIT_MISSING\", // Other reasons for rescheduling\n PATIENT_KIT_DAMAGED = \"PATIENT_KIT_DAMAGED\",\n PATIENT_KIT_STORED_INCORRECTLY = \"PATIENT_KIT_STORED_INCORRECTLY\",\n PATIENT_ADDRESS_UNSERVICEABLE = \"PATIENT_ADDRESS_UNSERVICEABLE\",\n OTHER = \"OTHER\",\n}\n\n\nexport type BookAppointmentResponse = {\n __typename: \"BookAppointmentResponse\",\n appointment?: Appointment | null,\n};\n\nexport type CancelAppointmentInput = {\n appointmentID: string,\n commentsFromSchedulerAboutCancellation?: string | null,\n commentsFromCoordinatorAboutCancellation?: string | null,\n cancelationReason?: AppointmentCancellationReason | null,\n initiator: Initiator,\n};\n\nexport enum AppointmentCancellationReason {\n PATIENT_SCHEDULING_CONFLICT = \"PATIENT_SCHEDULING_CONFLICT\",\n SERVICE_PROVIDED_ELSEWHERE = \"SERVICE_PROVIDED_ELSEWHERE\",\n SERVICE_NOT_NEEDED = \"SERVICE_NOT_NEEDED\",\n PATIENT_DECLINED_SERVICE = \"PATIENT_DECLINED_SERVICE\",\n INSUFFICIENT_APPOINTMENT_INFO = \"INSUFFICIENT_APPOINTMENT_INFO\",\n SPRINTER_AVAILABILITY = \"SPRINTER_AVAILABILITY\",\n PROTOCOL_VIOLATION = \"PROTOCOL_VIOLATION\",\n PATIENT_NO_SHOW = \"PATIENT_NO_SHOW\",\n PATIENT_DEHYDRATED = \"PATIENT_DEHYDRATED\",\n PATIENT_MISSING_APPOINTMENT_REQUIREMENTS = \"PATIENT_MISSING_APPOINTMENT_REQUIREMENTS\",\n OTHER = \"OTHER\",\n PATIENT_CANCELED_VIA_EMAIL = \"PATIENT_CANCELED_VIA_EMAIL\",\n PATIENT_RESCHEDULED_VIA_EMAIL = \"PATIENT_RESCHEDULED_VIA_EMAIL\",\n PATIENT_CANCELED_VIA_REFERRAL_FLOW = \"PATIENT_CANCELED_VIA_REFERRAL_FLOW\",\n PATIENT_DUPLICATE_SERVICE = \"PATIENT_DUPLICATE_SERVICE\", // Cancelation reasons related to patient scheduling conflict\n PATIENT_FAMILY_EMERGENCY = \"PATIENT_FAMILY_EMERGENCY\",\n PATIENT_HOSPITALIZED = \"PATIENT_HOSPITALIZED\",\n PATIENT_NO_LONGER_COVERED_BY_PLAN_OR_PROVIDER = \"PATIENT_NO_LONGER_COVERED_BY_PLAN_OR_PROVIDER\",\n PATIENT_OR_CAREGIVER_OUT_OF_TOWN = \"PATIENT_OR_CAREGIVER_OUT_OF_TOWN\",\n PATIENT_SICK = \"PATIENT_SICK\",\n PATIENT_HAS_SCAM_CONCERNS = \"PATIENT_HAS_SCAM_CONCERNS\",\n PATIENT_UNCOMFORTABLE_WITH_GUESTS = \"PATIENT_UNCOMFORTABLE_WITH_GUESTS\",\n PATIENT_DECLINED_CONSENT = \"PATIENT_DECLINED_CONSENT\", // Cancelation reasons related to patient non-adherence\n PATIENT_FASTING_FORGOTTEN = \"PATIENT_FASTING_FORGOTTEN\",\n PATIENT_HAS_INSUFFICIENT_APPOINTMENT_INFORMATION = \"PATIENT_HAS_INSUFFICIENT_APPOINTMENT_INFORMATION\",\n PATIENT_HAS_URINATION_ISSUE = \"PATIENT_HAS_URINATION_ISSUE\",\n PATIENT_MISSED_CHEMOTHERAPY_ABSTENTION = \"PATIENT_MISSED_CHEMOTHERAPY_ABSTENTION\",\n TECH_CAR_ISSUE = \"TECH_CAR_ISSUE\", // Cancelation reasons related to tech or remote tech availability\n TECH_MEETING_OR_TRAINING = \"TECH_MEETING_OR_TRAINING\",\n TECH_LEFT_REGION = \"TECH_LEFT_REGION\",\n TECH_PREVIOUS_VISIT_WENT_OVER = \"TECH_PREVIOUS_VISIT_WENT_OVER\",\n TECH_REASSIGNMENT_CORRECTION = \"TECH_REASSIGNMENT_CORRECTION\",\n TECH_REGION_CLOSURE = \"TECH_REGION_CLOSURE\",\n TECH_SICK = \"TECH_SICK\",\n TECH_SUPPLIES_MISSING = \"TECH_SUPPLIES_MISSING\",\n TECH_TRAFFIC_PROBLEMS = \"TECH_TRAFFIC_PROBLEMS\",\n TECH_TRANSFERRING_OF_APPOINTMENT = \"TECH_TRANSFERRING_OF_APPOINTMENT\",\n TECH_TURNOVER = \"TECH_TURNOVER\",\n TECH_UNPLANNED_PTO = \"TECH_UNPLANNED_PTO\",\n TECH_WEATHER_RELATED_ISSUES = \"TECH_WEATHER_RELATED_ISSUES\",\n REMOTE_TECH_MEETING_OR_TRAINING = \"REMOTE_TECH_MEETING_OR_TRAINING\",\n REMOTE_TECH_PREVIOUS_VISIT_WENT_OVER = \"REMOTE_TECH_PREVIOUS_VISIT_WENT_OVER\",\n REMOTE_TECH_REASSIGNMENT_CORRECTION = \"REMOTE_TECH_REASSIGNMENT_CORRECTION\",\n REMOTE_TECH_NO_LICENSURE_IN_REGION = \"REMOTE_TECH_NO_LICENSURE_IN_REGION\",\n REMOTE_TECH_REGION_CLOSURE = \"REMOTE_TECH_REGION_CLOSURE\",\n REMOTE_TECH_SICK = \"REMOTE_TECH_SICK\",\n REMOTE_TECH_SUPPLIES_MISSING = \"REMOTE_TECH_SUPPLIES_MISSING\",\n REMOTE_TECH_TRANSFERRING_OF_APPOINTMENT = \"REMOTE_TECH_TRANSFERRING_OF_APPOINTMENT\",\n REMOTE_TECH_TURNOVER = \"REMOTE_TECH_TURNOVER\",\n REMOTE_TECH_UNPLANNED_PTO = \"REMOTE_TECH_UNPLANNED_PTO\",\n PATIENT_COMBATIVE = \"PATIENT_COMBATIVE\", // Safety violations\n PATIENT_UNSAFE_ENVIRONMENT = \"PATIENT_UNSAFE_ENVIRONMENT\",\n PATIENT_KIT_MISSING = \"PATIENT_KIT_MISSING\", // Other reasons\n PATIENT_KIT_DAMAGED = \"PATIENT_KIT_DAMAGED\",\n PATIENT_KIT_STORED_INCORRECTLY = \"PATIENT_KIT_STORED_INCORRECTLY\",\n PATIENT_ADDRESS_UNSERVICEABLE = \"PATIENT_ADDRESS_UNSERVICEABLE\",\n APPOINTMENT_NOT_STARTED_IN_TIME = \"APPOINTMENT_NOT_STARTED_IN_TIME\",\n}\n\n\nexport enum Initiator {\n PARTNER = \"PARTNER\",\n PATIENT = \"PATIENT\",\n SPRINTER_HEALTH = \"SPRINTER_HEALTH\",\n OTHER = \"OTHER\",\n}\n\n\nexport type CancelAppointmentResponse = {\n __typename: \"CancelAppointmentResponse\",\n appointment?: Appointment | null,\n};\n\nexport type DeepCloneAndBookAppointmentInput = {\n appointmentID: string,\n start: string,\n end: string,\n};\n\nexport type DeepCloneAndBookAppointmentResponse = {\n __typename: \"DeepCloneAndBookAppointmentResponse\",\n appointment?: Appointment | null,\n};\n\nexport type AcceptAppointmentInput = {\n appointmentID: string,\n};\n\nexport type ValidateAndCompleteAppointmentResponse = {\n __typename: \"ValidateAndCompleteAppointmentResponse\",\n appointment?: Appointment | null,\n};\n\n// In the exportReports mutation, we specify the ReportsExportType, and may receive multiple Reports with different ReportTypes as the output.\n// Essentially, the ReportType specifies the type of a Report, unlike ReportsExportType which specifies the type of report(s) to be exported.\n// \n// For instance, a ReportsExportType can specify that the user wants the eye exam results for group of patients,\n// but the output of the exportReports may include multiple ReportTypes (e.g. images of the patients' eye, and a summary of all eye exams' resulting diagnosis codes)\n// \n// We prefix EXTERNAL if we plan to send the report to partners\n// We use BULK if the report contains bulk information\nexport enum ReportsExportType {\n EXTERNAL_BULK_ENCOUNTER_SERVICES_AND_COST_SUMMARY_FOR_INVOICING = \"EXTERNAL_BULK_ENCOUNTER_SERVICES_AND_COST_SUMMARY_FOR_INVOICING\",\n EXTERNAL_BULK_CARE_NAVIGATION_SERVICES_AND_COST_SUMMARY_FOR_INVOICING = \"EXTERNAL_BULK_CARE_NAVIGATION_SERVICES_AND_COST_SUMMARY_FOR_INVOICING\",\n EXTERNAL_BULK_LAB_SUPPLEMENTAL_DATA_SOURCE_FILE = \"EXTERNAL_BULK_LAB_SUPPLEMENTAL_DATA_SOURCE_FILE\",\n EXTERNAL_BULK_NONLAB_SUPPLEMENTAL_DATA_SOURCE_FILE = \"EXTERNAL_BULK_NONLAB_SUPPLEMENTAL_DATA_SOURCE_FILE\",\n EXTERNAL_BULK_CLAIMS_BILLING = \"EXTERNAL_BULK_CLAIMS_BILLING\",\n EXTERNAL_BULK_OPT_OUT_OF_ENGAGEMENT = \"EXTERNAL_BULK_OPT_OUT_OF_ENGAGEMENT\",\n EXTERNAL_ENGAGEMENT_REPORT = \"EXTERNAL_ENGAGEMENT_REPORT\",\n}\n\n\nexport enum ReportsExportDestination {\n GOOGLE_DRIVE = \"GOOGLE_DRIVE\",\n S3 = \"S3\",\n}\n\n\nexport type Report = {\n __typename: \"Report\",\n name?: string | null,\n reportURL?: string | null,\n reportS3Object?: S3Object | null,\n type: ReportType,\n};\n\nexport enum ReportType {\n EXTERNAL_BULK_CARE_NAVIGATION_SERVICES_AND_COST_SUMMARY_FOR_INVOICING = \"EXTERNAL_BULK_CARE_NAVIGATION_SERVICES_AND_COST_SUMMARY_FOR_INVOICING\",\n EXTERNAL_BULK_ENCOUNTER_SERVICES_AND_COST_SUMMARY_FOR_INVOICING = \"EXTERNAL_BULK_ENCOUNTER_SERVICES_AND_COST_SUMMARY_FOR_INVOICING\",\n EXTERNAL_BULK_CLAIMS_BILLING = \"EXTERNAL_BULK_CLAIMS_BILLING\",\n EXTERNAL_BULK_LAB_SUPPLEMENTAL_DATA_SOURCE_FILE = \"EXTERNAL_BULK_LAB_SUPPLEMENTAL_DATA_SOURCE_FILE\",\n EXTERNAL_BULK_NONLAB_SUPPLEMENTAL_DATA_SOURCE_FILE = \"EXTERNAL_BULK_NONLAB_SUPPLEMENTAL_DATA_SOURCE_FILE\",\n EXTERNAL_BULK_OPT_OUT_OF_ENGAGEMENT = \"EXTERNAL_BULK_OPT_OUT_OF_ENGAGEMENT\",\n EXTERNAL_ENGAGEMENT_REPORT = \"EXTERNAL_ENGAGEMENT_REPORT\",\n INTERNAL_BULK_UPSERT_LAB_RESULTS_AS_OBSERVATIONS_OUTPUT = \"INTERNAL_BULK_UPSERT_LAB_RESULTS_AS_OBSERVATIONS_OUTPUT\",\n INTERNAL_BULK_UPSERT_ELATION_BILLING_REPORT_PROCEDURE_CODES_OUTPUT = \"INTERNAL_BULK_UPSERT_ELATION_BILLING_REPORT_PROCEDURE_CODES_OUTPUT\",\n}\n\n\nexport enum DataImportType {\n INTERNAL_BULK_UPSERT_LAB_RESULTS_AS_OBSERVATIONS = \"INTERNAL_BULK_UPSERT_LAB_RESULTS_AS_OBSERVATIONS\",\n INTERNAL_BULK_UPSERT_ELATION_BILLING_REPORT_PROCEDURE_CODES = \"INTERNAL_BULK_UPSERT_ELATION_BILLING_REPORT_PROCEDURE_CODES\",\n}\n\n\nexport type GenerateStripeSetupIntentInput = {\n coordinatorID: string,\n promoCode?: string | null,\n productTypes: Array< ProductType >,\n};\n\nexport type GenerateStripeSetupIntentResponse = {\n __typename: \"GenerateStripeSetupIntentResponse\",\n clientSecret?: string | null,\n finalPrice?: number | null,\n strikethroughPrice?: number | null,\n};\n\nexport type RerouteAppointmentInput = {\n appointmentID: string,\n shouldAvoidCurrentTech: boolean,\n forceTechID?: string | null,\n};\n\nexport type ReviewPostAppointmentInput = {\n appointmentID: string,\n};\n\nexport type ReviewPostAppointmentResponse = {\n __typename: \"ReviewPostAppointmentResponse\",\n appointment?: Appointment | null,\n};\n\nexport type ReviewPreAppointmentInput = {\n appointmentID: string,\n requisitions?: Array< RequisitionInput > | null,\n};\n\nexport type ReviewPreAppointmentResponse = {\n __typename: \"ReviewPreAppointmentResponse\",\n appointment?: Appointment | null,\n};\n\nexport type UpdateEncounterServiceOutcomesInput = {\n encounterID: string,\n serviceOutcomes: Array< ServiceOutcomeInput >,\n};\n\nexport type UpdateEncounterServiceOutcomesResponse = {\n __typename: \"UpdateEncounterServiceOutcomesResponse\",\n appointmentID: string,\n hasFailedServices: boolean,\n hasSuccessfulServices: boolean,\n};\n\nexport type SaveEmailToContactForServiceExpansionInput = {\n email: string,\n location?: LocationInput | null,\n productType?: ProductType | null,\n};\n\nexport type SaveEmailToContactForServiceExpansionResponse = {\n __typename: \"SaveEmailToContactForServiceExpansionResponse\",\n _?: number | null,\n};\n\nexport type SendEFaxInput = {\n partnerOrganization: PartnerOrganization,\n document?: S3ObjectInput | null,\n uploadS3ObjectID: string,\n appointmentID: string,\n encounterID: string,\n};\n\nexport type SendEFaxResponse = {\n __typename: \"SendEFaxResponse\",\n result?: string | null,\n errorMessage?: string | null,\n sentAt?: string | null,\n};\n\nexport type SendEncounterSummaryToPractitionerInput = {\n document?: S3ObjectInput | null,\n uploadS3ObjectID: string,\n documentType: EncounterSummaryType,\n appointmentID: string,\n encounterID: string,\n};\n\nexport enum EncounterSummaryType {\n FAX = \"FAX\",\n EMAIL = \"EMAIL\",\n}\n\n\nexport type SendEncounterSummaryToPractitionerResponse = {\n __typename: \"SendEncounterSummaryToPractitionerResponse\",\n sentAt?: string | null,\n response?: string | null,\n errorMessage?: string | null,\n to?: Array< string | null > | null,\n};\n\nexport type SendEncounterSummaryEmailInput = {\n partnerOrganization: PartnerOrganization,\n document?: S3ObjectInput | null,\n uploadS3ObjectID: string,\n appointmentID: string,\n encounterID: string,\n};\n\nexport type SendEncounterSummaryEmailResponse = {\n __typename: \"SendEncounterSummaryEmailResponse\",\n sentAt?: string | null,\n response?: string | null,\n to?: Array< string | null > | null,\n};\n\nexport type StartCareNavigationEpisodeDetails = {\n id: string,\n group: CareNavigationGroup,\n onboardingQuestions?: Array< StartCareNavigationEpisodeDetailsQuestionAnswerPair > | null,\n parametersJSON?: string | null,\n};\n\nexport type StartCareNavigationEpisodeDetailsQuestionAnswerPair = {\n key: string,\n question: string,\n answer: string,\n};\n\nexport type RegisterPatientsInImageMoverInput = {\n appointmentID: string,\n};\n\nexport type UpdatePatientInImageMoverInput = {\n patientID: string,\n};\n\nexport type GenerateChecklistInput = {\n appointmentID: string,\n};\n\nexport type UpdateChecklistInput = {\n id: string,\n checklist: ChecklistInput,\n encounters?: Array< UpdateEncounterChecklistInput > | null,\n commentsFromTechAboutAppointment?: string | null,\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n commentsFromTechAboutSystem?: string | null,\n techCurrentPosition?: LocationPositionInput | null,\n};\n\nexport type UpdateEncounterChecklistInput = {\n encounterID: string,\n requisitions?: Array< RequisitionInput > | null,\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n commentsFromTechAboutEncounter?: string | null,\n patientEthnicity?: Ethnicity | null,\n patientRaces?: Array< Race > | null,\n patientSex?: Sex | null,\n patientGender?: Gender | null,\n patientPhone?: string | null,\n patientEmail?: string | null,\n patientHeightInInches?: number | null,\n patientWeightInPounds?: number | null,\n covid19Questions?: COVID19QuestionsInput | null,\n bloodCollectionDetails?: SpecimenCollectionDetailsInput | null,\n capillaryDrawCollectionDetails?: SpecimenCollectionDetailsInput | null,\n productTypes?: Array< ProductType > | null,\n serviceOutcomes?: Array< ServiceOutcomeInput > | null,\n};\n\nexport type UpdateTechAvailabilitiesInput = {\n techID: string,\n availabilityRules: Array< TimeRangeRuleInput >,\n};\n\nexport type UpdateTechAvailabilitiesResponse = {\n __typename: \"UpdateTechAvailabilitiesResponse\",\n tech?: Tech | null,\n conflictingAppointments?: Array | null,\n};\n\nexport type UpdateEncounterRequisitionInput = {\n encounterID: string,\n requisitionUploads: Array< S3ObjectInput >,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n};\n\nexport type UpdateEncounterRequisitionResponse = {\n __typename: \"UpdateEncounterRequisitionResponse\",\n appointment?: Appointment | null,\n encounter?: Encounter | null,\n};\n\nexport type UpdateEncounterDocumentsResponse = {\n __typename: \"UpdateEncounterDocumentsResponse\",\n appointment?: Appointment | null,\n encounter?: Encounter | null,\n};\n\nexport type UpdateTechServiceRegionAvailabilitiesInput = {\n techServiceRegionID: string,\n availabilityRules: Array< TimeRangeRuleInput >,\n};\n\nexport type UpdateTechServiceRegionAvailabilitiesResponse = {\n __typename: \"UpdateTechServiceRegionAvailabilitiesResponse\",\n techServiceRegion?: TechServiceRegion | null,\n conflictingAppointments?: Array | null,\n};\n\nexport type UpdateTechAllAvailabilitiesInput = {\n techID: string,\n techAvailabilityRules: Array< TimeRangeRuleInput >,\n serviceRegionsAvailabilityRules: Array< ServiceRegionAvailabilityRulesInput >,\n serviceTypesAvailabilityRules: Array< ServiceTypeAvailabilityRulesInput >,\n write: boolean,\n};\n\nexport type ServiceRegionAvailabilityRulesInput = {\n serviceRegionName: string,\n availabilityRules: Array< TimeRangeRuleInput >,\n};\n\nexport type UpdateTechAllAvailabilitiesResponse = {\n __typename: \"UpdateTechAllAvailabilitiesResponse\",\n conflictingAppointments?: Array | null,\n};\n\nexport type ConvertCoordinatorToPartnerCSRInput = {\n coordinatorID: string,\n partnerOrganization: PartnerOrganization,\n};\n\nexport type ConvertCoordinatorToPartnerCSRResponse = {\n __typename: \"ConvertCoordinatorToPartnerCSRResponse\",\n coordinator?: Coordinator | null,\n};\n\nexport type GenerateRequisitionsForPrintingInput = {\n techID: string,\n date: string,\n};\n\nexport type GenerateRequisitionsForPrintingResponse = {\n __typename: \"GenerateRequisitionsForPrintingResponse\",\n output?: S3Object | null,\n url?: string | null,\n};\n\nexport type GenerateEncounterSummaryInput = {\n appointmentID: string,\n encounterID: string,\n};\n\nexport type GenerateEncounterSummaryResponse = {\n __typename: \"GenerateEncounterSummaryResponse\",\n s3ObjectID: string,\n identityID: string,\n bucket?: string | null,\n key: string,\n type?: EncounterSummaryType | null,\n};\n\nexport type GenerateTestFaxPDFInput = {\n appointmentID?: string | null,\n encounterID?: string | null,\n practitionerID?: string | null,\n faxType: FaxType,\n verificationCount?: number | null,\n};\n\nexport enum FaxType {\n COVER_SHEET = \"COVER_SHEET\",\n PROVIDER_VALIDATION = \"PROVIDER_VALIDATION\",\n ENCOUNTER_SUMMARY = \"ENCOUNTER_SUMMARY\",\n ENCOUNTER_SUMMARY_WITH_NEW_LAB_RESULTS = \"ENCOUNTER_SUMMARY_WITH_NEW_LAB_RESULTS\",\n CARE_NAVIGATION_EPISODE_SUMMARY = \"CARE_NAVIGATION_EPISODE_SUMMARY\",\n COLOGUARD_KIT_ORDER = \"COLOGUARD_KIT_ORDER\",\n}\n\n\nexport type GenerateTestFaxPDFResponse = {\n __typename: \"GenerateTestFaxPDFResponse\",\n outputPresignedURL: string,\n};\n\nexport type MergeAppointmentsInput = {\n appointmentIDToBeMergedWith: string,\n appointmentIDToMergeAndDiscard: string,\n};\n\nexport type MergeAppointmentsResponse = {\n __typename: \"MergeAppointmentsResponse\",\n appointment?: Appointment | null,\n};\n\nexport type GenerateMedicareBillingTemplateInput = {\n start: string,\n end: string,\n};\n\nexport type GenerateMedicareBillingTemplateResponse = {\n __typename: \"GenerateMedicareBillingTemplateResponse\",\n billingCSV: string,\n};\n\nexport type RemovePatientFromAppointmentInput = {\n appointmentID: string,\n productType: ProductType,\n patientID?: string | null,\n};\n\nexport type RemovePatientFromAppointmentResponse = {\n __typename: \"RemovePatientFromAppointmentResponse\",\n appointment?: Appointment | null,\n};\n\nexport type InviteUserToPartnerOrganizationInput = {\n email: string,\n partnerOrganization: PartnerOrganization,\n managePartnerUsersAuthorization: ManagePartnerUsersAuthorization,\n};\n\nexport type InviteUserToPartnerOrganizationResponse = {\n __typename: \"InviteUserToPartnerOrganizationResponse\",\n invite?: PartnerUserInvite | null,\n};\n\nexport type ChangeUserAccountStatusOrPermissionInput = {\n coordinatorID: string,\n action: ChangeUserAccountStatusOrPermissionAction,\n};\n\nexport enum ChangeUserAccountStatusOrPermissionAction {\n ACTIVATE = \"ACTIVATE\",\n DEACTIVATE = \"DEACTIVATE\",\n TO_BASIC_USER = \"TO_BASIC_USER\",\n TO_ADMIN_USER = \"TO_ADMIN_USER\",\n}\n\n\nexport type ChangeUserAccountStatusOrPermissionResponse = {\n __typename: \"ChangeUserAccountStatusOrPermissionResponse\",\n coordinator: Coordinator,\n};\n\nexport type ExpirePartnerUserInviteInput = {\n inviteID: string,\n};\n\nexport type ExpirePartnerUserInviteResponse = {\n __typename: \"ExpirePartnerUserInviteResponse\",\n invite: PartnerUserInvite,\n};\n\nexport type UpdateContainerSpecimenVolumesInput = {\n externalID: string,\n labOrganization: LabOrganization,\n isUpdatingTestToNonCombinable: boolean,\n minContainerCountAndNameArray: Array< MinContainerCountAndName | null >,\n containerCategory?: SpecimenContainerCategory | null,\n};\n\nexport type MinContainerCountAndName = {\n minContainerCount?: number | null,\n containerName?: string | null,\n};\n\nexport type UpdateContainerSpecimenVolumesResponse = {\n __typename: \"UpdateContainerSpecimenVolumesResponse\",\n id?: string | null,\n};\n\nexport type CreateZendeskTicketInput = {\n ticket: ZendeskTicketCreateModel,\n requesterID?: string | null,\n appointmentID?: string | null,\n // Should be in the custom_fields in zendesk ticket; needs the category id\n category?: string | null,\n formID?: string | null,\n};\n\nexport type ZendeskTicketCreateModel = {\n comment: ZendeskTicketCommentCreateModel,\n external_id?: string | null,\n type?: ZendeskTicketType | null,\n subject?: string | null,\n raw_subject?: string | null,\n priority?: ZendeskTicketPriority | null,\n status?: ZendeskTicketStatus | null,\n recipient?: string | null,\n requester_id?: number | null,\n requester?: ZendeskTicketRequesterAnonymous | null,\n submitter_id?: number | null,\n assignee_id?: number | null,\n organization_id?: number | null,\n group_id?: number | null,\n collaborator_ids?: Array< number > | null,\n follower_ids?: Array< number > | null,\n email_cc_ids?: Array< number > | null,\n forum_topic_id?: number | null,\n problem_id?: number | null,\n due_at?: string | null,\n tags?: Array< string > | null,\n custom_fields?: Array< ZendeskTicketField > | null,\n fields?: Array< ZendeskTicketField > | null,\n via_followup_source_id?: number | null,\n macro_ids?: Array< number > | null,\n ticket_form_id?: number | null,\n brand_id?: number | null,\n};\n\nexport type ZendeskTicketCommentCreateModel = {\n url?: string | null,\n request_id?: number | null,\n body?: string | null,\n html_body?: string | null,\n public?: boolean | null,\n author_id?: number | null,\n uploads?: Array< string > | null,\n};\n\nexport enum ZendeskTicketType {\n problem = \"problem\",\n incident = \"incident\",\n question = \"question\",\n task = \"task\",\n}\n\n\nexport enum ZendeskTicketPriority {\n urgent = \"urgent\",\n high = \"high\",\n normal = \"normal\",\n low = \"low\",\n}\n\n\nexport enum ZendeskTicketStatus {\n new = \"new\",\n open = \"open\",\n pending = \"pending\",\n hold = \"hold\",\n solved = \"solved\",\n closed = \"closed\",\n}\n\n\nexport type ZendeskTicketRequesterAnonymous = {\n name: string,\n email?: string | null,\n locale_id?: number | null,\n};\n\nexport type ZendeskTicketField = {\n id: number,\n value: string,\n};\n\nexport type CreateZendeskTicketResponse = {\n __typename: \"CreateZendeskTicketResponse\",\n id?: number | null,\n};\n\nexport type CreateReferralVerificationZendeskTicketInput = {\n partnerOrganization?: PartnerOrganization | null,\n brandCode?: string | null,\n phone: string,\n givenName: string,\n familyName: string,\n email?: string | null,\n DOB: string,\n};\n\nexport type CreateReferralVerificationZendeskTicketResponse = {\n __typename: \"CreateReferralVerificationZendeskTicketResponse\",\n _?: number | null,\n};\n\nexport type BookReferralInput = {\n referralID?: string | null,\n appointmentID?: string | null,\n partnerOrganization: PartnerOrganization,\n serviceTypes?: Array< ServiceType > | null,\n start: string,\n end: string,\n patientMailingAddress?: AddressInput | null,\n location?: LocationInput | null,\n guestJWT?: string | null,\n patientID?: string | null,\n utmMedium?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n primaryLanguageBCP47?: string | null,\n colorectalCancerScreeningAnswers?: QuestionnaireResponseInput | null,\n topicalFluoridePrescreeningAnswers?: QuestionnaireResponseInput | null,\n caregiverName?: HumanNameInput | null,\n visitType?: VisitType | null,\n};\n\nexport type BookReferralResponse = {\n __typename: \"BookReferralResponse\",\n appointment?: CustomAuthPartialAppointment | null,\n};\n\nexport type CustomAuthPartialAppointment = {\n __typename: \"CustomAuthPartialAppointment\",\n id: string,\n serviceTypes: Array< ServiceType >,\n productTypes: Array< ProductType >,\n start: string,\n end: string,\n location: Location,\n timezone: string,\n referralID?: string | null,\n status: AppointmentStatus,\n patientEncounterSummaryPresignedURL?: string | null,\n commentsFromCoordinatorAboutAppointment?: string | null,\n visitType: VisitType,\n};\n\nexport type CancelReferralBookingInput = {\n referralID?: string | null,\n appointmentID: string,\n commentsFromPatientAboutCancelation?: string | null,\n guestJWT?: string | null,\n patientID?: string | null,\n};\n\nexport type CancelReferralBookingResponse = {\n __typename: \"CancelReferralBookingResponse\",\n appointmentID?: string | null,\n};\n\nexport type UpdateReferralPatientInformationInput = {\n referralID?: string | null,\n partnerOrganization: PartnerOrganization,\n phone?: string | null,\n email?: string | null,\n observations?: Array< ObservationInput > | null,\n appointmentID: string,\n consentToContactForAppointmentBySMS: boolean,\n commentsFromCoordinatorAboutAppointment?: string | null,\n contraindicationsResponse?: string | null,\n guestJWT?: string | null,\n patientID?: string | null,\n};\n\nexport type UpdateReferralPatientInformationMutationResponse = {\n __typename: \"UpdateReferralPatientInformationMutationResponse\",\n patientID: string,\n phone?: string | null,\n email?: string | null,\n};\n\nexport type MarkFailedAllAppointmentServicesInput = {\n appointmentID: string,\n};\n\nexport type UpsertPatientAndCreateReferralInput = {\n patient: CreatePatientInput,\n referral: CreateReferralInput,\n};\n\nexport type UpsertPatientAndCreateReferralResponse = {\n __typename: \"UpsertPatientAndCreateReferralResponse\",\n patient?: Patient | null,\n referral?: Referral | null,\n};\n\nexport type CreateServiceRequestInput = {\n id: string,\n displayName: string,\n externalID: string,\n labOrganization: LabOrganization,\n minimumSpecimenVolume?: number | null,\n};\n\nexport type CreateServiceRequestResponse = {\n __typename: \"CreateServiceRequestResponse\",\n serviceRequestTypeID: string,\n};\n\nexport type OnboardTechInput = {\n email: string,\n phone: string,\n givenName: string,\n familyName: string,\n home: LocationInput,\n gender: Gender,\n isIneligibleForMatchmaking?: boolean | null,\n techIDToCloneAvailabilityFrom?: string | null,\n};\n\nexport type OnboardTechResponse = {\n __typename: \"OnboardTechResponse\",\n id: string,\n};\n\nexport type UpsertPractitionersInZendeskInput = {\n practitionerIDs: Array< string >,\n};\n\nexport type UpsertPractitionersInZendeskResponse = {\n __typename: \"UpsertPractitionersInZendeskResponse\",\n updatedUsers?: number | null,\n};\n\nexport type TriggerTestPatientCampaignStateUpdateInput = {\n state: PatientCampaignStateName,\n action: PatientCampaignAction,\n patientID: string,\n campaignName: CampaignName,\n consentToContactForMarketingSMS: ConsentInput,\n consentToContactForMarketingEmail: ConsentInput,\n consentToContactForMarketingPhone: ConsentInput,\n email?: string | null,\n phone?: string | null,\n primaryLanguageBCP47?: string | null,\n};\n\nexport enum PatientCampaignAction {\n OUTREACH_SMS_UNEXPECTED_RESPONSE = \"OUTREACH_SMS_UNEXPECTED_RESPONSE\",\n OUTREACH_SMS_MORE_INFO_RESPONSE = \"OUTREACH_SMS_MORE_INFO_RESPONSE\",\n OUTREACH_SMS_HELP_RESPONSE = \"OUTREACH_SMS_HELP_RESPONSE\",\n OUTREACH_EMAIL_UNEXPECTED_RESPONSE = \"OUTREACH_EMAIL_UNEXPECTED_RESPONSE\",\n UNSUBSCRIBE_TO_EMAIL = \"UNSUBSCRIBE_TO_EMAIL\",\n OPT_OUT_SMS = \"OPT_OUT_SMS\",\n OPT_OUT_PHONE = \"OPT_OUT_PHONE\",\n BOOK_APPOINTMENT = \"BOOK_APPOINTMENT\",\n DECLINE_SERVICES = \"DECLINE_SERVICES\",\n IS_INELIGIBLE = \"IS_INELIGIBLE\",\n REQUESTED_INFORMATION = \"REQUESTED_INFORMATION\",\n LEFT_VOICEMAIL = \"LEFT_VOICEMAIL\",\n NO_VM_VM_NOT_SET_UP = \"NO_VM_VM_NOT_SET_UP\",\n HUNG_UP = \"HUNG_UP\",\n REQUESTED_CALLBACK = \"REQUESTED_CALLBACK\",\n PATIENT_WILL_SCHEDULE_LATER = \"PATIENT_WILL_SCHEDULE_LATER\",\n FORCE_MOVE_TO_STATE = \"FORCE_MOVE_TO_STATE\", // Moves the patient directly to a different campaign state with logging of the transition\n QUEUE_PHONE = \"QUEUE_PHONE\",\n SEND_EMAIL = \"SEND_EMAIL\",\n SEND_SMS = \"SEND_SMS\",\n END_OUTREACH = \"END_OUTREACH\", // Moves a patient to the next stale state.\n TRICKLE_INTO_CAMPAIGN = \"TRICKLE_INTO_CAMPAIGN\",\n TRICKLE_INTO_CAMPAIGN_STALE = \"TRICKLE_INTO_CAMPAIGN_STALE\",\n KICK_BACK_INTO_CAMPAIGN = \"KICK_BACK_INTO_CAMPAIGN\",\n REACTIVATE = \"REACTIVATE\",\n TERMINATE_CAMPAIGN = \"TERMINATE_CAMPAIGN\",\n}\n\n\nexport type TriggerTestPatientCampaignStateUpdateResponse = {\n __typename: \"TriggerTestPatientCampaignStateUpdateResponse\",\n result: string,\n};\n\nexport type UnsubscribeFromEmailNotificationsInput = {\n patientCampaignStateID: string,\n email?: string | null,\n};\n\nexport type UnsubscribeFromEmailNotificationsResponse = {\n __typename: \"UnsubscribeFromEmailNotificationsResponse\",\n isUnsubscribed: boolean,\n};\n\nexport type SendPractitionersVerificationFaxesInput = {\n NPIs: Array< string >,\n partnerOrganization: PartnerOrganization,\n};\n\nexport type SendPractitionersVerificationFaxesResponse = {\n __typename: \"SendPractitionersVerificationFaxesResponse\",\n totalNPI: number,\n totalPractitionersToSendTo: number,\n totalFaxesToSend: number,\n totalFaxesSent: number,\n totalPractitionersSent: number,\n};\n\nexport type AutofillRequisitionFormInput = {\n encounterID: string,\n partnerOrganization: PartnerOrganization,\n};\n\nexport type AutofillRequisitionFormResponse = {\n __typename: \"AutofillRequisitionFormResponse\",\n encounter: Encounter,\n errors?: Array< string > | null,\n};\n\nexport type EscalateEncounterResponse = {\n __typename: \"EscalateEncounterResponse\",\n encounterID: string,\n};\n\nexport type UpdateTechInput = {\n id: string,\n name?: HumanNameInput | null,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n vehicle?: VehicleInput | null,\n serviceTypesAvailabilityRules?: Array< ServiceTypeAvailabilityRulesInput > | null,\n availabilityRules?: Array< TimeRangeRuleInput > | null,\n locations?: Array< LocationInput > | null,\n profilePicture?: S3ObjectInput | null,\n profilePictureS3ObjectID?: string | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n};\n\nexport type UploadDNCListResponse = {\n __typename: \"UploadDNCListResponse\",\n ok: boolean,\n};\n\nexport enum PatientListType {\n GAP_LIST_DELTA = \"GAP_LIST_DELTA\",\n GAP_LIST_FULL = \"GAP_LIST_FULL\",\n ELIGIBILITY_LIST = \"ELIGIBILITY_LIST\",\n}\n\n\nexport type UploadPatientListResponse = {\n __typename: \"UploadPatientListResponse\",\n resultsURL?: string | null,\n};\n\nexport type PlaceLabOrderForEncounterResponse = {\n __typename: \"PlaceLabOrderForEncounterResponse\",\n encounter?: Encounter | null,\n errors?: Array< string > | null,\n};\n\nexport type GenerateQuestionnaireForEncounterResponse = {\n __typename: \"GenerateQuestionnaireForEncounterResponse\",\n questionnaire: QuestionnaireEmbedded,\n};\n\nexport type UpdateTrickleConfigurationResponse = {\n __typename: \"UpdateTrickleConfigurationResponse\",\n configuration: string,\n};\n\nexport type FetchTechConfirmationCallsResponse = {\n __typename: \"FetchTechConfirmationCallsResponse\",\n appointmentIDsForConfirmationCalls: Array< string >,\n};\n\nexport enum TechConfirmationCallDisposition {\n COMPLETED_CALL_APPOINTMENT_CONFIRMED = \"COMPLETED_CALL_APPOINTMENT_CONFIRMED\",\n COMPLETED_CALL_APPOINTMENT_RESCHEDULED = \"COMPLETED_CALL_APPOINTMENT_RESCHEDULED\",\n COMPLETED_CALL_APPOINTMENT_CANCELED = \"COMPLETED_CALL_APPOINTMENT_CANCELED\",\n ATTEMPTED_CALL_LEFT_VOICEMAIL = \"ATTEMPTED_CALL_LEFT_VOICEMAIL\",\n ATTEMPTED_CALL_FAILED_WRONG_NUMBER = \"ATTEMPTED_CALL_FAILED_WRONG_NUMBER\",\n ATTEMPTED_CALL_FAILED_LINE_DISCONNECTED = \"ATTEMPTED_CALL_FAILED_LINE_DISCONNECTED\",\n ATTEMPTED_CALL_FAILED_NO_ANSWER = \"ATTEMPTED_CALL_FAILED_NO_ANSWER\",\n ATTEMPTED_CALL_FAILED_ANOTHER_PROBLEM = \"ATTEMPTED_CALL_FAILED_ANOTHER_PROBLEM\",\n}\n\n\nexport type CompleteTechConfirmationMutationResponse = {\n __typename: \"CompleteTechConfirmationMutationResponse\",\n status: string,\n};\n\nexport type PublishCMSEnglishContentResponse = {\n __typename: \"PublishCMSEnglishContentResponse\",\n pullRequestCreationSuccess: boolean,\n lokaliseTaskCreationSuccess: boolean,\n slackNotificationSuccess: boolean,\n};\n\nexport type ModelSerialCounterFilterInput = {\n type?: ModelSerialCounterTypeInput | null,\n serialValue?: ModelIntInput | null,\n id?: ModelIDInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelSerialCounterFilterInput | null > | null,\n or?: Array< ModelSerialCounterFilterInput | null > | null,\n not?: ModelSerialCounterFilterInput | null,\n};\n\nexport type ModelSerialCounterTypeInput = {\n eq?: SerialCounterType | null,\n ne?: SerialCounterType | null,\n};\n\nexport enum ModelSortDirection {\n ASC = \"ASC\",\n DESC = \"DESC\",\n}\n\n\nexport type ModelSerialCounterConnection = {\n __typename: \"ModelSerialCounterConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type ModelAppointmentFilterInput = {\n id?: ModelIDInput | null,\n status?: ModelAppointmentStatusInput | null,\n isFailed?: ModelBooleanInput | null,\n hasSuccessfulServices?: ModelBooleanInput | null,\n hasFailedServices?: ModelBooleanInput | null,\n needsRebooking?: ModelBooleanInput | null,\n isPreReviewed?: ModelBooleanInput | null,\n isPostReviewed?: ModelBooleanInput | null,\n isEscalated?: ModelBooleanInput | null,\n start?: ModelStringInput | null,\n end?: ModelStringInput | null,\n techID?: ModelIDInput | null,\n remoteTechID?: ModelIDInput | null,\n remoteTechMatchState?: ModelRemoteTechMatchStateInput | null,\n allocatedRemoteTechID?: ModelIDInput | null,\n coordinatorID?: ModelIDInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n postReviewType?: ModelPostReviewTypeInput | null,\n serviceRegionName?: ModelStringInput | null,\n geographicalState?: ModelStringInput | null,\n timezone?: ModelStringInput | null,\n avoidTechIDs?: ModelIDInput | null,\n lastBookedAt?: ModelIntInput | null,\n statusUpdatedAt?: ModelIntInput | null,\n stripeCustomerID?: ModelStringInput | null,\n stripePriceToCharge?: ModelIntInput | null,\n hasPetsAtLocation?: ModelBooleanInput | null,\n commentsFromCoordinatorAboutAppointment?: ModelStringInput | null,\n commentsFromTechAboutAppointment?: ModelStringInput | null,\n commentsFromTechAboutSystem?: ModelStringInput | null,\n commentsFromTechAboutAppointmentFailure?: ModelStringInput | null,\n commentsFromSchedulerAboutAppointmentFailure?: ModelStringInput | null,\n commentsFromSchedulerAboutCancellation?: ModelStringInput | null,\n partnerOrganizationBookingURL?: ModelStringInput | null,\n overrideMode?: ModelAppointmentOverrideModeInput | null,\n sharedSlotRank?: ModelFloatInput | null,\n estimatedServiceDurationSeconds?: ModelIntInput | null,\n stripeInvoiceLineItemIDs?: ModelStringInput | null,\n stripePaymentIntentIDs?: ModelStringInput | null,\n hasPatientConfirmed?: ModelBooleanInput | null,\n isGuestBooked?: ModelBooleanInput | null,\n referralID?: ModelIDInput | null,\n historyJSON?: ModelStringInput | null,\n externalID?: ModelIDInput | null,\n clonedFromAppointmentID?: ModelIDInput | null,\n remoteTechQualificationTypeRequired?: ModelQualificationTypeInput | null,\n markedReadyForRemoteTechAt?: ModelStringInput | null,\n visitType?: ModelVisitTypeInput | null,\n remoteConnectionMethod?: ModelRemoteConnectionMethodInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelAppointmentFilterInput | null > | null,\n or?: Array< ModelAppointmentFilterInput | null > | null,\n not?: ModelAppointmentFilterInput | null,\n};\n\nexport type ModelStringKeyConditionInput = {\n eq?: string | null,\n le?: string | null,\n lt?: string | null,\n ge?: string | null,\n gt?: string | null,\n between?: Array< string | null > | null,\n beginsWith?: string | null,\n};\n\nexport type ModelIDKeyConditionInput = {\n eq?: string | null,\n le?: string | null,\n lt?: string | null,\n ge?: string | null,\n gt?: string | null,\n between?: Array< string | null > | null,\n beginsWith?: string | null,\n};\n\nexport type SearchableAppointmentFilterInput = {\n id?: SearchableIDFilterInput | null,\n start?: SearchableStringFilterInput | null,\n end?: SearchableStringFilterInput | null,\n techID?: SearchableIDFilterInput | null,\n coordinatorID?: SearchableIDFilterInput | null,\n serviceRegionName?: SearchableStringFilterInput | null,\n geographicalState?: SearchableStringFilterInput | null,\n avoidTechIDs?: SearchableIDFilterInput | null,\n lastBookedAt?: SearchableIntFilterInput | null,\n statusUpdatedAt?: SearchableIntFilterInput | null,\n stripeCustomerID?: SearchableStringFilterInput | null,\n stripePriceToCharge?: SearchableIntFilterInput | null,\n hasPetsAtLocation?: SearchableBooleanFilterInput | null,\n commentsFromCoordinatorAboutAppointment?: SearchableStringFilterInput | null,\n commentsFromTechAboutAppointment?: SearchableStringFilterInput | null,\n commentsFromTechAboutSystem?: SearchableStringFilterInput | null,\n partnerOrganizationBookingURL?: SearchableStringFilterInput | null,\n sharedSlotRank?: SearchableFloatFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n status?: SearchableStringFilterInput | null,\n partnerOrganization?: SearchableStringFilterInput | null,\n overrideMode?: SearchableStringFilterInput | null,\n metroName?: SearchableStringFilterInput | null,\n isInProgress?: SearchableBooleanFilterInput | null,\n isCompleted?: SearchableBooleanFilterInput | null,\n encountersCount?: SearchableIntFilterInput | null,\n techFullName?: SearchableStringFilterInput | null,\n patientsFullNames?: SearchableStringFilterInput | null,\n patientsFullNamesJoined?: SearchableStringFilterInput | null,\n labOrganizations?: SearchableStringFilterInput | null,\n labOrganizationsJoined?: SearchableStringFilterInput | null,\n isCSRBooked?: SearchableBooleanFilterInput | null,\n payer?: SearchableStringFilterInput | null,\n partnerVertical?: SearchableStringFilterInput | null,\n partnerDisplayName?: SearchableStringFilterInput | null,\n partnerOrganizationGroup?: SearchableStringFilterInput | null,\n fullAddress?: SearchableStringFilterInput | null,\n appointmentSearchField?: SearchableStringFilterInput | null,\n and?: Array< SearchableAppointmentFilterInput | null > | null,\n or?: Array< SearchableAppointmentFilterInput | null > | null,\n not?: SearchableAppointmentFilterInput | null,\n};\n\nexport type SearchableIDFilterInput = {\n ne?: string | null,\n gt?: string | null,\n lt?: string | null,\n gte?: string | null,\n lte?: string | null,\n eq?: string | null,\n match?: string | null,\n matchPhrase?: string | null,\n matchPhrasePrefix?: string | null,\n multiMatch?: string | null,\n exists?: boolean | null,\n wildcard?: string | null,\n regexp?: string | null,\n range?: Array< string | null > | null,\n};\n\nexport type SearchableStringFilterInput = {\n ne?: string | null,\n gt?: string | null,\n lt?: string | null,\n gte?: string | null,\n lte?: string | null,\n eq?: string | null,\n match?: string | null,\n customMatch?: SearchableCustomMatchFilterInput | null,\n matchPhrase?: string | null,\n matchPhrasePrefix?: string | null,\n multiMatch?: string | null,\n exists?: boolean | null,\n wildcard?: string | null,\n regexp?: string | null,\n range?: Array< string | null > | null,\n};\n\nexport type SearchableCustomMatchFilterInput = {\n query: string,\n operator: string,\n};\n\nexport type SearchableIntFilterInput = {\n ne?: number | null,\n gt?: number | null,\n lt?: number | null,\n gte?: number | null,\n lte?: number | null,\n eq?: number | null,\n range?: Array< number | null > | null,\n};\n\nexport type SearchableBooleanFilterInput = {\n eq?: boolean | null,\n ne?: boolean | null,\n};\n\nexport type SearchableFloatFilterInput = {\n ne?: number | null,\n gt?: number | null,\n lt?: number | null,\n gte?: number | null,\n lte?: number | null,\n eq?: number | null,\n range?: Array< number | null > | null,\n};\n\nexport type SearchableAppointmentSortInput = {\n field?: SearchableAppointmentSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableAppointmentSortableFields {\n id = \"id\",\n isFailed = \"isFailed\",\n hasSuccessfulServices = \"hasSuccessfulServices\",\n hasFailedServices = \"hasFailedServices\",\n needsRebooking = \"needsRebooking\",\n isPreReviewed = \"isPreReviewed\",\n isPostReviewed = \"isPostReviewed\",\n isEscalated = \"isEscalated\",\n start = \"start\",\n end = \"end\",\n techID = \"techID\",\n remoteTechID = \"remoteTechID\",\n allocatedRemoteTechID = \"allocatedRemoteTechID\",\n coordinatorID = \"coordinatorID\",\n serviceRegionName = \"serviceRegionName\",\n geographicalState = \"geographicalState\",\n timezone = \"timezone\",\n avoidTechIDs = \"avoidTechIDs\",\n lastBookedAt = \"lastBookedAt\",\n statusUpdatedAt = \"statusUpdatedAt\",\n stripeCustomerID = \"stripeCustomerID\",\n stripePriceToCharge = \"stripePriceToCharge\",\n hasPetsAtLocation = \"hasPetsAtLocation\",\n commentsFromCoordinatorAboutAppointment = \"commentsFromCoordinatorAboutAppointment\",\n commentsFromTechAboutAppointment = \"commentsFromTechAboutAppointment\",\n commentsFromTechAboutSystem = \"commentsFromTechAboutSystem\",\n commentsFromTechAboutAppointmentFailure = \"commentsFromTechAboutAppointmentFailure\",\n commentsFromSchedulerAboutAppointmentFailure = \"commentsFromSchedulerAboutAppointmentFailure\",\n commentsFromSchedulerAboutCancellation = \"commentsFromSchedulerAboutCancellation\",\n partnerOrganizationBookingURL = \"partnerOrganizationBookingURL\",\n sharedSlotRank = \"sharedSlotRank\",\n estimatedServiceDurationSeconds = \"estimatedServiceDurationSeconds\",\n stripeInvoiceLineItemIDs = \"stripeInvoiceLineItemIDs\",\n stripePaymentIntentIDs = \"stripePaymentIntentIDs\",\n hasPatientConfirmed = \"hasPatientConfirmed\",\n isGuestBooked = \"isGuestBooked\",\n referralID = \"referralID\",\n historyJSON = \"historyJSON\",\n externalID = \"externalID\",\n clonedFromAppointmentID = \"clonedFromAppointmentID\",\n markedReadyForRemoteTechAt = \"markedReadyForRemoteTechAt\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport enum SearchableSortDirection {\n asc = \"asc\",\n desc = \"desc\",\n}\n\n\nexport type SearchableAppointmentAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableAppointmentAggregateField,\n};\n\nexport enum SearchableAggregateType {\n terms = \"terms\",\n avg = \"avg\",\n min = \"min\",\n max = \"max\",\n sum = \"sum\",\n cardinality = \"cardinality\",\n}\n\n\nexport enum SearchableAppointmentAggregateField {\n id = \"id\",\n status = \"status\",\n isFailed = \"isFailed\",\n hasSuccessfulServices = \"hasSuccessfulServices\",\n hasFailedServices = \"hasFailedServices\",\n needsRebooking = \"needsRebooking\",\n isPreReviewed = \"isPreReviewed\",\n isPostReviewed = \"isPostReviewed\",\n isEscalated = \"isEscalated\",\n start = \"start\",\n end = \"end\",\n techID = \"techID\",\n remoteTechID = \"remoteTechID\",\n remoteTechMatchState = \"remoteTechMatchState\",\n allocatedRemoteTechID = \"allocatedRemoteTechID\",\n coordinatorID = \"coordinatorID\",\n partnerOrganization = \"partnerOrganization\",\n postReviewType = \"postReviewType\",\n serviceRegionName = \"serviceRegionName\",\n geographicalState = \"geographicalState\",\n timezone = \"timezone\",\n avoidTechIDs = \"avoidTechIDs\",\n lastBookedAt = \"lastBookedAt\",\n statusUpdatedAt = \"statusUpdatedAt\",\n stripeCustomerID = \"stripeCustomerID\",\n stripePriceToCharge = \"stripePriceToCharge\",\n hasPetsAtLocation = \"hasPetsAtLocation\",\n commentsFromCoordinatorAboutAppointment = \"commentsFromCoordinatorAboutAppointment\",\n commentsFromTechAboutAppointment = \"commentsFromTechAboutAppointment\",\n commentsFromTechAboutSystem = \"commentsFromTechAboutSystem\",\n commentsFromTechAboutAppointmentFailure = \"commentsFromTechAboutAppointmentFailure\",\n commentsFromSchedulerAboutAppointmentFailure = \"commentsFromSchedulerAboutAppointmentFailure\",\n commentsFromSchedulerAboutCancellation = \"commentsFromSchedulerAboutCancellation\",\n partnerOrganizationBookingURL = \"partnerOrganizationBookingURL\",\n overrideMode = \"overrideMode\",\n sharedSlotRank = \"sharedSlotRank\",\n estimatedServiceDurationSeconds = \"estimatedServiceDurationSeconds\",\n stripeInvoiceLineItemIDs = \"stripeInvoiceLineItemIDs\",\n stripePaymentIntentIDs = \"stripePaymentIntentIDs\",\n hasPatientConfirmed = \"hasPatientConfirmed\",\n isGuestBooked = \"isGuestBooked\",\n referralID = \"referralID\",\n historyJSON = \"historyJSON\",\n externalID = \"externalID\",\n clonedFromAppointmentID = \"clonedFromAppointmentID\",\n remoteTechQualificationTypeRequired = \"remoteTechQualificationTypeRequired\",\n markedReadyForRemoteTechAt = \"markedReadyForRemoteTechAt\",\n visitType = \"visitType\",\n remoteConnectionMethod = \"remoteConnectionMethod\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableAppointmentConnection = {\n __typename: \"SearchableAppointmentConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type SearchableAggregateResult = {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result?: SearchableAggregateGenericResult | null,\n};\n\nexport type SearchableAggregateGenericResult = SearchableAggregateScalarResult | SearchableAggregateBucketResult\n\n\nexport type SearchableAggregateScalarResult = {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n};\n\nexport type SearchableAggregateBucketResult = {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array | null,\n};\n\nexport type SearchableAggregateBucketResultItem = {\n __typename: \"SearchableAggregateBucketResultItem\",\n key: string,\n doc_count: number,\n};\n\nexport type ModelEncounterFilterInput = {\n id?: ModelIDInput | null,\n appointmentID?: ModelIDInput | null,\n patientID?: ModelIDInput | null,\n coordinatorID?: ModelIDInput | null,\n techID?: ModelIDInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n requisitionUploadS3ObjectIDs?: ModelIDInput | null,\n commentsFromCoordinatorAboutPatient?: ModelStringInput | null,\n commentsFromSchedulerAboutEncounter?: ModelStringInput | null,\n commentsFromSchedulerToTechAboutEncounter?: ModelStringInput | null,\n commentsFromTechAboutEncounter?: ModelStringInput | null,\n commentsFromCustomerSupportAboutEncounter?: ModelStringInput | null,\n commentsFromSchedulerToPartnerAboutEncounter?: ModelStringInput | null,\n productTypes?: ModelProductTypeListInput | null,\n isMedicare?: ModelBooleanInput | null,\n isMedicareEligible?: ModelBooleanInput | null,\n wasPatientManuallyAdded?: ModelBooleanInput | null,\n patientEncounterSummaryLastSentAt?: ModelStringInput | null,\n cologuardOrderSuccessfullyPlacedAt?: ModelStringInput | null,\n hasPatientRequestedMailedResults?: ModelBooleanInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelEncounterFilterInput | null > | null,\n or?: Array< ModelEncounterFilterInput | null > | null,\n not?: ModelEncounterFilterInput | null,\n};\n\nexport type SearchableEncounterFilterInput = {\n id?: SearchableIDFilterInput | null,\n appointmentID?: SearchableIDFilterInput | null,\n patientID?: SearchableIDFilterInput | null,\n coordinatorID?: SearchableIDFilterInput | null,\n techID?: SearchableIDFilterInput | null,\n commentsFromCoordinatorAboutPatient?: SearchableStringFilterInput | null,\n commentsFromSchedulerToTechAboutEncounter?: SearchableStringFilterInput | null,\n commentsFromSchedulerToPartnerAboutEncounter?: SearchableStringFilterInput | null,\n commentsFromTechAboutEncounter?: SearchableStringFilterInput | null,\n isMedicare?: SearchableBooleanFilterInput | null,\n isMedicareEligible?: SearchableBooleanFilterInput | null,\n wasPatientManuallyAdded?: SearchableBooleanFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n partnerOrganization?: SearchableStringFilterInput | null,\n productTypes?: SearchableStringFilterInput | null,\n payer?: SearchableStringFilterInput | null,\n partnerVertical?: SearchableStringFilterInput | null,\n partnerDisplayName?: SearchableStringFilterInput | null,\n partnerOrganizationGroup?: SearchableStringFilterInput | null,\n isCSRBooked?: SearchableBooleanFilterInput | null,\n serviceRegionName?: SearchableStringFilterInput | null,\n metroName?: SearchableStringFilterInput | null,\n patientFullName?: SearchableStringFilterInput | null,\n techFullName?: SearchableStringFilterInput | null,\n and?: Array< SearchableEncounterFilterInput | null > | null,\n or?: Array< SearchableEncounterFilterInput | null > | null,\n not?: SearchableEncounterFilterInput | null,\n};\n\nexport type SearchableEncounterSortInput = {\n field?: SearchableEncounterSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableEncounterSortableFields {\n id = \"id\",\n appointmentID = \"appointmentID\",\n patientID = \"patientID\",\n coordinatorID = \"coordinatorID\",\n techID = \"techID\",\n requisitionUploadS3ObjectIDs = \"requisitionUploadS3ObjectIDs\",\n commentsFromCoordinatorAboutPatient = \"commentsFromCoordinatorAboutPatient\",\n commentsFromSchedulerAboutEncounter = \"commentsFromSchedulerAboutEncounter\",\n commentsFromSchedulerToTechAboutEncounter = \"commentsFromSchedulerToTechAboutEncounter\",\n commentsFromTechAboutEncounter = \"commentsFromTechAboutEncounter\",\n commentsFromCustomerSupportAboutEncounter = \"commentsFromCustomerSupportAboutEncounter\",\n commentsFromSchedulerToPartnerAboutEncounter = \"commentsFromSchedulerToPartnerAboutEncounter\",\n isMedicare = \"isMedicare\",\n isMedicareEligible = \"isMedicareEligible\",\n wasPatientManuallyAdded = \"wasPatientManuallyAdded\",\n patientEncounterSummaryLastSentAt = \"patientEncounterSummaryLastSentAt\",\n cologuardOrderSuccessfullyPlacedAt = \"cologuardOrderSuccessfullyPlacedAt\",\n hasPatientRequestedMailedResults = \"hasPatientRequestedMailedResults\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableEncounterAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableEncounterAggregateField,\n};\n\nexport enum SearchableEncounterAggregateField {\n id = \"id\",\n appointmentID = \"appointmentID\",\n patientID = \"patientID\",\n coordinatorID = \"coordinatorID\",\n techID = \"techID\",\n partnerOrganization = \"partnerOrganization\",\n requisitionUploadS3ObjectIDs = \"requisitionUploadS3ObjectIDs\",\n commentsFromCoordinatorAboutPatient = \"commentsFromCoordinatorAboutPatient\",\n commentsFromSchedulerAboutEncounter = \"commentsFromSchedulerAboutEncounter\",\n commentsFromSchedulerToTechAboutEncounter = \"commentsFromSchedulerToTechAboutEncounter\",\n commentsFromTechAboutEncounter = \"commentsFromTechAboutEncounter\",\n commentsFromCustomerSupportAboutEncounter = \"commentsFromCustomerSupportAboutEncounter\",\n commentsFromSchedulerToPartnerAboutEncounter = \"commentsFromSchedulerToPartnerAboutEncounter\",\n productTypes = \"productTypes\",\n isMedicare = \"isMedicare\",\n isMedicareEligible = \"isMedicareEligible\",\n wasPatientManuallyAdded = \"wasPatientManuallyAdded\",\n patientEncounterSummaryLastSentAt = \"patientEncounterSummaryLastSentAt\",\n cologuardOrderSuccessfullyPlacedAt = \"cologuardOrderSuccessfullyPlacedAt\",\n hasPatientRequestedMailedResults = \"hasPatientRequestedMailedResults\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableEncounterConnection = {\n __typename: \"SearchableEncounterConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelCareNavigationEpisodeFilterInput = {\n closedAt?: ModelStringInput | null,\n careNavigationGroup?: ModelCareNavigationGroupInput | null,\n patientID?: ModelIDInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n referralID?: ModelIDInput | null,\n zendeskTicketID?: ModelIntInput | null,\n createdAt?: ModelStringInput | null,\n id?: ModelIDInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelCareNavigationEpisodeFilterInput | null > | null,\n or?: Array< ModelCareNavigationEpisodeFilterInput | null > | null,\n not?: ModelCareNavigationEpisodeFilterInput | null,\n};\n\nexport type SearchableCareNavigationEpisodeFilterInput = {\n closedAt?: SearchableStringFilterInput | null,\n patientID?: SearchableIDFilterInput | null,\n referralID?: SearchableIDFilterInput | null,\n zendeskTicketID?: SearchableIntFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n id?: SearchableIDFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n careNavigationGroup?: SearchableStringFilterInput | null,\n partnerOrganization?: SearchableStringFilterInput | null,\n and?: Array< SearchableCareNavigationEpisodeFilterInput | null > | null,\n or?: Array< SearchableCareNavigationEpisodeFilterInput | null > | null,\n not?: SearchableCareNavigationEpisodeFilterInput | null,\n};\n\nexport type SearchableCareNavigationEpisodeSortInput = {\n field?: SearchableCareNavigationEpisodeSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableCareNavigationEpisodeSortableFields {\n closedAt = \"closedAt\",\n patientID = \"patientID\",\n referralID = \"referralID\",\n zendeskTicketID = \"zendeskTicketID\",\n createdAt = \"createdAt\",\n id = \"id\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableCareNavigationEpisodeAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableCareNavigationEpisodeAggregateField,\n};\n\nexport enum SearchableCareNavigationEpisodeAggregateField {\n closedAt = \"closedAt\",\n careNavigationGroup = \"careNavigationGroup\",\n patientID = \"patientID\",\n partnerOrganization = \"partnerOrganization\",\n referralID = \"referralID\",\n zendeskTicketID = \"zendeskTicketID\",\n createdAt = \"createdAt\",\n id = \"id\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableCareNavigationEpisodeConnection = {\n __typename: \"SearchableCareNavigationEpisodeConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelS3ObjectDataFilterInput = {\n id?: ModelIDInput | null,\n region?: ModelStringInput | null,\n bucket?: ModelStringInput | null,\n key?: ModelStringInput | null,\n identityID?: ModelStringInput | null,\n parentType?: ModelS3ObjectParentTypeInput | null,\n parentID?: ModelIDInput | null,\n contentType?: ModelStringInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelS3ObjectDataFilterInput | null > | null,\n or?: Array< ModelS3ObjectDataFilterInput | null > | null,\n not?: ModelS3ObjectDataFilterInput | null,\n};\n\nexport type ModelS3ObjectDataConnection = {\n __typename: \"ModelS3ObjectDataConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type SearchableS3ObjectDataFilterInput = {\n id?: SearchableIDFilterInput | null,\n region?: SearchableStringFilterInput | null,\n bucket?: SearchableStringFilterInput | null,\n key?: SearchableStringFilterInput | null,\n identityID?: SearchableStringFilterInput | null,\n parentID?: SearchableIDFilterInput | null,\n contentType?: SearchableStringFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n parentType?: SearchableStringFilterInput | null,\n and?: Array< SearchableS3ObjectDataFilterInput | null > | null,\n or?: Array< SearchableS3ObjectDataFilterInput | null > | null,\n not?: SearchableS3ObjectDataFilterInput | null,\n};\n\nexport type SearchableS3ObjectDataSortInput = {\n field?: SearchableS3ObjectDataSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableS3ObjectDataSortableFields {\n id = \"id\",\n region = \"region\",\n bucket = \"bucket\",\n key = \"key\",\n identityID = \"identityID\",\n parentID = \"parentID\",\n contentType = \"contentType\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableS3ObjectDataAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableS3ObjectDataAggregateField,\n};\n\nexport enum SearchableS3ObjectDataAggregateField {\n id = \"id\",\n region = \"region\",\n bucket = \"bucket\",\n key = \"key\",\n identityID = \"identityID\",\n parentType = \"parentType\",\n parentID = \"parentID\",\n contentType = \"contentType\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableS3ObjectDataConnection = {\n __typename: \"SearchableS3ObjectDataConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelPartnerUserInviteFilterInput = {\n id?: ModelIDInput | null,\n email?: ModelStringInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n status?: ModelPartnerUserInviteStatusInput | null,\n expiry?: ModelIntInput | null,\n ttl?: ModelIntInput | null,\n managePartnerUsersAuthorization?: ModelManagePartnerUsersAuthorizationInput | null,\n isArchived?: ModelBooleanInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelPartnerUserInviteFilterInput | null > | null,\n or?: Array< ModelPartnerUserInviteFilterInput | null > | null,\n not?: ModelPartnerUserInviteFilterInput | null,\n};\n\nexport type ModelPartnerUserInviteConnection = {\n __typename: \"ModelPartnerUserInviteConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type SearchablePartnerUserInviteFilterInput = {\n id?: SearchableIDFilterInput | null,\n email?: SearchableStringFilterInput | null,\n expiry?: SearchableIntFilterInput | null,\n ttl?: SearchableIntFilterInput | null,\n isArchived?: SearchableBooleanFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n partnerOrganization?: SearchableStringFilterInput | null,\n status?: SearchableStringFilterInput | null,\n managePartnerUsersAuthorization?: SearchableStringFilterInput | null,\n and?: Array< SearchablePartnerUserInviteFilterInput | null > | null,\n or?: Array< SearchablePartnerUserInviteFilterInput | null > | null,\n not?: SearchablePartnerUserInviteFilterInput | null,\n};\n\nexport type SearchablePartnerUserInviteSortInput = {\n field?: SearchablePartnerUserInviteSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchablePartnerUserInviteSortableFields {\n id = \"id\",\n email = \"email\",\n expiry = \"expiry\",\n ttl = \"ttl\",\n isArchived = \"isArchived\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchablePartnerUserInviteAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchablePartnerUserInviteAggregateField,\n};\n\nexport enum SearchablePartnerUserInviteAggregateField {\n id = \"id\",\n email = \"email\",\n partnerOrganization = \"partnerOrganization\",\n status = \"status\",\n expiry = \"expiry\",\n ttl = \"ttl\",\n managePartnerUsersAuthorization = \"managePartnerUsersAuthorization\",\n isArchived = \"isArchived\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchablePartnerUserInviteConnection = {\n __typename: \"SearchablePartnerUserInviteConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelPractitionerFilterInput = {\n id?: ModelIDInput | null,\n NPI?: ModelStringInput | null,\n practitionerGroupName?: ModelStringInput | null,\n phone?: ModelStringInput | null,\n email?: ModelStringInput | null,\n fax?: ModelStringInput | null,\n faxConfirmationStatus?: ModelFaxConfirmationStatusInput | null,\n faxLastConfirmedAt?: ModelStringInput | null,\n testFaxLastSentAt?: ModelStringInput | null,\n directTrustConfirmationStatus?: ModelDirectTrustConfirmationStatusInput | null,\n incorrectFaxes?: ModelStringInput | null,\n role?: ModelPractitionerRoleInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelPractitionerFilterInput | null > | null,\n or?: Array< ModelPractitionerFilterInput | null > | null,\n not?: ModelPractitionerFilterInput | null,\n};\n\nexport type ModelPractitionerConnection = {\n __typename: \"ModelPractitionerConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type SearchablePractitionerFilterInput = {\n NPI?: SearchableStringFilterInput | null,\n fullName?: SearchableStringFilterInput | null,\n practitionerGroupName?: SearchableStringFilterInput | null,\n fax?: SearchableStringFilterInput | null,\n phone?: SearchableStringFilterInput | null,\n role?: SearchableStringFilterInput | null,\n and?: Array< SearchablePractitionerFilterInput | null > | null,\n or?: Array< SearchablePractitionerFilterInput | null > | null,\n not?: SearchablePractitionerFilterInput | null,\n};\n\nexport type SearchablePractitionerSortInput = {\n field?: SearchablePractitionerSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchablePractitionerSortableFields {\n id = \"id\",\n NPI = \"NPI\",\n practitionerGroupName = \"practitionerGroupName\",\n phone = \"phone\",\n email = \"email\",\n fax = \"fax\",\n faxLastConfirmedAt = \"faxLastConfirmedAt\",\n testFaxLastSentAt = \"testFaxLastSentAt\",\n incorrectFaxes = \"incorrectFaxes\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchablePractitionerAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchablePractitionerAggregateField,\n};\n\nexport enum SearchablePractitionerAggregateField {\n id = \"id\",\n NPI = \"NPI\",\n practitionerGroupName = \"practitionerGroupName\",\n phone = \"phone\",\n email = \"email\",\n fax = \"fax\",\n faxConfirmationStatus = \"faxConfirmationStatus\",\n faxLastConfirmedAt = \"faxLastConfirmedAt\",\n testFaxLastSentAt = \"testFaxLastSentAt\",\n directTrustConfirmationStatus = \"directTrustConfirmationStatus\",\n incorrectFaxes = \"incorrectFaxes\",\n role = \"role\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchablePractitionerConnection = {\n __typename: \"SearchablePractitionerConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelTechFilterInput = {\n id?: ModelIDInput | null,\n gender?: ModelGenderInput | null,\n phone?: ModelStringInput | null,\n email?: ModelStringInput | null,\n serviceTypes?: ModelServiceTypeListInput | null,\n profilePictureS3ObjectID?: ModelIDInput | null,\n isActive?: ModelBooleanInput | null,\n biographyItems?: ModelStringInput | null,\n patientTestimonials?: ModelStringInput | null,\n partialAppointmentsForTeamAvailabilityJSON?: ModelStringInput | null,\n capabilities?: ModelTechCapabilityListInput | null,\n isIneligibleForMatchmaking?: ModelBooleanInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelTechFilterInput | null > | null,\n or?: Array< ModelTechFilterInput | null > | null,\n not?: ModelTechFilterInput | null,\n};\n\nexport type ModelTechConnection = {\n __typename: \"ModelTechConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type SearchableTechFilterInput = {\n id?: SearchableIDFilterInput | null,\n phone?: SearchableStringFilterInput | null,\n email?: SearchableStringFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n gender?: SearchableStringFilterInput | null,\n serviceTypes?: SearchableStringFilterInput | null,\n fullName?: SearchableStringFilterInput | null,\n and?: Array< SearchableTechFilterInput | null > | null,\n or?: Array< SearchableTechFilterInput | null > | null,\n not?: SearchableTechFilterInput | null,\n};\n\nexport type SearchableTechSortInput = {\n field?: SearchableTechSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableTechSortableFields {\n id = \"id\",\n phone = \"phone\",\n email = \"email\",\n profilePictureS3ObjectID = \"profilePictureS3ObjectID\",\n isActive = \"isActive\",\n biographyItems = \"biographyItems\",\n patientTestimonials = \"patientTestimonials\",\n partialAppointmentsForTeamAvailabilityJSON = \"partialAppointmentsForTeamAvailabilityJSON\",\n isIneligibleForMatchmaking = \"isIneligibleForMatchmaking\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableTechAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableTechAggregateField,\n};\n\nexport enum SearchableTechAggregateField {\n id = \"id\",\n gender = \"gender\",\n phone = \"phone\",\n email = \"email\",\n serviceTypes = \"serviceTypes\",\n profilePictureS3ObjectID = \"profilePictureS3ObjectID\",\n isActive = \"isActive\",\n biographyItems = \"biographyItems\",\n patientTestimonials = \"patientTestimonials\",\n partialAppointmentsForTeamAvailabilityJSON = \"partialAppointmentsForTeamAvailabilityJSON\",\n capabilities = \"capabilities\",\n isIneligibleForMatchmaking = \"isIneligibleForMatchmaking\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableTechConnection = {\n __typename: \"SearchableTechConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelTechServiceRegionFilterInput = {\n id?: ModelIDInput | null,\n techID?: ModelIDInput | null,\n serviceRegionName?: ModelStringInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelTechServiceRegionFilterInput | null > | null,\n or?: Array< ModelTechServiceRegionFilterInput | null > | null,\n not?: ModelTechServiceRegionFilterInput | null,\n};\n\nexport type SearchableTechServiceRegionFilterInput = {\n id?: SearchableIDFilterInput | null,\n techID?: SearchableIDFilterInput | null,\n serviceRegionName?: SearchableStringFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n metroName?: SearchableStringFilterInput | null,\n techFullName?: SearchableStringFilterInput | null,\n and?: Array< SearchableTechServiceRegionFilterInput | null > | null,\n or?: Array< SearchableTechServiceRegionFilterInput | null > | null,\n not?: SearchableTechServiceRegionFilterInput | null,\n};\n\nexport type SearchableTechServiceRegionSortInput = {\n field?: SearchableTechServiceRegionSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableTechServiceRegionSortableFields {\n id = \"id\",\n techID = \"techID\",\n serviceRegionName = \"serviceRegionName\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableTechServiceRegionAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableTechServiceRegionAggregateField,\n};\n\nexport enum SearchableTechServiceRegionAggregateField {\n id = \"id\",\n techID = \"techID\",\n serviceRegionName = \"serviceRegionName\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableTechServiceRegionConnection = {\n __typename: \"SearchableTechServiceRegionConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelRemoteTechFilterInput = {\n id?: ModelIDInput | null,\n email?: ModelStringInput | null,\n phone?: ModelStringInput | null,\n profilePictureS3ObjectID?: ModelIDInput | null,\n timezone?: ModelStringInput | null,\n isActive?: ModelBooleanInput | null,\n serviceTypes?: ModelServiceTypeInput | null,\n remoteVisitZoomLink?: ModelStringInput | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: ModelIDInput | null,\n partialAppointmentsForTeamAvailabilityJSON?: ModelStringInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelRemoteTechFilterInput | null > | null,\n or?: Array< ModelRemoteTechFilterInput | null > | null,\n not?: ModelRemoteTechFilterInput | null,\n};\n\nexport type ModelRemoteTechConnection = {\n __typename: \"ModelRemoteTechConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type SearchableRemoteTechFilterInput = {\n id?: SearchableIDFilterInput | null,\n email?: SearchableStringFilterInput | null,\n phone?: SearchableStringFilterInput | null,\n profilePictureS3ObjectID?: SearchableIDFilterInput | null,\n timezone?: SearchableStringFilterInput | null,\n isActive?: SearchableBooleanFilterInput | null,\n remoteVisitZoomLink?: SearchableStringFilterInput | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: SearchableIDFilterInput | null,\n partialAppointmentsForTeamAvailabilityJSON?: SearchableStringFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n serviceTypes?: SearchableStringFilterInput | null,\n and?: Array< SearchableRemoteTechFilterInput | null > | null,\n or?: Array< SearchableRemoteTechFilterInput | null > | null,\n not?: SearchableRemoteTechFilterInput | null,\n};\n\nexport type SearchableRemoteTechSortInput = {\n field?: SearchableRemoteTechSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableRemoteTechSortableFields {\n id = \"id\",\n email = \"email\",\n phone = \"phone\",\n profilePictureS3ObjectID = \"profilePictureS3ObjectID\",\n timezone = \"timezone\",\n isActive = \"isActive\",\n remoteVisitZoomLink = \"remoteVisitZoomLink\",\n remoteVisitZoomLinkQRCodeS3ObjectID = \"remoteVisitZoomLinkQRCodeS3ObjectID\",\n partialAppointmentsForTeamAvailabilityJSON = \"partialAppointmentsForTeamAvailabilityJSON\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableRemoteTechAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableRemoteTechAggregateField,\n};\n\nexport enum SearchableRemoteTechAggregateField {\n id = \"id\",\n email = \"email\",\n phone = \"phone\",\n profilePictureS3ObjectID = \"profilePictureS3ObjectID\",\n timezone = \"timezone\",\n isActive = \"isActive\",\n serviceTypes = \"serviceTypes\",\n remoteVisitZoomLink = \"remoteVisitZoomLink\",\n remoteVisitZoomLinkQRCodeS3ObjectID = \"remoteVisitZoomLinkQRCodeS3ObjectID\",\n partialAppointmentsForTeamAvailabilityJSON = \"partialAppointmentsForTeamAvailabilityJSON\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableRemoteTechConnection = {\n __typename: \"SearchableRemoteTechConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelCoordinatorFilterInput = {\n id?: ModelIDInput | null,\n authorizedTechIDs?: ModelIDInput | null,\n isCSR?: ModelBooleanInput | null,\n isActive?: ModelBooleanInput | null,\n managePartnerUsersAuthorization?: ModelManagePartnerUsersAuthorizationInput | null,\n authorizedPartnerOrganizations?: ModelPartnerOrganizationListInput | null,\n phone?: ModelStringInput | null,\n email?: ModelStringInput | null,\n billingCustomerID?: ModelStringInput | null,\n outstandingPartnerOrganizationBookingURLs?: ModelStringInput | null,\n stripeCustomerID?: ModelStringInput | null,\n isArchived?: ModelBooleanInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelCoordinatorFilterInput | null > | null,\n or?: Array< ModelCoordinatorFilterInput | null > | null,\n not?: ModelCoordinatorFilterInput | null,\n};\n\nexport type ModelCoordinatorConnection = {\n __typename: \"ModelCoordinatorConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type SearchableCoordinatorFilterInput = {\n id?: SearchableIDFilterInput | null,\n authorizedTechIDs?: SearchableIDFilterInput | null,\n isCSR?: SearchableBooleanFilterInput | null,\n phone?: SearchableStringFilterInput | null,\n email?: SearchableStringFilterInput | null,\n billingCustomerID?: SearchableStringFilterInput | null,\n outstandingPartnerOrganizationBookingURLs?: SearchableStringFilterInput | null,\n stripeCustomerID?: SearchableStringFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n authorizedPartnerOrganizations?: SearchableStringFilterInput | null,\n partnerOrganizationGroup?: SearchableStringFilterInput | null,\n fullName?: SearchableStringFilterInput | null,\n and?: Array< SearchableCoordinatorFilterInput | null > | null,\n or?: Array< SearchableCoordinatorFilterInput | null > | null,\n not?: SearchableCoordinatorFilterInput | null,\n};\n\nexport type SearchableCoordinatorSortInput = {\n field?: SearchableCoordinatorSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableCoordinatorSortableFields {\n id = \"id\",\n authorizedTechIDs = \"authorizedTechIDs\",\n isCSR = \"isCSR\",\n isActive = \"isActive\",\n phone = \"phone\",\n email = \"email\",\n billingCustomerID = \"billingCustomerID\",\n outstandingPartnerOrganizationBookingURLs = \"outstandingPartnerOrganizationBookingURLs\",\n stripeCustomerID = \"stripeCustomerID\",\n isArchived = \"isArchived\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableCoordinatorAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableCoordinatorAggregateField,\n};\n\nexport enum SearchableCoordinatorAggregateField {\n id = \"id\",\n authorizedTechIDs = \"authorizedTechIDs\",\n isCSR = \"isCSR\",\n isActive = \"isActive\",\n managePartnerUsersAuthorization = \"managePartnerUsersAuthorization\",\n authorizedPartnerOrganizations = \"authorizedPartnerOrganizations\",\n phone = \"phone\",\n email = \"email\",\n billingCustomerID = \"billingCustomerID\",\n outstandingPartnerOrganizationBookingURLs = \"outstandingPartnerOrganizationBookingURLs\",\n stripeCustomerID = \"stripeCustomerID\",\n isArchived = \"isArchived\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableCoordinatorConnection = {\n __typename: \"SearchableCoordinatorConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelPatientFilterInput = {\n id?: ModelIDInput | null,\n csrPartnerOrganization?: ModelPartnerOrganizationInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n coordinatorID?: ModelIDInput | null,\n medicareCardID?: ModelStringInput | null,\n imageMoverUserID?: ModelIDInput | null,\n externalID?: ModelStringInput | null,\n secondaryExternalID?: ModelStringInput | null,\n specimenLabelID?: ModelStringInput | null,\n qtMedicalPatientID?: ModelIDInput | null,\n planName?: ModelStringInput | null,\n diabeticType?: ModelDiabeticTypeInput | null,\n authorizedTechIDs?: ModelIDInput | null,\n isCoordinator?: ModelBooleanInput | null,\n phone?: ModelStringInput | null,\n email?: ModelStringInput | null,\n secondaryPhone?: ModelStringInput | null,\n birthdate?: ModelStringInput | null,\n sex?: ModelSexInput | null,\n gender?: ModelGenderInput | null,\n ethnicity?: ModelEthnicityInput | null,\n races?: ModelRaceListInput | null,\n passportNumber?: ModelStringInput | null,\n insuranceCardUploadFrontS3ObjectID?: ModelIDInput | null,\n insuranceCardUploadBackS3ObjectID?: ModelIDInput | null,\n medicareCardUploadFrontS3ObjectID?: ModelIDInput | null,\n medicareCardUploadBackS3ObjectID?: ModelIDInput | null,\n watchlistedAppointmentID?: ModelIDInput | null,\n responsiblePractitionerID?: ModelIDInput | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: ModelStringInput | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: ModelStringInput | null,\n suggestedAppointmentLocationAdditionalInformation?: ModelStringInput | null,\n preferredLanguage?: ModelStringInput | null,\n primaryLanguageBCP47?: ModelStringInput | null,\n secondaryLanguagesBCP47?: ModelStringInput | null,\n patientNumber?: ModelStringInput | null,\n latestGapListUploadID?: ModelStringInput | null,\n latestGapListRowJSON?: ModelStringInput | null,\n latestGapListPassthroughJSON?: ModelStringInput | null,\n brandCode?: ModelStringInput | null,\n population?: ModelPatientPopulationInput | null,\n elationID?: ModelStringInput | null,\n zusUPID?: ModelStringInput | null,\n zusSprinterHealthPatientRecordID?: ModelStringInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelPatientFilterInput | null > | null,\n or?: Array< ModelPatientFilterInput | null > | null,\n not?: ModelPatientFilterInput | null,\n};\n\nexport type SearchablePatientFilterInput = {\n id?: SearchableIDFilterInput | null,\n coordinatorID?: SearchableIDFilterInput | null,\n medicareCardID?: SearchableStringFilterInput | null,\n imageMoverUserID?: SearchableIDFilterInput | null,\n authorizedTechIDs?: SearchableIDFilterInput | null,\n isCoordinator?: SearchableBooleanFilterInput | null,\n phone?: SearchableStringFilterInput | null,\n email?: SearchableStringFilterInput | null,\n birthdate?: SearchableStringFilterInput | null,\n passportNumber?: SearchableStringFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n csrPartnerOrganization?: SearchableStringFilterInput | null,\n partnerOrganization?: SearchableStringFilterInput | null,\n sex?: SearchableStringFilterInput | null,\n gender?: SearchableStringFilterInput | null,\n ethnicity?: SearchableStringFilterInput | null,\n races?: SearchableStringFilterInput | null,\n partnerVertical?: SearchableStringFilterInput | null,\n partnerDisplayName?: SearchableStringFilterInput | null,\n partnerOrganizationGroup?: SearchableStringFilterInput | null,\n fullName?: SearchableStringFilterInput | null,\n and?: Array< SearchablePatientFilterInput | null > | null,\n or?: Array< SearchablePatientFilterInput | null > | null,\n not?: SearchablePatientFilterInput | null,\n};\n\nexport type SearchablePatientSortInput = {\n field?: SearchablePatientSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchablePatientSortableFields {\n id = \"id\",\n coordinatorID = \"coordinatorID\",\n medicareCardID = \"medicareCardID\",\n imageMoverUserID = \"imageMoverUserID\",\n externalID = \"externalID\",\n secondaryExternalID = \"secondaryExternalID\",\n specimenLabelID = \"specimenLabelID\",\n qtMedicalPatientID = \"qtMedicalPatientID\",\n planName = \"planName\",\n authorizedTechIDs = \"authorizedTechIDs\",\n isCoordinator = \"isCoordinator\",\n phone = \"phone\",\n email = \"email\",\n secondaryPhone = \"secondaryPhone\",\n birthdate = \"birthdate\",\n passportNumber = \"passportNumber\",\n insuranceCardUploadFrontS3ObjectID = \"insuranceCardUploadFrontS3ObjectID\",\n insuranceCardUploadBackS3ObjectID = \"insuranceCardUploadBackS3ObjectID\",\n medicareCardUploadFrontS3ObjectID = \"medicareCardUploadFrontS3ObjectID\",\n medicareCardUploadBackS3ObjectID = \"medicareCardUploadBackS3ObjectID\",\n watchlistedAppointmentID = \"watchlistedAppointmentID\",\n responsiblePractitionerID = \"responsiblePractitionerID\",\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner = \"commentsFromPatientOrCaregiverAboutResponsiblePractitioner\",\n commentsFromCaregiverAboutResponsiblePractitioner = \"commentsFromCaregiverAboutResponsiblePractitioner\",\n suggestedAppointmentLocationAdditionalInformation = \"suggestedAppointmentLocationAdditionalInformation\",\n preferredLanguage = \"preferredLanguage\",\n primaryLanguageBCP47 = \"primaryLanguageBCP47\",\n secondaryLanguagesBCP47 = \"secondaryLanguagesBCP47\",\n patientNumber = \"patientNumber\",\n latestGapListUploadID = \"latestGapListUploadID\",\n latestGapListRowJSON = \"latestGapListRowJSON\",\n latestGapListPassthroughJSON = \"latestGapListPassthroughJSON\",\n brandCode = \"brandCode\",\n elationID = \"elationID\",\n zusUPID = \"zusUPID\",\n zusSprinterHealthPatientRecordID = \"zusSprinterHealthPatientRecordID\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchablePatientAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchablePatientAggregateField,\n};\n\nexport enum SearchablePatientAggregateField {\n id = \"id\",\n csrPartnerOrganization = \"csrPartnerOrganization\",\n partnerOrganization = \"partnerOrganization\",\n coordinatorID = \"coordinatorID\",\n medicareCardID = \"medicareCardID\",\n imageMoverUserID = \"imageMoverUserID\",\n externalID = \"externalID\",\n secondaryExternalID = \"secondaryExternalID\",\n specimenLabelID = \"specimenLabelID\",\n qtMedicalPatientID = \"qtMedicalPatientID\",\n planName = \"planName\",\n diabeticType = \"diabeticType\",\n authorizedTechIDs = \"authorizedTechIDs\",\n isCoordinator = \"isCoordinator\",\n phone = \"phone\",\n email = \"email\",\n secondaryPhone = \"secondaryPhone\",\n birthdate = \"birthdate\",\n sex = \"sex\",\n gender = \"gender\",\n ethnicity = \"ethnicity\",\n races = \"races\",\n passportNumber = \"passportNumber\",\n insuranceCardUploadFrontS3ObjectID = \"insuranceCardUploadFrontS3ObjectID\",\n insuranceCardUploadBackS3ObjectID = \"insuranceCardUploadBackS3ObjectID\",\n medicareCardUploadFrontS3ObjectID = \"medicareCardUploadFrontS3ObjectID\",\n medicareCardUploadBackS3ObjectID = \"medicareCardUploadBackS3ObjectID\",\n watchlistedAppointmentID = \"watchlistedAppointmentID\",\n responsiblePractitionerID = \"responsiblePractitionerID\",\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner = \"commentsFromPatientOrCaregiverAboutResponsiblePractitioner\",\n commentsFromCaregiverAboutResponsiblePractitioner = \"commentsFromCaregiverAboutResponsiblePractitioner\",\n suggestedAppointmentLocationAdditionalInformation = \"suggestedAppointmentLocationAdditionalInformation\",\n preferredLanguage = \"preferredLanguage\",\n primaryLanguageBCP47 = \"primaryLanguageBCP47\",\n secondaryLanguagesBCP47 = \"secondaryLanguagesBCP47\",\n patientNumber = \"patientNumber\",\n latestGapListUploadID = \"latestGapListUploadID\",\n latestGapListRowJSON = \"latestGapListRowJSON\",\n latestGapListPassthroughJSON = \"latestGapListPassthroughJSON\",\n brandCode = \"brandCode\",\n population = \"population\",\n elationID = \"elationID\",\n zusUPID = \"zusUPID\",\n zusSprinterHealthPatientRecordID = \"zusSprinterHealthPatientRecordID\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchablePatientConnection = {\n __typename: \"SearchablePatientConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelPatientContactPointFilterInput = {\n id?: ModelIDInput | null,\n patientID?: ModelIDInput | null,\n system?: ModelContactPointSystemInput | null,\n value?: ModelStringInput | null,\n status?: ModelContactPointStatusInput | null,\n statusLastUpdatedAt?: ModelStringInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelPatientContactPointFilterInput | null > | null,\n or?: Array< ModelPatientContactPointFilterInput | null > | null,\n not?: ModelPatientContactPointFilterInput | null,\n};\n\nexport type SearchablePatientContactPointFilterInput = {\n id?: SearchableIDFilterInput | null,\n patientID?: SearchableIDFilterInput | null,\n value?: SearchableStringFilterInput | null,\n statusLastUpdatedAt?: SearchableStringFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n system?: SearchableStringFilterInput | null,\n status?: SearchableStringFilterInput | null,\n and?: Array< SearchablePatientContactPointFilterInput | null > | null,\n or?: Array< SearchablePatientContactPointFilterInput | null > | null,\n not?: SearchablePatientContactPointFilterInput | null,\n};\n\nexport type SearchablePatientContactPointSortInput = {\n field?: SearchablePatientContactPointSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchablePatientContactPointSortableFields {\n id = \"id\",\n patientID = \"patientID\",\n value = \"value\",\n statusLastUpdatedAt = \"statusLastUpdatedAt\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchablePatientContactPointAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchablePatientContactPointAggregateField,\n};\n\nexport enum SearchablePatientContactPointAggregateField {\n id = \"id\",\n patientID = \"patientID\",\n system = \"system\",\n value = \"value\",\n status = \"status\",\n statusLastUpdatedAt = \"statusLastUpdatedAt\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchablePatientContactPointConnection = {\n __typename: \"SearchablePatientContactPointConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelReferralFilterInput = {\n id?: ModelIDInput | null,\n patientID?: ModelIDInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n requisitionUploadS3ObjectIDs?: ModelIDInput | null,\n serviceTypes?: ModelServiceTypeInput | null,\n isBooked?: ModelBooleanInput | null,\n isExpired?: ModelBooleanInput | null,\n ttl?: ModelIntInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelReferralFilterInput | null > | null,\n or?: Array< ModelReferralFilterInput | null > | null,\n not?: ModelReferralFilterInput | null,\n};\n\nexport type SearchableReferralFilterInput = {\n id?: SearchableIDFilterInput | null,\n patientID?: SearchableIDFilterInput | null,\n metroName?: SearchableStringFilterInput | null,\n isBooked?: SearchableBooleanFilterInput | null,\n partnerOrganization?: SearchableStringFilterInput | null,\n partnerVertical?: SearchableStringFilterInput | null,\n partnerDisplayName?: SearchableStringFilterInput | null,\n partnerOrganizationGroup?: SearchableStringFilterInput | null,\n isExpired?: SearchableBooleanFilterInput | null,\n serviceTypes?: SearchableStringFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n and?: Array< SearchableTechServiceRegionFilterInput | null > | null,\n or?: Array< SearchableTechServiceRegionFilterInput | null > | null,\n not?: SearchableTechServiceRegionFilterInput | null,\n};\n\nexport type SearchableReferralSortInput = {\n field?: SearchableReferralSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableReferralSortableFields {\n id = \"id\",\n patientID = \"patientID\",\n requisitionUploadS3ObjectIDs = \"requisitionUploadS3ObjectIDs\",\n isBooked = \"isBooked\",\n isExpired = \"isExpired\",\n ttl = \"ttl\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableReferralAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableReferralAggregateField,\n};\n\nexport enum SearchableReferralAggregateField {\n id = \"id\",\n patientID = \"patientID\",\n partnerOrganization = \"partnerOrganization\",\n requisitionUploadS3ObjectIDs = \"requisitionUploadS3ObjectIDs\",\n serviceTypes = \"serviceTypes\",\n isBooked = \"isBooked\",\n isExpired = \"isExpired\",\n ttl = \"ttl\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableReferralConnection = {\n __typename: \"SearchableReferralConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelPatientCampaignStateFilterInput = {\n id?: ModelIDInput | null,\n patientID?: ModelIDInput | null,\n name?: ModelPatientCampaignStateNameInput | null,\n campaignName?: ModelCampaignNameInput | null,\n eligibilityStart?: ModelStringInput | null,\n eligibilityEnd?: ModelStringInput | null,\n cohort?: ModelIntInput | null,\n contextJSON?: ModelStringInput | null,\n enteredAt?: ModelIntInput | null,\n partnerOrganization?: ModelPartnerOrganizationInput | null,\n previousStateName?: ModelPatientCampaignStateNameInput | null,\n reasonForTransitionToTerminalState?: ModelReasonForTransitionToTerminalStateInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelPatientCampaignStateFilterInput | null > | null,\n or?: Array< ModelPatientCampaignStateFilterInput | null > | null,\n not?: ModelPatientCampaignStateFilterInput | null,\n};\n\nexport type SearchablePatientCampaignStateFilterInput = {\n id?: SearchableIDFilterInput | null,\n patientID?: SearchableIDFilterInput | null,\n metroName?: SearchableStringFilterInput | null,\n serviceRegionName?: SearchableStringFilterInput | null,\n patientFullName?: SearchableStringFilterInput | null,\n patientPlan?: SearchableStringFilterInput | null,\n patientPreferredLanguage?: SearchableStringFilterInput | null,\n patientPrimaryLanguageBCP47?: SearchableStringFilterInput | null,\n campaignDisplayName?: SearchableStringFilterInput | null,\n campaignType?: SearchableStringFilterInput | null,\n campaignGroup?: SearchableStringFilterInput | null,\n campaignStatus?: SearchableStringFilterInput | null,\n partnerVertical?: SearchableStringFilterInput | null,\n partnerDisplayName?: SearchableStringFilterInput | null,\n partnerOrganizationGroup?: SearchableStringFilterInput | null,\n eligibilityStart?: SearchableStringFilterInput | null,\n eligibilityEnd?: SearchableStringFilterInput | null,\n cohort?: SearchableIntFilterInput | null,\n contextJSON?: SearchableStringFilterInput | null,\n enteredAt?: SearchableIntFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n name?: SearchableStringFilterInput | null,\n campaignName?: SearchableStringFilterInput | null,\n partnerOrganization?: SearchableStringFilterInput | null,\n and?: Array< SearchablePatientCampaignStateFilterInput | null > | null,\n or?: Array< SearchablePatientCampaignStateFilterInput | null > | null,\n not?: SearchablePatientCampaignStateFilterInput | null,\n};\n\nexport type SearchablePatientCampaignStateSortInput = {\n field?: SearchablePatientCampaignStateSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchablePatientCampaignStateSortableFields {\n id = \"id\",\n patientID = \"patientID\",\n eligibilityStart = \"eligibilityStart\",\n eligibilityEnd = \"eligibilityEnd\",\n cohort = \"cohort\",\n contextJSON = \"contextJSON\",\n enteredAt = \"enteredAt\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchablePatientCampaignStateAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchablePatientCampaignStateAggregateField,\n};\n\nexport enum SearchablePatientCampaignStateAggregateField {\n id = \"id\",\n patientID = \"patientID\",\n name = \"name\",\n campaignName = \"campaignName\",\n eligibilityStart = \"eligibilityStart\",\n eligibilityEnd = \"eligibilityEnd\",\n cohort = \"cohort\",\n contextJSON = \"contextJSON\",\n enteredAt = \"enteredAt\",\n partnerOrganization = \"partnerOrganization\",\n previousStateName = \"previousStateName\",\n reasonForTransitionToTerminalState = \"reasonForTransitionToTerminalState\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchablePatientCampaignStateConnection = {\n __typename: \"SearchablePatientCampaignStateConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelProjectedEngagementActivityScheduleFilterInput = {\n id?: ModelIDInput | null,\n name?: ModelStringInput | null,\n status?: ModelProjectedEngagementActivityScheduleStatusInput | null,\n acceptedAt?: ModelStringInput | null,\n totalBatches?: ModelIntInput | null,\n processedBatches?: ModelIntInput | null,\n parametersJSON?: ModelStringInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelProjectedEngagementActivityScheduleFilterInput | null > | null,\n or?: Array< ModelProjectedEngagementActivityScheduleFilterInput | null > | null,\n not?: ModelProjectedEngagementActivityScheduleFilterInput | null,\n};\n\nexport type ModelProjectedEngagementActivityScheduleConnection = {\n __typename: \"ModelProjectedEngagementActivityScheduleConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type SearchableProjectedEngagementActivityScheduleFilterInput = {\n id?: SearchableIDFilterInput | null,\n name?: SearchableStringFilterInput | null,\n acceptedAt?: SearchableStringFilterInput | null,\n totalBatches?: SearchableIntFilterInput | null,\n processedBatches?: SearchableIntFilterInput | null,\n parametersJSON?: SearchableStringFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n status?: SearchableStringFilterInput | null,\n and?: Array< SearchableProjectedEngagementActivityScheduleFilterInput | null > | null,\n or?: Array< SearchableProjectedEngagementActivityScheduleFilterInput | null > | null,\n not?: SearchableProjectedEngagementActivityScheduleFilterInput | null,\n};\n\nexport type SearchableProjectedEngagementActivityScheduleSortInput = {\n field?: SearchableProjectedEngagementActivityScheduleSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableProjectedEngagementActivityScheduleSortableFields {\n id = \"id\",\n name = \"name\",\n acceptedAt = \"acceptedAt\",\n totalBatches = \"totalBatches\",\n processedBatches = \"processedBatches\",\n parametersJSON = \"parametersJSON\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableProjectedEngagementActivityScheduleAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableProjectedEngagementActivityScheduleAggregateField,\n};\n\nexport enum SearchableProjectedEngagementActivityScheduleAggregateField {\n id = \"id\",\n name = \"name\",\n status = \"status\",\n acceptedAt = \"acceptedAt\",\n totalBatches = \"totalBatches\",\n processedBatches = \"processedBatches\",\n parametersJSON = \"parametersJSON\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableProjectedEngagementActivityScheduleConnection = {\n __typename: \"SearchableProjectedEngagementActivityScheduleConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelUnlinkableReportFilterInput = {\n id?: ModelIDInput | null,\n externalID?: ModelStringInput | null,\n zendeskTicketID?: ModelIntInput | null,\n hasBeenResolved?: ModelBooleanInput | null,\n patientNumber?: ModelStringInput | null,\n requisitionNumber?: ModelStringInput | null,\n labOrganization?: ModelLabOrganizationInput | null,\n serviceRequestExternalIDs?: ModelStringInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelUnlinkableReportFilterInput | null > | null,\n or?: Array< ModelUnlinkableReportFilterInput | null > | null,\n not?: ModelUnlinkableReportFilterInput | null,\n};\n\nexport type ModelUnlinkableReportConnection = {\n __typename: \"ModelUnlinkableReportConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type SearchableUnlinkableReportFilterInput = {\n id?: SearchableIDFilterInput | null,\n externalID?: SearchableStringFilterInput | null,\n zendeskTicketID?: SearchableIntFilterInput | null,\n unlinkedReason?: SearchableStringFilterInput | null,\n patientNumber?: SearchableStringFilterInput | null,\n requisitionNumber?: SearchableStringFilterInput | null,\n and?: Array< SearchableUnlinkableReportFilterInput | null > | null,\n or?: Array< SearchableUnlinkableReportFilterInput | null > | null,\n not?: SearchableUnlinkableReportFilterInput | null,\n};\n\nexport type SearchableUnlinkableReportSortInput = {\n field?: SearchableUnlinkableReportSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableUnlinkableReportSortableFields {\n id = \"id\",\n externalID = \"externalID\",\n zendeskTicketID = \"zendeskTicketID\",\n hasBeenResolved = \"hasBeenResolved\",\n patientNumber = \"patientNumber\",\n requisitionNumber = \"requisitionNumber\",\n serviceRequestExternalIDs = \"serviceRequestExternalIDs\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableUnlinkableReportAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableUnlinkableReportAggregateField,\n};\n\nexport enum SearchableUnlinkableReportAggregateField {\n id = \"id\",\n externalID = \"externalID\",\n zendeskTicketID = \"zendeskTicketID\",\n hasBeenResolved = \"hasBeenResolved\",\n patientNumber = \"patientNumber\",\n requisitionNumber = \"requisitionNumber\",\n labOrganization = \"labOrganization\",\n serviceRequestExternalIDs = \"serviceRequestExternalIDs\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableUnlinkableReportConnection = {\n __typename: \"SearchableUnlinkableReportConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelDropOffFilterInput = {\n id?: ModelIDInput | null,\n organization?: ModelDropOffOrganizationInput | null,\n name?: ModelStringInput | null,\n phone?: ModelStringInput | null,\n email?: ModelStringInput | null,\n timezone?: ModelStringInput | null,\n hasParking?: ModelBooleanInput | null,\n hasDropBox?: ModelBooleanInput | null,\n commentsFromScheduler?: ModelStringInput | null,\n googleMapsPlaceID?: ModelStringInput | null,\n metroName?: ModelStringInput | null,\n isActive?: ModelBooleanInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelDropOffFilterInput | null > | null,\n or?: Array< ModelDropOffFilterInput | null > | null,\n not?: ModelDropOffFilterInput | null,\n};\n\nexport type ModelDropOffConnection = {\n __typename: \"ModelDropOffConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type SearchableDropOffFilterInput = {\n id?: SearchableIDFilterInput | null,\n name?: SearchableStringFilterInput | null,\n phone?: SearchableStringFilterInput | null,\n email?: SearchableStringFilterInput | null,\n serviceRegionName?: SearchableStringFilterInput | null,\n hasParking?: SearchableBooleanFilterInput | null,\n hasDropBox?: SearchableBooleanFilterInput | null,\n commentsFromScheduler?: SearchableStringFilterInput | null,\n googleMapsPlaceID?: SearchableStringFilterInput | null,\n metroName?: SearchableStringFilterInput | null,\n isActive?: SearchableBooleanFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n organization?: SearchableStringFilterInput | null,\n organizationName?: SearchableStringFilterInput | null,\n fullAddress?: SearchableStringFilterInput | null,\n and?: Array< SearchableDropOffFilterInput | null > | null,\n or?: Array< SearchableDropOffFilterInput | null > | null,\n not?: SearchableDropOffFilterInput | null,\n};\n\nexport type SearchableDropOffSortInput = {\n field?: SearchableDropOffSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableDropOffSortableFields {\n id = \"id\",\n name = \"name\",\n phone = \"phone\",\n email = \"email\",\n timezone = \"timezone\",\n hasParking = \"hasParking\",\n hasDropBox = \"hasDropBox\",\n commentsFromScheduler = \"commentsFromScheduler\",\n googleMapsPlaceID = \"googleMapsPlaceID\",\n metroName = \"metroName\",\n isActive = \"isActive\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableDropOffAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableDropOffAggregateField,\n};\n\nexport enum SearchableDropOffAggregateField {\n id = \"id\",\n organization = \"organization\",\n name = \"name\",\n phone = \"phone\",\n email = \"email\",\n timezone = \"timezone\",\n hasParking = \"hasParking\",\n hasDropBox = \"hasDropBox\",\n commentsFromScheduler = \"commentsFromScheduler\",\n googleMapsPlaceID = \"googleMapsPlaceID\",\n metroName = \"metroName\",\n isActive = \"isActive\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableDropOffConnection = {\n __typename: \"SearchableDropOffConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelServiceRequestTypeFilterInput = {\n id?: ModelIDInput | null,\n cptCodes?: ModelStringInput | null,\n externalID?: ModelStringInput | null,\n displayName?: ModelStringInput | null,\n synonyms?: ModelStringInput | null,\n labOrganization?: ModelLabOrganizationInput | null,\n container?: ModelStringInput | null,\n serviceRequestTypeContainerID?: ModelIDInput | null,\n specimen?: ModelStringInput | null,\n preferredSpecimen?: ModelStringInput | null,\n preferredVolumeDescription?: ModelStringInput | null,\n preferredVolumeMilliliters?: ModelFloatInput | null,\n minimumVolume?: ModelStringInput | null,\n minimumVolumeAmount?: ModelFloatInput | null,\n alternateSpecimen?: ModelStringInput | null,\n transportInstructions?: ModelStringInput | null,\n collectionInstructions?: ModelStringInput | null,\n collectionInstructionsVideoURL?: ModelStringInput | null,\n rejectionCriteria?: ModelStringInput | null,\n specimenStability?: ModelStringInput | null,\n patientPreparation?: ModelStringInput | null,\n resultAvailability?: ModelStringInput | null,\n serviceTypes?: ModelServiceTypeListInput | null,\n requiresBinaryPatientSex?: ModelBooleanInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelServiceRequestTypeFilterInput | null > | null,\n or?: Array< ModelServiceRequestTypeFilterInput | null > | null,\n not?: ModelServiceRequestTypeFilterInput | null,\n};\n\nexport type ModelServiceRequestTypeConnection = {\n __typename: \"ModelServiceRequestTypeConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type SearchableServiceRequestTypeFilterInput = {\n id?: SearchableIDFilterInput | null,\n cptCodes?: SearchableStringFilterInput | null,\n externalID?: SearchableStringFilterInput | null,\n displayName?: SearchableStringFilterInput | null,\n synonyms?: SearchableStringFilterInput | null,\n container?: SearchableStringFilterInput | null,\n specimen?: SearchableStringFilterInput | null,\n preferredSpecimen?: SearchableStringFilterInput | null,\n preferredVolume?: SearchableStringFilterInput | null,\n minimumVolume?: SearchableStringFilterInput | null,\n minimumVolumeAmount?: SearchableFloatFilterInput | null,\n alternateSpecimen?: SearchableStringFilterInput | null,\n transportInstructions?: SearchableStringFilterInput | null,\n collectionInstructions?: SearchableStringFilterInput | null,\n rejectionCriteria?: SearchableStringFilterInput | null,\n specimenStability?: SearchableStringFilterInput | null,\n patientPreparation?: SearchableStringFilterInput | null,\n resultAvailability?: SearchableStringFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n labOrganization?: SearchableStringFilterInput | null,\n cptCodesJoined?: SearchableStringFilterInput | null,\n synonymsJoined?: SearchableStringFilterInput | null,\n and?: Array< SearchableServiceRequestTypeFilterInput | null > | null,\n or?: Array< SearchableServiceRequestTypeFilterInput | null > | null,\n not?: SearchableServiceRequestTypeFilterInput | null,\n};\n\nexport type SearchableServiceRequestTypeSortInput = {\n field?: SearchableServiceRequestTypeSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableServiceRequestTypeSortableFields {\n id = \"id\",\n cptCodes = \"cptCodes\",\n externalID = \"externalID\",\n displayName = \"displayName\",\n synonyms = \"synonyms\",\n container = \"container\",\n serviceRequestTypeContainerID = \"serviceRequestTypeContainerID\",\n specimen = \"specimen\",\n preferredSpecimen = \"preferredSpecimen\",\n preferredVolumeDescription = \"preferredVolumeDescription\",\n preferredVolumeMilliliters = \"preferredVolumeMilliliters\",\n minimumVolume = \"minimumVolume\",\n minimumVolumeAmount = \"minimumVolumeAmount\",\n alternateSpecimen = \"alternateSpecimen\",\n transportInstructions = \"transportInstructions\",\n collectionInstructions = \"collectionInstructions\",\n collectionInstructionsVideoURL = \"collectionInstructionsVideoURL\",\n rejectionCriteria = \"rejectionCriteria\",\n specimenStability = \"specimenStability\",\n patientPreparation = \"patientPreparation\",\n resultAvailability = \"resultAvailability\",\n requiresBinaryPatientSex = \"requiresBinaryPatientSex\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableServiceRequestTypeAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableServiceRequestTypeAggregateField,\n};\n\nexport enum SearchableServiceRequestTypeAggregateField {\n id = \"id\",\n cptCodes = \"cptCodes\",\n externalID = \"externalID\",\n displayName = \"displayName\",\n synonyms = \"synonyms\",\n labOrganization = \"labOrganization\",\n container = \"container\",\n serviceRequestTypeContainerID = \"serviceRequestTypeContainerID\",\n specimen = \"specimen\",\n preferredSpecimen = \"preferredSpecimen\",\n preferredVolumeDescription = \"preferredVolumeDescription\",\n preferredVolumeMilliliters = \"preferredVolumeMilliliters\",\n minimumVolume = \"minimumVolume\",\n minimumVolumeAmount = \"minimumVolumeAmount\",\n alternateSpecimen = \"alternateSpecimen\",\n transportInstructions = \"transportInstructions\",\n collectionInstructions = \"collectionInstructions\",\n collectionInstructionsVideoURL = \"collectionInstructionsVideoURL\",\n rejectionCriteria = \"rejectionCriteria\",\n specimenStability = \"specimenStability\",\n patientPreparation = \"patientPreparation\",\n resultAvailability = \"resultAvailability\",\n serviceTypes = \"serviceTypes\",\n requiresBinaryPatientSex = \"requiresBinaryPatientSex\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableServiceRequestTypeConnection = {\n __typename: \"SearchableServiceRequestTypeConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelSpecimenContainerTypeFilterInput = {\n id?: ModelIDInput | null,\n name?: ModelStringInput | null,\n category?: ModelSpecimenContainerCategoryInput | null,\n capacityMilliliters?: ModelFloatInput | null,\n serumBloodCapacityMilliliters?: ModelFloatInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelSpecimenContainerTypeFilterInput | null > | null,\n or?: Array< ModelSpecimenContainerTypeFilterInput | null > | null,\n not?: ModelSpecimenContainerTypeFilterInput | null,\n};\n\nexport type ModelSpecimenContainerTypeConnection = {\n __typename: \"ModelSpecimenContainerTypeConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type SearchableSpecimenContainerTypeFilterInput = {\n id?: SearchableIDFilterInput | null,\n name?: SearchableStringFilterInput | null,\n capacityMilliliters?: SearchableFloatFilterInput | null,\n serumBloodCapacityMilliliters?: SearchableFloatFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n category?: SearchableStringFilterInput | null,\n and?: Array< SearchableSpecimenContainerTypeFilterInput | null > | null,\n or?: Array< SearchableSpecimenContainerTypeFilterInput | null > | null,\n not?: SearchableSpecimenContainerTypeFilterInput | null,\n};\n\nexport type SearchableSpecimenContainerTypeSortInput = {\n field?: SearchableSpecimenContainerTypeSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableSpecimenContainerTypeSortableFields {\n id = \"id\",\n name = \"name\",\n capacityMilliliters = \"capacityMilliliters\",\n serumBloodCapacityMilliliters = \"serumBloodCapacityMilliliters\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableSpecimenContainerTypeAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableSpecimenContainerTypeAggregateField,\n};\n\nexport enum SearchableSpecimenContainerTypeAggregateField {\n id = \"id\",\n name = \"name\",\n category = \"category\",\n capacityMilliliters = \"capacityMilliliters\",\n serumBloodCapacityMilliliters = \"serumBloodCapacityMilliliters\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableSpecimenContainerTypeConnection = {\n __typename: \"SearchableSpecimenContainerTypeConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type ModelServiceRequestTypeContainerFilterInput = {\n id?: ModelIDInput | null,\n containerType?: ModelStringInput | null,\n alternativeContainerTypes?: ModelStringInput | null,\n substituteContainerTypesForCalculations?: ModelStringInput | null,\n containerCategory?: ModelStringInput | null,\n capacity?: ModelFloatInput | null,\n createdAt?: ModelStringInput | null,\n updatedAt?: ModelStringInput | null,\n and?: Array< ModelServiceRequestTypeContainerFilterInput | null > | null,\n or?: Array< ModelServiceRequestTypeContainerFilterInput | null > | null,\n not?: ModelServiceRequestTypeContainerFilterInput | null,\n};\n\nexport type ModelServiceRequestTypeContainerConnection = {\n __typename: \"ModelServiceRequestTypeContainerConnection\",\n items: Array,\n nextToken?: string | null,\n};\n\nexport type SearchableServiceRequestTypeContainerFilterInput = {\n id?: SearchableIDFilterInput | null,\n containerType?: SearchableStringFilterInput | null,\n alternativeContainerTypes?: SearchableStringFilterInput | null,\n substituteContainerTypesForCalculations?: SearchableStringFilterInput | null,\n containerCategory?: SearchableStringFilterInput | null,\n capacity?: SearchableFloatFilterInput | null,\n createdAt?: SearchableStringFilterInput | null,\n updatedAt?: SearchableStringFilterInput | null,\n and?: Array< SearchableServiceRequestTypeContainerFilterInput | null > | null,\n or?: Array< SearchableServiceRequestTypeContainerFilterInput | null > | null,\n not?: SearchableServiceRequestTypeContainerFilterInput | null,\n};\n\nexport type SearchableServiceRequestTypeContainerSortInput = {\n field?: SearchableServiceRequestTypeContainerSortableFields | null,\n direction?: SearchableSortDirection | null,\n};\n\nexport enum SearchableServiceRequestTypeContainerSortableFields {\n id = \"id\",\n containerType = \"containerType\",\n alternativeContainerTypes = \"alternativeContainerTypes\",\n substituteContainerTypesForCalculations = \"substituteContainerTypesForCalculations\",\n containerCategory = \"containerCategory\",\n capacity = \"capacity\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableServiceRequestTypeContainerAggregationInput = {\n name: string,\n type: SearchableAggregateType,\n field: SearchableServiceRequestTypeContainerAggregateField,\n};\n\nexport enum SearchableServiceRequestTypeContainerAggregateField {\n id = \"id\",\n containerType = \"containerType\",\n alternativeContainerTypes = \"alternativeContainerTypes\",\n substituteContainerTypesForCalculations = \"substituteContainerTypesForCalculations\",\n containerCategory = \"containerCategory\",\n capacity = \"capacity\",\n createdAt = \"createdAt\",\n updatedAt = \"updatedAt\",\n}\n\n\nexport type SearchableServiceRequestTypeContainerConnection = {\n __typename: \"SearchableServiceRequestTypeContainerConnection\",\n items: Array,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array,\n};\n\nexport type GetTrickleConfigurationResponse = {\n __typename: \"GetTrickleConfigurationResponse\",\n configuration?: string | null,\n};\n\nexport type AvailableAppointment = {\n __typename: \"AvailableAppointment\",\n start: string,\n end: string,\n slotScore?: number | null,\n incrementalDrivingTimeSeconds?: number | null,\n};\n\nexport enum PostReviewQueue {\n CLINICAL = \"CLINICAL\", // Appointments requiring clinical review or post-review automation has failed.\n NON_CLINICAL = \"NON_CLINICAL\", // Appointments requiring non-clinical review.\n ALL = \"ALL\", // All appointments that have not been post-reviewed (contains appointments in clinical and non-clinical post-review queue).\n}\n\n\nexport type ListAppointmentsForPostReviewResponse = {\n __typename: \"ListAppointmentsForPostReviewResponse\",\n appointments?: Array | null,\n};\n\nexport type ExportTechScheduleInput = {\n techID: string,\n start: string,\n end: string,\n};\n\nexport type ExportTechScheduleResponse = {\n __typename: \"ExportTechScheduleResponse\",\n exportedTechSchedule: string,\n};\n\nexport type ListBookedAppointmentsInput = {\n geographicalStates: Array< string >,\n visitTypes?: Array< VisitType > | null,\n start?: string | null,\n end?: string | null,\n};\n\nexport type BookedAppointmentsPartnerOrganizationInput = {\n start?: string | null,\n end?: string | null,\n};\n\nexport type GenerateClaimsBillingTemplateInput = {\n partnerOrganization: PartnerOrganization,\n start: string,\n end: string,\n};\n\nexport type GenerateClaimsBillingTemplateResponse = {\n __typename: \"GenerateClaimsBillingTemplateResponse\",\n billingCSV: string,\n};\n\nexport type CalculateSpecimenContainerTypeQuantitiesInput = {\n labOrganization: LabOrganization,\n serviceRequestIDs?: Array< string > | null,\n};\n\nexport type CalculateSpecimenContainerTypeQuantitiesResponse = {\n __typename: \"CalculateSpecimenContainerTypeQuantitiesResponse\",\n specimenContainerTypeQuantities?: Array | null,\n};\n\nexport type SpecimenContainerTypeQuantity = {\n __typename: \"SpecimenContainerTypeQuantity\",\n containerName: string,\n quantity: number,\n};\n\nexport type GetContainerSpecimenVolumesInput = {\n externalID: string,\n labOrganization: LabOrganization,\n};\n\nexport type GetContainerSpecimenVolumesResponse = {\n __typename: \"GetContainerSpecimenVolumesResponse\",\n containerOverrideID?: string | null,\n containerCategory?: SpecimenContainerCategory | null,\n minimumMilliliters?: number | null,\n preferredMilliliters?: number | null,\n isCombinable: boolean,\n minimumContainerCount?: number | null,\n specimenTestTypes?: Array< SpecimenTestType | null > | null,\n containerName?: string | null,\n};\n\nexport type GetAllContainersResponse = {\n __typename: \"GetAllContainersResponse\",\n id: string,\n name: string,\n category: SpecimenContainerCategory,\n capacityMilliliters: number,\n};\n\nexport type ValidatePartnerUserInviteInput = {\n partnerUserInviteID: string,\n email?: string | null,\n};\n\nexport type ValidatePartnerUserInviteResponse = {\n __typename: \"ValidatePartnerUserInviteResponse\",\n isValid: boolean,\n};\n\nexport type ValidateUnsubscribeFromEmailNotificationsInput = {\n patientCampaignStateID: string,\n email?: string | null,\n};\n\nexport type ValidateUnsubscribeFromEmailNotificationsResponse = {\n __typename: \"ValidateUnsubscribeFromEmailNotificationsResponse\",\n isValid: boolean,\n};\n\nexport type ListMatchmadeDropOffsInput = {\n // The appointment for which specimens need a dropOff\n fromAppointmentID: string,\n // If null, will assume the location of the appointment fromAppointmentID\n currentPosition?: LocationPositionInput | null,\n // either the location of toAppointmentID or the tech's home (if toAppointmentID is null)\n endPosition?: LocationPositionInput | null,\n // The tech's current time\n time: string,\n // The tech's next appointment.\n toAppointmentID?: string | null,\n // Only matchmake drop-offs with the list of specified DropOffOrganizations. Default is all DropOffOrganizations from fromAppointmentID\n dropOffOrganizationsOverride?: Array< DropOffOrganization > | null,\n};\n\nexport type ListMatchmadeDropOffsResponseItem = {\n __typename: \"ListMatchmadeDropOffsResponseItem\",\n estimatedDriveTimeToDropOffSeconds: number,\n estimatedDriveTimeFromDropOffToNextRouteStopSeconds: number,\n dropOff: DropOff,\n};\n\nexport type ExportMonthlyPatientsListWithAppointmentStatusInput = {\n partnerOrganizations: Array< PartnerOrganization >,\n startDate: string,\n endDate: string,\n};\n\nexport type ExportMonthlyPatientsListWithAppointmentStatusResponse = {\n __typename: \"ExportMonthlyPatientsListWithAppointmentStatusResponse\",\n patientListCSV: string,\n};\n\nexport type SendTestNotificationInput = {\n receiver: TestNotificationReceiver,\n isCSRBooked?: boolean | null,\n smsType?: SMSType | null,\n emailType?: EmailType | null,\n serviceType: ServiceType,\n partnerOrganization?: PartnerOrganization | null,\n abstentionTypes?: Array< string | null > | null,\n campaignName?: CampaignName | null,\n brandCode?: string | null,\n};\n\nexport enum TestNotificationReceiver {\n PATIENT = \"PATIENT\",\n CSR = \"CSR\",\n COORDINATOR = \"COORDINATOR\",\n}\n\n\nexport enum EmailType {\n BOOKING_CONFIRMATION = \"BOOKING_CONFIRMATION\",\n BOOKING_CONFIRMATION_AWV_PRE_WORK_FOCUSED = \"BOOKING_CONFIRMATION_AWV_PRE_WORK_FOCUSED\",\n RESCHEDULE_CONFIRMATION = \"RESCHEDULE_CONFIRMATION\",\n CANCEL_CONFIRMATION = \"CANCEL_CONFIRMATION\",\n DAY_BEFORE_REMINDER = \"DAY_BEFORE_REMINDER\",\n DAY_BEFORE_REMINDER_AWV_PRE_WORK_FOCUSED = \"DAY_BEFORE_REMINDER_AWV_PRE_WORK_FOCUSED\",\n DAY_OF_REMINDER = \"DAY_OF_REMINDER\",\n COLLECT_KIT_REMINDER = \"COLLECT_KIT_REMINDER\",\n POST_APPOINTMENT = \"POST_APPOINTMENT\",\n POST_APPOINTMENT_COLLECT_KIT_REMINDER = \"POST_APPOINTMENT_COLLECT_KIT_REMINDER\",\n FAILED_APPOINTMENT = \"FAILED_APPOINTMENT\",\n FAILED_APPOINTMENT_REQUIRES_RESCHEDULE = \"FAILED_APPOINTMENT_REQUIRES_RESCHEDULE\",\n PARTNER_USER_INVITE = \"PARTNER_USER_INVITE\",\n SEND_ENCOUNTER_SUMMARY = \"SEND_ENCOUNTER_SUMMARY\",\n SEND_ENCOUNTER_SUMMARY_WITH_NEW_LAB_RESULTS = \"SEND_ENCOUNTER_SUMMARY_WITH_NEW_LAB_RESULTS\",\n SDOH_RESULTS = \"SDOH_RESULTS\",\n PATIENT_ENCOUNTER_SUMMARY = \"PATIENT_ENCOUNTER_SUMMARY\",\n NEW_BOOKING_ALERT = \"NEW_BOOKING_ALERT\",\n TECH_FEEDBACK = \"TECH_FEEDBACK\",\n OUTSIDE_SERVICE_REGION_EMAIL_SUBMISSION_CONFIRMATION = \"OUTSIDE_SERVICE_REGION_EMAIL_SUBMISSION_CONFIRMATION\",\n UNRECOGNIZED_SERVICE_REQUEST_ID_CLICK_UP_EMAIL = \"UNRECOGNIZED_SERVICE_REQUEST_ID_CLICK_UP_EMAIL\",\n UNRECOGNIZED_SERVICE_REQUEST_ID_EMAIL = \"UNRECOGNIZED_SERVICE_REQUEST_ID_EMAIL\",\n TECH_SCHEDULER_SAME_DAY_APPOINTMENT_RESCHEDULED = \"TECH_SCHEDULER_SAME_DAY_APPOINTMENT_RESCHEDULED\",\n TECH_SCHEDULER_SAME_DAY_APPOINTMENT_CANCELED = \"TECH_SCHEDULER_SAME_DAY_APPOINTMENT_CANCELED\",\n REQUISITION_REUPLOADED = \"REQUISITION_REUPLOADED\",\n INVOICE_SUMMARY_EMAIL = \"INVOICE_SUMMARY_EMAIL\",\n INVOICE_GENERATION_EMAIL = \"INVOICE_GENERATION_EMAIL\",\n PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT = \"PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT\",\n PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_AUTHORITATIVE = \"PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_AUTHORITATIVE\",\n PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_EASE = \"PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_EASE\",\n PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_REWARDS = \"PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_REWARDS\",\n PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_OUTCOMES = \"PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_OUTCOMES\",\n PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_EMPATHETIC = \"PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_EMPATHETIC\",\n PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_HANDWRITTEN = \"PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_HANDWRITTEN\",\n PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_TEASER = \"PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_TEASER\",\n PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_FOLLOW_UP_AUTHORITATIVE = \"PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_FOLLOW_UP_AUTHORITATIVE\",\n PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_END_OF_YEAR_REMINDER = \"PATIENT_CAMPAIGN_OUTREACH_INITIAL_ENGAGEMENT_END_OF_YEAR_REMINDER\",\n}\n\n\nexport type SendTestNotificationResponse = {\n __typename: \"SendTestNotificationResponse\",\n result: string,\n};\n\nexport type GetReferralByPatientInfoInput = {\n partnerOrganization?: PartnerOrganization | null,\n givenName: string,\n familyName: string,\n birthdate: string,\n email?: string | null,\n phone?: string | null,\n resultsEncounterID?: string | null,\n};\n\nexport type GetReferralByPatientInfoResponse = {\n __typename: \"GetReferralByPatientInfoResponse\",\n referral?: CustomAuthPartialReferral | null,\n appointment?: CustomAuthPartialAppointment | null,\n patient?: CustomAuthPartialPatient | null,\n guestJWT?: string | null,\n availabilityEndDateTime?: string | null,\n};\n\nexport type CustomAuthPartialReferral = {\n __typename: \"CustomAuthPartialReferral\",\n id: string,\n serviceTypes: Array< ServiceType >,\n};\n\nexport type CustomAuthPartialPatient = {\n __typename: \"CustomAuthPartialPatient\",\n phone?: string | null,\n email?: string | null,\n brandCode?: string | null,\n id?: string | null,\n partnerOrganization: PartnerOrganization,\n suggestedAppointmentLocation?: Location | null,\n name: HumanName,\n birthdate?: string | null,\n responsiblePractitionerName?: HumanName | null,\n responsiblePractitionerPhone?: string | null,\n responsiblePractitionerAddress?: Address | null,\n caregiverName?: HumanName | null,\n sex?: Sex | null,\n gender?: Gender | null,\n};\n\nexport type GetOutreachSMSCopyInput = {\n campaignName: CampaignName,\n patient: GetOutreachSMSCopyPatientInput,\n referral?: GetOutreachSMSCopyReferralInput | null,\n};\n\nexport type GetOutreachSMSCopyPatientInput = {\n gender: Gender,\n partnerOrganization: PartnerOrganization,\n name: HumanNameInput,\n caregiverName?: HumanNameInput | null,\n primaryLanguageBCP47?: string | null,\n brandCode?: string | null,\n};\n\nexport type GetOutreachSMSCopyReferralInput = {\n externalID: string,\n labOrganization: LabOrganization,\n};\n\nexport type GetOutreachSMSCopyResponse = {\n __typename: \"GetOutreachSMSCopyResponse\",\n smsTypesWithCopy: Array,\n};\n\nexport type OutreachSMSesWithCopy = {\n __typename: \"OutreachSMSesWithCopy\",\n copy: Array< Array< string | null > | null >,\n smsType: SMSType,\n};\n\nexport type CMSContentTemplatesByVersion = {\n __typename: \"CMSContentTemplatesByVersion\",\n draft: Array,\n live: Array,\n errorsJSON: string,\n};\n\nexport type CMSContentTemplate = {\n __typename: \"CMSContentTemplate\",\n translationKey: string,\n content: string,\n campaignName: CampaignName,\n};\n\nexport type ExportAppointmentsListForBillingInput = {\n startDate: string,\n endDate?: string | null,\n};\n\nexport type ExportAppointmentsListForBillingResponse = {\n __typename: \"ExportAppointmentsListForBillingResponse\",\n listAppointmentsForBillingCSV: string,\n};\n\nexport enum StatsigIDTableName {\n PatientCampaignState = \"PatientCampaignState\",\n Patient = \"Patient\",\n}\n\n\nexport type GetStatsigIDResponse = {\n __typename: \"GetStatsigIDResponse\",\n id: string,\n};\n\nexport type ExportServiceRegionCumulativeAvailabilityResponse = {\n __typename: \"ExportServiceRegionCumulativeAvailabilityResponse\",\n result: string,\n};\n\nexport type GetPUTS3ObjectPresignedURLResponse = {\n __typename: \"GetPUTS3ObjectPresignedURLResponse\",\n url: string,\n s3ObjectID?: string | null,\n};\n\nexport type GetHistoricalAvailabilityForTechInput = {\n techID: string,\n intervalStart: string,\n intervalEnd: string,\n};\n\nexport type GetHistoricalAvailabilityForTechResponse = {\n __typename: \"GetHistoricalAvailabilityForTechResponse\",\n techAvailabilityRules: Array,\n serviceRegionsAvailabilityRules: Array,\n partialAppointmentsForTeamAvailabilityJSON: string,\n};\n\nexport type ServiceRegionAvailabilityRules = {\n __typename: \"ServiceRegionAvailabilityRules\",\n serviceRegionName: string,\n availabilityRules: Array,\n};\n\nexport enum PatientAggregationsPresetName {\n PATIENT_SERVICE_REGION = \"PATIENT_SERVICE_REGION\",\n PATIENT_USA_STATE = \"PATIENT_USA_STATE\",\n PATIENT_PARTNER_ORGANIZATION = \"PATIENT_PARTNER_ORGANIZATION\",\n CAMPAIGN_NAME = \"CAMPAIGN_NAME\",\n CAMPAIGN_MEASUREMENT_YEAR = \"CAMPAIGN_MEASUREMENT_YEAR\",\n CAMPAIGN_NEXT_SCHEDULED_ACTION = \"CAMPAIGN_NEXT_SCHEDULED_ACTION\",\n CURRENT_PATIENT_CAMPAIGN_STATE_NAME = \"CURRENT_PATIENT_CAMPAIGN_STATE_NAME\",\n PREVIOUS_PATIENT_CAMPAIGN_STATE_NAME = \"PREVIOUS_PATIENT_CAMPAIGN_STATE_NAME\",\n PATIENT_POPULATION = \"PATIENT_POPULATION\",\n PATIENT_BRAND_CODE = \"PATIENT_BRAND_CODE\",\n PATIENT_BRAND_NAME = \"PATIENT_BRAND_NAME\",\n HAS_PATIENT_TRICKLED = \"HAS_PATIENT_TRICKLED\",\n HAS_EXPIRED_REFERRAL = \"HAS_EXPIRED_REFERRAL\",\n}\n\n\nexport type GetPatientPreviewMetricsResponse = {\n __typename: \"GetPatientPreviewMetricsResponse\",\n aggregatedMetrics: Array,\n};\n\nexport type PatientAggregatedMetrics = {\n __typename: \"PatientAggregatedMetrics\",\n aggregationPreset: PatientAggregationsPresetName,\n bucketNames: Array< string >,\n metricNames: Array< string >,\n rows?: Array | null,\n errorReason?: string | null,\n};\n\nexport type PatientAggregatedMetricRow = {\n __typename: \"PatientAggregatedMetricRow\",\n buckets: Array< string >,\n metrics: Array< number >,\n};\n\nexport type CreateSerialCounterMutationVariables = {\n input: CreateSerialCounterInput,\n condition?: ModelSerialCounterConditionInput | null,\n};\n\nexport type CreateSerialCounterMutation = {\n createSerialCounter?: {\n __typename: \"SerialCounter\",\n type: SerialCounterType,\n serialValue: number,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateSerialCounterMutationVariables = {\n input: UpdateSerialCounterInput,\n condition?: ModelSerialCounterConditionInput | null,\n};\n\nexport type UpdateSerialCounterMutation = {\n updateSerialCounter?: {\n __typename: \"SerialCounter\",\n type: SerialCounterType,\n serialValue: number,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteSerialCounterMutationVariables = {\n input: DeleteSerialCounterInput,\n condition?: ModelSerialCounterConditionInput | null,\n};\n\nexport type DeleteSerialCounterMutation = {\n deleteSerialCounter?: {\n __typename: \"SerialCounter\",\n type: SerialCounterType,\n serialValue: number,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateAppointmentMutationVariables = {\n input: CreateAppointmentInput,\n condition?: ModelAppointmentConditionInput | null,\n};\n\nexport type CreateAppointmentMutation = {\n createAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateAppointmentMutationVariables = {\n input: UpdateAppointmentInput,\n condition?: ModelAppointmentConditionInput | null,\n};\n\nexport type UpdateAppointmentMutation = {\n updateAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteAppointmentMutationVariables = {\n input: DeleteAppointmentInput,\n condition?: ModelAppointmentConditionInput | null,\n};\n\nexport type DeleteAppointmentMutation = {\n deleteAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateEncounterMutationVariables = {\n input: CreateEncounterInput,\n condition?: ModelEncounterConditionInput | null,\n};\n\nexport type CreateEncounterMutation = {\n createEncounter?: {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n appointment: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n },\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n coordinatorID: string,\n coordinator?: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n techID?: string | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitions?: Array< {\n __typename: \"Requisition\",\n id: string,\n labOrganization?: LabOrganization | null,\n // A unique numerical patient requisition number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n requisitionNumber?: string | null,\n } > | null,\n requisitionUploads?: Array< {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n covid19Questions?: {\n __typename: \"COVID19Questions\",\n isForTravel?: boolean | null,\n isForWorkOrSchool?: boolean | null,\n isForAPublicEvent?: boolean | null,\n isForPotentialExposure?: boolean | null,\n isForSymptoms?: boolean | null,\n isForOtherReasons?: boolean | null,\n } | null,\n bloodCollectionDetails?: {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n } | null,\n capillaryDrawCollectionDetails?: {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n } | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n serviceOutcomes?: Array< {\n __typename: \"ServiceOutcome\",\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromSchedulerAboutServiceFailure?: string | null,\n serviceDetailJSON?: string | null,\n } > | null,\n diagnosisCodes?: Array< {\n __typename: \"Coding\",\n system: string,\n code: string,\n displayName?: string | null,\n } > | null,\n // The partner's identifier for this encounter/appointment:\n // - FMI Case number for Foundation,\n // - Accession Number for Guardant,\n // - Job ID for Natera\n partnersEncounterID?: {\n __typename: \"CustomProperty\",\n key: CustomPropertyKey,\n value: string,\n } | null,\n documents?: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } > | null,\n observations?: Array< {\n __typename: \"Observation\",\n id: string,\n // Per FHIR specifications, we should only have value or valueCoding\n value?: string | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n notes?: string | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n source?: ObservationSource | null,\n } > | null,\n procedures?: Array< {\n __typename: \"Procedure\",\n source: ProcedureSource,\n } > | null,\n escalation?: {\n __typename: \"Escalation\",\n isResolved?: boolean | null,\n symptoms?: Array< EscalationSymptom > | null,\n // If OTHER is selected in the symptoms this contains the list of other symptoms.\n otherSymptoms?: string | null,\n // Comments from the patient to the escalation owner, like their medical history. The escalation owner is the scheduler who is filling out the report.\n commentsFromPatientToEscalationOwner?: string | null,\n // Comments from the escalation owner to the partner about the escalation. This includes the general assessment of the situation involving the patient. The escalation owner is the scheduler who is filling out the report.\n commentsFromEscalationOwnerToPartnerAboutEscalation?: string | null,\n outcome?: EscalationOutcome | null,\n // If OTHER is selected for the outcome this contains a description of the outcome.\n otherOutcome?: string | null,\n outcomeTimeframe?: EscalationOutcomeTimeframe | null,\n createdAt?: string | null,\n resolvedAt?: string | null,\n } | null,\n // List of questionnaires associated with the encounter\n questionnaires?: Array< {\n __typename: \"QuestionnaireEmbedded\",\n type: QuestionnaireType,\n url: string,\n metadataJSON?: string | null,\n } > | null,\n colorectalCancerScreeningAnswers?: {\n __typename: \"QuestionnaireResponse\",\n // Canonical id of Questionnaire being answered\n responseID?: string | null,\n // Date the answers were gathered\n authoredAt?: string | null,\n } | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n duplicateChildDocuments?: {\n __typename: \"DuplicateChildDocumentResponse\",\n s3ObjectIDs?: Array< string > | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateEncounterMutationVariables = {\n input: UpdateEncounterInput,\n condition?: ModelEncounterConditionInput | null,\n};\n\nexport type UpdateEncounterMutation = {\n updateEncounter?: {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n appointment: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n },\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n coordinatorID: string,\n coordinator?: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n techID?: string | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitions?: Array< {\n __typename: \"Requisition\",\n id: string,\n labOrganization?: LabOrganization | null,\n // A unique numerical patient requisition number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n requisitionNumber?: string | null,\n } > | null,\n requisitionUploads?: Array< {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n covid19Questions?: {\n __typename: \"COVID19Questions\",\n isForTravel?: boolean | null,\n isForWorkOrSchool?: boolean | null,\n isForAPublicEvent?: boolean | null,\n isForPotentialExposure?: boolean | null,\n isForSymptoms?: boolean | null,\n isForOtherReasons?: boolean | null,\n } | null,\n bloodCollectionDetails?: {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n } | null,\n capillaryDrawCollectionDetails?: {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n } | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n serviceOutcomes?: Array< {\n __typename: \"ServiceOutcome\",\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromSchedulerAboutServiceFailure?: string | null,\n serviceDetailJSON?: string | null,\n } > | null,\n diagnosisCodes?: Array< {\n __typename: \"Coding\",\n system: string,\n code: string,\n displayName?: string | null,\n } > | null,\n // The partner's identifier for this encounter/appointment:\n // - FMI Case number for Foundation,\n // - Accession Number for Guardant,\n // - Job ID for Natera\n partnersEncounterID?: {\n __typename: \"CustomProperty\",\n key: CustomPropertyKey,\n value: string,\n } | null,\n documents?: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } > | null,\n observations?: Array< {\n __typename: \"Observation\",\n id: string,\n // Per FHIR specifications, we should only have value or valueCoding\n value?: string | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n notes?: string | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n source?: ObservationSource | null,\n } > | null,\n procedures?: Array< {\n __typename: \"Procedure\",\n source: ProcedureSource,\n } > | null,\n escalation?: {\n __typename: \"Escalation\",\n isResolved?: boolean | null,\n symptoms?: Array< EscalationSymptom > | null,\n // If OTHER is selected in the symptoms this contains the list of other symptoms.\n otherSymptoms?: string | null,\n // Comments from the patient to the escalation owner, like their medical history. The escalation owner is the scheduler who is filling out the report.\n commentsFromPatientToEscalationOwner?: string | null,\n // Comments from the escalation owner to the partner about the escalation. This includes the general assessment of the situation involving the patient. The escalation owner is the scheduler who is filling out the report.\n commentsFromEscalationOwnerToPartnerAboutEscalation?: string | null,\n outcome?: EscalationOutcome | null,\n // If OTHER is selected for the outcome this contains a description of the outcome.\n otherOutcome?: string | null,\n outcomeTimeframe?: EscalationOutcomeTimeframe | null,\n createdAt?: string | null,\n resolvedAt?: string | null,\n } | null,\n // List of questionnaires associated with the encounter\n questionnaires?: Array< {\n __typename: \"QuestionnaireEmbedded\",\n type: QuestionnaireType,\n url: string,\n metadataJSON?: string | null,\n } > | null,\n colorectalCancerScreeningAnswers?: {\n __typename: \"QuestionnaireResponse\",\n // Canonical id of Questionnaire being answered\n responseID?: string | null,\n // Date the answers were gathered\n authoredAt?: string | null,\n } | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n duplicateChildDocuments?: {\n __typename: \"DuplicateChildDocumentResponse\",\n s3ObjectIDs?: Array< string > | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteEncounterMutationVariables = {\n input: DeleteEncounterInput,\n condition?: ModelEncounterConditionInput | null,\n};\n\nexport type DeleteEncounterMutation = {\n deleteEncounter?: {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n appointment: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n },\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n coordinatorID: string,\n coordinator?: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n techID?: string | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitions?: Array< {\n __typename: \"Requisition\",\n id: string,\n labOrganization?: LabOrganization | null,\n // A unique numerical patient requisition number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n requisitionNumber?: string | null,\n } > | null,\n requisitionUploads?: Array< {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n covid19Questions?: {\n __typename: \"COVID19Questions\",\n isForTravel?: boolean | null,\n isForWorkOrSchool?: boolean | null,\n isForAPublicEvent?: boolean | null,\n isForPotentialExposure?: boolean | null,\n isForSymptoms?: boolean | null,\n isForOtherReasons?: boolean | null,\n } | null,\n bloodCollectionDetails?: {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n } | null,\n capillaryDrawCollectionDetails?: {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n } | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n serviceOutcomes?: Array< {\n __typename: \"ServiceOutcome\",\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromSchedulerAboutServiceFailure?: string | null,\n serviceDetailJSON?: string | null,\n } > | null,\n diagnosisCodes?: Array< {\n __typename: \"Coding\",\n system: string,\n code: string,\n displayName?: string | null,\n } > | null,\n // The partner's identifier for this encounter/appointment:\n // - FMI Case number for Foundation,\n // - Accession Number for Guardant,\n // - Job ID for Natera\n partnersEncounterID?: {\n __typename: \"CustomProperty\",\n key: CustomPropertyKey,\n value: string,\n } | null,\n documents?: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } > | null,\n observations?: Array< {\n __typename: \"Observation\",\n id: string,\n // Per FHIR specifications, we should only have value or valueCoding\n value?: string | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n notes?: string | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n source?: ObservationSource | null,\n } > | null,\n procedures?: Array< {\n __typename: \"Procedure\",\n source: ProcedureSource,\n } > | null,\n escalation?: {\n __typename: \"Escalation\",\n isResolved?: boolean | null,\n symptoms?: Array< EscalationSymptom > | null,\n // If OTHER is selected in the symptoms this contains the list of other symptoms.\n otherSymptoms?: string | null,\n // Comments from the patient to the escalation owner, like their medical history. The escalation owner is the scheduler who is filling out the report.\n commentsFromPatientToEscalationOwner?: string | null,\n // Comments from the escalation owner to the partner about the escalation. This includes the general assessment of the situation involving the patient. The escalation owner is the scheduler who is filling out the report.\n commentsFromEscalationOwnerToPartnerAboutEscalation?: string | null,\n outcome?: EscalationOutcome | null,\n // If OTHER is selected for the outcome this contains a description of the outcome.\n otherOutcome?: string | null,\n outcomeTimeframe?: EscalationOutcomeTimeframe | null,\n createdAt?: string | null,\n resolvedAt?: string | null,\n } | null,\n // List of questionnaires associated with the encounter\n questionnaires?: Array< {\n __typename: \"QuestionnaireEmbedded\",\n type: QuestionnaireType,\n url: string,\n metadataJSON?: string | null,\n } > | null,\n colorectalCancerScreeningAnswers?: {\n __typename: \"QuestionnaireResponse\",\n // Canonical id of Questionnaire being answered\n responseID?: string | null,\n // Date the answers were gathered\n authoredAt?: string | null,\n } | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n duplicateChildDocuments?: {\n __typename: \"DuplicateChildDocumentResponse\",\n s3ObjectIDs?: Array< string > | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateCareNavigationEpisodeMutationVariables = {\n input: CreateCareNavigationEpisodeInput,\n condition?: ModelCareNavigationEpisodeConditionInput | null,\n};\n\nexport type CreateCareNavigationEpisodeMutation = {\n createCareNavigationEpisode?: {\n __typename: \"CareNavigationEpisode\",\n closedAt?: string | null,\n careNavigationGroup: CareNavigationGroup,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n partnerOrganization: PartnerOrganization,\n referralID: string,\n referral: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n },\n zendeskTicketID?: number | null,\n serviceOutcomes?: Array< {\n __typename: \"CareNavigationEpisodeServiceOutcome\",\n id: string,\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromCareNavigatorAboutServiceFailure?: string | null,\n statusChangedAt?: string | null,\n serviceDetailJSON: string,\n } > | null,\n documents?: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } > | null,\n observations?: Array< {\n __typename: \"Observation\",\n id: string,\n // Per FHIR specifications, we should only have value or valueCoding\n value?: string | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n notes?: string | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n source?: ObservationSource | null,\n } > | null,\n onboardingQuestionsAndAnswers?: Array< {\n __typename: \"OnboardingQuestionAnswerPair\",\n key: string,\n question: string,\n answer: string,\n } > | null,\n createdAt: string,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n id: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateCareNavigationEpisodeMutationVariables = {\n input: UpdateCareNavigationEpisodeInput,\n condition?: ModelCareNavigationEpisodeConditionInput | null,\n};\n\nexport type UpdateCareNavigationEpisodeMutation = {\n updateCareNavigationEpisode?: {\n __typename: \"CareNavigationEpisode\",\n closedAt?: string | null,\n careNavigationGroup: CareNavigationGroup,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n partnerOrganization: PartnerOrganization,\n referralID: string,\n referral: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n },\n zendeskTicketID?: number | null,\n serviceOutcomes?: Array< {\n __typename: \"CareNavigationEpisodeServiceOutcome\",\n id: string,\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromCareNavigatorAboutServiceFailure?: string | null,\n statusChangedAt?: string | null,\n serviceDetailJSON: string,\n } > | null,\n documents?: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } > | null,\n observations?: Array< {\n __typename: \"Observation\",\n id: string,\n // Per FHIR specifications, we should only have value or valueCoding\n value?: string | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n notes?: string | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n source?: ObservationSource | null,\n } > | null,\n onboardingQuestionsAndAnswers?: Array< {\n __typename: \"OnboardingQuestionAnswerPair\",\n key: string,\n question: string,\n answer: string,\n } > | null,\n createdAt: string,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n id: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteCareNavigationEpisodeMutationVariables = {\n input: DeleteCareNavigationEpisodeInput,\n condition?: ModelCareNavigationEpisodeConditionInput | null,\n};\n\nexport type DeleteCareNavigationEpisodeMutation = {\n deleteCareNavigationEpisode?: {\n __typename: \"CareNavigationEpisode\",\n closedAt?: string | null,\n careNavigationGroup: CareNavigationGroup,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n partnerOrganization: PartnerOrganization,\n referralID: string,\n referral: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n },\n zendeskTicketID?: number | null,\n serviceOutcomes?: Array< {\n __typename: \"CareNavigationEpisodeServiceOutcome\",\n id: string,\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromCareNavigatorAboutServiceFailure?: string | null,\n statusChangedAt?: string | null,\n serviceDetailJSON: string,\n } > | null,\n documents?: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } > | null,\n observations?: Array< {\n __typename: \"Observation\",\n id: string,\n // Per FHIR specifications, we should only have value or valueCoding\n value?: string | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n notes?: string | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n source?: ObservationSource | null,\n } > | null,\n onboardingQuestionsAndAnswers?: Array< {\n __typename: \"OnboardingQuestionAnswerPair\",\n key: string,\n question: string,\n answer: string,\n } > | null,\n createdAt: string,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n id: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateS3ObjectDataMutationVariables = {\n input: CreateS3ObjectDataInput,\n condition?: ModelS3ObjectDataConditionInput | null,\n};\n\nexport type CreateS3ObjectDataMutation = {\n createS3ObjectData?: {\n __typename: \"S3ObjectData\",\n id: string,\n region: string,\n bucket: string,\n key: string,\n identityID: string,\n parentType: S3ObjectParentType,\n parentID: string,\n contentType?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateS3ObjectDataMutationVariables = {\n input: UpdateS3ObjectDataInput,\n condition?: ModelS3ObjectDataConditionInput | null,\n};\n\nexport type UpdateS3ObjectDataMutation = {\n updateS3ObjectData?: {\n __typename: \"S3ObjectData\",\n id: string,\n region: string,\n bucket: string,\n key: string,\n identityID: string,\n parentType: S3ObjectParentType,\n parentID: string,\n contentType?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteS3ObjectDataMutationVariables = {\n input: DeleteS3ObjectDataInput,\n condition?: ModelS3ObjectDataConditionInput | null,\n};\n\nexport type DeleteS3ObjectDataMutation = {\n deleteS3ObjectData?: {\n __typename: \"S3ObjectData\",\n id: string,\n region: string,\n bucket: string,\n key: string,\n identityID: string,\n parentType: S3ObjectParentType,\n parentID: string,\n contentType?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreatePartnerUserInviteMutationVariables = {\n input: CreatePartnerUserInviteInput,\n condition?: ModelPartnerUserInviteConditionInput | null,\n};\n\nexport type CreatePartnerUserInviteMutation = {\n createPartnerUserInvite?: {\n __typename: \"PartnerUserInvite\",\n id: string,\n email: string,\n partnerOrganization: PartnerOrganization,\n status: PartnerUserInviteStatus,\n expiry: number,\n ttl?: number | null,\n managePartnerUsersAuthorization: ManagePartnerUsersAuthorization,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdatePartnerUserInviteMutationVariables = {\n input: UpdatePartnerUserInviteInput,\n condition?: ModelPartnerUserInviteConditionInput | null,\n};\n\nexport type UpdatePartnerUserInviteMutation = {\n updatePartnerUserInvite?: {\n __typename: \"PartnerUserInvite\",\n id: string,\n email: string,\n partnerOrganization: PartnerOrganization,\n status: PartnerUserInviteStatus,\n expiry: number,\n ttl?: number | null,\n managePartnerUsersAuthorization: ManagePartnerUsersAuthorization,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeletePartnerUserInviteMutationVariables = {\n input: DeletePartnerUserInviteInput,\n condition?: ModelPartnerUserInviteConditionInput | null,\n};\n\nexport type DeletePartnerUserInviteMutation = {\n deletePartnerUserInvite?: {\n __typename: \"PartnerUserInvite\",\n id: string,\n email: string,\n partnerOrganization: PartnerOrganization,\n status: PartnerUserInviteStatus,\n expiry: number,\n ttl?: number | null,\n managePartnerUsersAuthorization: ManagePartnerUsersAuthorization,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreatePractitionerMutationVariables = {\n input: CreatePractitionerInput,\n condition?: ModelPractitionerConditionInput | null,\n};\n\nexport type CreatePractitionerMutation = {\n createPractitioner?: {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n name?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n practitionerGroupName?: string | null,\n address?: {\n __typename: \"Address\",\n use?: AddressUse | null,\n lines: Array< string >,\n subunit?: string | null,\n city: string,\n state: string,\n postalCode: string,\n } | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdatePractitionerMutationVariables = {\n input: UpdatePractitionerInput,\n condition?: ModelPractitionerConditionInput | null,\n};\n\nexport type UpdatePractitionerMutation = {\n updatePractitioner?: {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n name?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n practitionerGroupName?: string | null,\n address?: {\n __typename: \"Address\",\n use?: AddressUse | null,\n lines: Array< string >,\n subunit?: string | null,\n city: string,\n state: string,\n postalCode: string,\n } | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeletePractitionerMutationVariables = {\n input: DeletePractitionerInput,\n condition?: ModelPractitionerConditionInput | null,\n};\n\nexport type DeletePractitionerMutation = {\n deletePractitioner?: {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n name?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n practitionerGroupName?: string | null,\n address?: {\n __typename: \"Address\",\n use?: AddressUse | null,\n lines: Array< string >,\n subunit?: string | null,\n city: string,\n state: string,\n postalCode: string,\n } | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateTechMutationVariables = {\n input: CreateTechInput,\n condition?: ModelTechConditionInput | null,\n};\n\nexport type CreateTechMutation = {\n createTech?: {\n __typename: \"Tech\",\n id: string,\n name: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n },\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n vehicle?: {\n __typename: \"Vehicle\",\n make: string,\n model: string,\n color: string,\n } | null,\n serviceTypes?: Array< ServiceType | null > | null,\n serviceTypesAvailabilityRules?: Array< {\n __typename: \"ServiceTypeAvailabilityRules\",\n serviceType: ServiceType,\n } > | null,\n availabilityRules?: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } > | null,\n locations?: Array< {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } > | null,\n profilePicture?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n serviceRegions?: {\n __typename: \"ModelTechServiceRegionConnection\",\n nextToken?: string | null,\n } | null,\n appointments?: {\n __typename: \"ModelAppointmentConnection\",\n nextToken?: string | null,\n } | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateTechServiceRegionMutationVariables = {\n input: CreateTechServiceRegionInput,\n condition?: ModelTechServiceRegionConditionInput | null,\n};\n\nexport type CreateTechServiceRegionMutation = {\n createTechServiceRegion?: {\n __typename: \"TechServiceRegion\",\n id: string,\n techID: string,\n serviceRegionName: string,\n tech: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n availabilityRules?: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateTechServiceRegionMutationVariables = {\n input: UpdateTechServiceRegionInput,\n condition?: ModelTechServiceRegionConditionInput | null,\n};\n\nexport type UpdateTechServiceRegionMutation = {\n updateTechServiceRegion?: {\n __typename: \"TechServiceRegion\",\n id: string,\n techID: string,\n serviceRegionName: string,\n tech: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n availabilityRules?: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteTechServiceRegionMutationVariables = {\n input: DeleteTechServiceRegionInput,\n condition?: ModelTechServiceRegionConditionInput | null,\n};\n\nexport type DeleteTechServiceRegionMutation = {\n deleteTechServiceRegion?: {\n __typename: \"TechServiceRegion\",\n id: string,\n techID: string,\n serviceRegionName: string,\n tech: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n availabilityRules?: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateRemoteTechMutationVariables = {\n input: CreateRemoteTechInput,\n condition?: ModelRemoteTechConditionInput | null,\n};\n\nexport type CreateRemoteTechMutation = {\n createRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n name: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n },\n email: string,\n phone?: string | null,\n profilePicture?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n availabilityRules: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } >,\n isActive: boolean,\n qualifications: Array< {\n __typename: \"Qualification\",\n qualificationType: QualificationType,\n geographicalState: string,\n } >,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCode?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n appointments?: {\n __typename: \"ModelAppointmentConnection\",\n nextToken?: string | null,\n } | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n matchableAndAcceptedAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateRemoteTechMutationVariables = {\n input: UpdateRemoteTechInput,\n condition?: ModelRemoteTechConditionInput | null,\n};\n\nexport type UpdateRemoteTechMutation = {\n updateRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n name: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n },\n email: string,\n phone?: string | null,\n profilePicture?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n availabilityRules: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } >,\n isActive: boolean,\n qualifications: Array< {\n __typename: \"Qualification\",\n qualificationType: QualificationType,\n geographicalState: string,\n } >,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCode?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n appointments?: {\n __typename: \"ModelAppointmentConnection\",\n nextToken?: string | null,\n } | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n matchableAndAcceptedAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateCoordinatorMutationVariables = {\n input: CreateCoordinatorInput,\n condition?: ModelCoordinatorConditionInput | null,\n};\n\nexport type CreateCoordinatorMutation = {\n createCoordinator?: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n name?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n consentToContactForAppointmentBySMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n billingCustomerID?: string | null,\n consentToContactForResearch?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketing?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n patients?: {\n __typename: \"ModelPatientConnection\",\n nextToken?: string | null,\n } | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateCoordinatorMutationVariables = {\n input: UpdateCoordinatorInput,\n condition?: ModelCoordinatorConditionInput | null,\n};\n\nexport type UpdateCoordinatorMutation = {\n updateCoordinator?: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n name?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n consentToContactForAppointmentBySMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n billingCustomerID?: string | null,\n consentToContactForResearch?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketing?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n patients?: {\n __typename: \"ModelPatientConnection\",\n nextToken?: string | null,\n } | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteCoordinatorMutationVariables = {\n input: DeleteCoordinatorInput,\n condition?: ModelCoordinatorConditionInput | null,\n};\n\nexport type DeleteCoordinatorMutation = {\n deleteCoordinator?: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n name?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n consentToContactForAppointmentBySMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n billingCustomerID?: string | null,\n consentToContactForResearch?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketing?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n patients?: {\n __typename: \"ModelPatientConnection\",\n nextToken?: string | null,\n } | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreatePatientMutationVariables = {\n input: CreatePatientInput,\n condition?: ModelPatientConditionInput | null,\n};\n\nexport type CreatePatientMutation = {\n createPatient?: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n location?: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n labOrganizationPatientIDs?: Array< {\n __typename: \"LabOrganizationPatientID\",\n labOrganization: LabOrganization,\n externalID: string,\n planNameForLabOrdering: string,\n } > | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n consentToContactForAppointmentBySMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForAppointmentByEmail?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n name: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n },\n caregiverName?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFront?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n insuranceCardUploadBack?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFront?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n medicareCardUploadBack?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n commentsFromTechsAboutEncounters?: Array< {\n __typename: \"CommentsFromTechAboutEncounter\",\n encounterID: string,\n appointmentStart: string,\n comments?: string | null,\n } > | null,\n bloodCollectionDetailsFromEncounters?: Array< {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n failureReason?: ServiceFailureReason | null,\n } > | null,\n capillaryDrawCollectionDetailsFromEncounters?: Array< {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n failureReason?: ServiceFailureReason | null,\n } > | null,\n referrals?: {\n __typename: \"ModelReferralConnection\",\n nextToken?: string | null,\n } | null,\n careNavigationEpisodes?: {\n __typename: \"ModelCareNavigationEpisodeConnection\",\n nextToken?: string | null,\n } | null,\n campaigns?: {\n __typename: \"ModelPatientCampaignStateConnection\",\n nextToken?: string | null,\n } | null,\n watchlistedAppointmentID?: string | null,\n watchlistedAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n responsiblePractitionerID?: string | null,\n responsiblePractitioner?: {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n practitionerGroupName?: string | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n consentToContactForMarketingSMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketingEmail?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketingPhone?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n suggestedAppointmentLocation?: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n mailingAddress?: {\n __typename: \"Address\",\n use?: AddressUse | null,\n lines: Array< string >,\n subunit?: string | null,\n city: string,\n state: string,\n postalCode: string,\n } | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n consents?: Array< {\n __typename: \"ConsentForm\",\n consentedAt: string,\n type: ConsentType,\n platform: QuestionnairePlatform,\n formID: string,\n responseID: string,\n appointmentID: string,\n rawResponseJSON: string,\n } > | null,\n telecom?: {\n __typename: \"ModelPatientContactPointConnection\",\n nextToken?: string | null,\n } | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdatePatientMutationVariables = {\n input: UpdatePatientInput,\n condition?: ModelPatientConditionInput | null,\n};\n\nexport type UpdatePatientMutation = {\n updatePatient?: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n location?: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n labOrganizationPatientIDs?: Array< {\n __typename: \"LabOrganizationPatientID\",\n labOrganization: LabOrganization,\n externalID: string,\n planNameForLabOrdering: string,\n } > | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n consentToContactForAppointmentBySMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForAppointmentByEmail?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n name: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n },\n caregiverName?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFront?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n insuranceCardUploadBack?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFront?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n medicareCardUploadBack?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n commentsFromTechsAboutEncounters?: Array< {\n __typename: \"CommentsFromTechAboutEncounter\",\n encounterID: string,\n appointmentStart: string,\n comments?: string | null,\n } > | null,\n bloodCollectionDetailsFromEncounters?: Array< {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n failureReason?: ServiceFailureReason | null,\n } > | null,\n capillaryDrawCollectionDetailsFromEncounters?: Array< {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n failureReason?: ServiceFailureReason | null,\n } > | null,\n referrals?: {\n __typename: \"ModelReferralConnection\",\n nextToken?: string | null,\n } | null,\n careNavigationEpisodes?: {\n __typename: \"ModelCareNavigationEpisodeConnection\",\n nextToken?: string | null,\n } | null,\n campaigns?: {\n __typename: \"ModelPatientCampaignStateConnection\",\n nextToken?: string | null,\n } | null,\n watchlistedAppointmentID?: string | null,\n watchlistedAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n responsiblePractitionerID?: string | null,\n responsiblePractitioner?: {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n practitionerGroupName?: string | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n consentToContactForMarketingSMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketingEmail?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketingPhone?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n suggestedAppointmentLocation?: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n mailingAddress?: {\n __typename: \"Address\",\n use?: AddressUse | null,\n lines: Array< string >,\n subunit?: string | null,\n city: string,\n state: string,\n postalCode: string,\n } | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n consents?: Array< {\n __typename: \"ConsentForm\",\n consentedAt: string,\n type: ConsentType,\n platform: QuestionnairePlatform,\n formID: string,\n responseID: string,\n appointmentID: string,\n rawResponseJSON: string,\n } > | null,\n telecom?: {\n __typename: \"ModelPatientContactPointConnection\",\n nextToken?: string | null,\n } | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeletePatientMutationVariables = {\n input: DeletePatientInput,\n condition?: ModelPatientConditionInput | null,\n};\n\nexport type DeletePatientMutation = {\n deletePatient?: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n location?: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n labOrganizationPatientIDs?: Array< {\n __typename: \"LabOrganizationPatientID\",\n labOrganization: LabOrganization,\n externalID: string,\n planNameForLabOrdering: string,\n } > | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n consentToContactForAppointmentBySMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForAppointmentByEmail?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n name: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n },\n caregiverName?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFront?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n insuranceCardUploadBack?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFront?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n medicareCardUploadBack?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n commentsFromTechsAboutEncounters?: Array< {\n __typename: \"CommentsFromTechAboutEncounter\",\n encounterID: string,\n appointmentStart: string,\n comments?: string | null,\n } > | null,\n bloodCollectionDetailsFromEncounters?: Array< {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n failureReason?: ServiceFailureReason | null,\n } > | null,\n capillaryDrawCollectionDetailsFromEncounters?: Array< {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n failureReason?: ServiceFailureReason | null,\n } > | null,\n referrals?: {\n __typename: \"ModelReferralConnection\",\n nextToken?: string | null,\n } | null,\n careNavigationEpisodes?: {\n __typename: \"ModelCareNavigationEpisodeConnection\",\n nextToken?: string | null,\n } | null,\n campaigns?: {\n __typename: \"ModelPatientCampaignStateConnection\",\n nextToken?: string | null,\n } | null,\n watchlistedAppointmentID?: string | null,\n watchlistedAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n responsiblePractitionerID?: string | null,\n responsiblePractitioner?: {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n practitionerGroupName?: string | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n consentToContactForMarketingSMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketingEmail?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketingPhone?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n suggestedAppointmentLocation?: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n mailingAddress?: {\n __typename: \"Address\",\n use?: AddressUse | null,\n lines: Array< string >,\n subunit?: string | null,\n city: string,\n state: string,\n postalCode: string,\n } | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n consents?: Array< {\n __typename: \"ConsentForm\",\n consentedAt: string,\n type: ConsentType,\n platform: QuestionnairePlatform,\n formID: string,\n responseID: string,\n appointmentID: string,\n rawResponseJSON: string,\n } > | null,\n telecom?: {\n __typename: \"ModelPatientContactPointConnection\",\n nextToken?: string | null,\n } | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreatePatientContactPointMutationVariables = {\n input: CreatePatientContactPointInput,\n condition?: ModelPatientContactPointConditionInput | null,\n};\n\nexport type CreatePatientContactPointMutation = {\n createPatientContactPoint?: {\n __typename: \"PatientContactPoint\",\n id: string,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n system: ContactPointSystem,\n value: string,\n status: ContactPointStatus,\n statusLastUpdatedAt?: string | null,\n sources?: Array< {\n __typename: \"PatientContactPointSource\",\n source: ContactPointSource,\n // Specifies a preferred order in which to use a set of contacts. ContactPoints with lower rank values are more preferred than those with higher rank values.\n rank?: number | null,\n system: ContactPointSystem,\n // The date and time the source reports the contact point as last being utilized. For example in the LexisNexis report they include the last time they saw the contact point in their data. This differs from the last time they reported it to _us_.\n reportedAsLastSeenAt?: string | null,\n // The date and time the source first reported this contact point associated to the patient\n firstReportedAt?: string | null,\n // The date and time the source last reported this contact point associated to the patient\n lastReportedAt?: string | null,\n metadataJSON?: string | null,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdatePatientContactPointMutationVariables = {\n input: UpdatePatientContactPointInput,\n condition?: ModelPatientContactPointConditionInput | null,\n};\n\nexport type UpdatePatientContactPointMutation = {\n updatePatientContactPoint?: {\n __typename: \"PatientContactPoint\",\n id: string,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n system: ContactPointSystem,\n value: string,\n status: ContactPointStatus,\n statusLastUpdatedAt?: string | null,\n sources?: Array< {\n __typename: \"PatientContactPointSource\",\n source: ContactPointSource,\n // Specifies a preferred order in which to use a set of contacts. ContactPoints with lower rank values are more preferred than those with higher rank values.\n rank?: number | null,\n system: ContactPointSystem,\n // The date and time the source reports the contact point as last being utilized. For example in the LexisNexis report they include the last time they saw the contact point in their data. This differs from the last time they reported it to _us_.\n reportedAsLastSeenAt?: string | null,\n // The date and time the source first reported this contact point associated to the patient\n firstReportedAt?: string | null,\n // The date and time the source last reported this contact point associated to the patient\n lastReportedAt?: string | null,\n metadataJSON?: string | null,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeletePatientContactPointMutationVariables = {\n input: DeletePatientContactPointInput,\n condition?: ModelPatientContactPointConditionInput | null,\n};\n\nexport type DeletePatientContactPointMutation = {\n deletePatientContactPoint?: {\n __typename: \"PatientContactPoint\",\n id: string,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n system: ContactPointSystem,\n value: string,\n status: ContactPointStatus,\n statusLastUpdatedAt?: string | null,\n sources?: Array< {\n __typename: \"PatientContactPointSource\",\n source: ContactPointSource,\n // Specifies a preferred order in which to use a set of contacts. ContactPoints with lower rank values are more preferred than those with higher rank values.\n rank?: number | null,\n system: ContactPointSystem,\n // The date and time the source reports the contact point as last being utilized. For example in the LexisNexis report they include the last time they saw the contact point in their data. This differs from the last time they reported it to _us_.\n reportedAsLastSeenAt?: string | null,\n // The date and time the source first reported this contact point associated to the patient\n firstReportedAt?: string | null,\n // The date and time the source last reported this contact point associated to the patient\n lastReportedAt?: string | null,\n metadataJSON?: string | null,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateReferralMutationVariables = {\n input: CreateReferralInput,\n condition?: ModelReferralConditionInput | null,\n};\n\nexport type CreateReferralMutation = {\n createReferral?: {\n __typename: \"Referral\",\n id: string,\n appointments?: {\n __typename: \"ModelAppointmentConnection\",\n nextToken?: string | null,\n } | null,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n partnerOrganization: PartnerOrganization,\n requisitions?: Array< {\n __typename: \"Requisition\",\n id: string,\n labOrganization?: LabOrganization | null,\n // A unique numerical patient requisition number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n requisitionNumber?: string | null,\n } > | null,\n requisitionUploads?: Array< {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n diagnosisCodes?: Array< {\n __typename: \"Coding\",\n system: string,\n code: string,\n displayName?: string | null,\n } > | null,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n outreachOutcomesPerServiceRequest?: Array< {\n __typename: \"ServiceRequestOutreachOutcome\",\n serviceRequestExternalID: string,\n productType?: ProductType | null,\n serviceTypes?: Array< ServiceType > | null,\n labOrganization: LabOrganization,\n outcome: string,\n notes?: string | null,\n } > | null,\n ttl?: number | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateReferralMutationVariables = {\n input: UpdateReferralInput,\n condition?: ModelReferralConditionInput | null,\n};\n\nexport type UpdateReferralMutation = {\n updateReferral?: {\n __typename: \"Referral\",\n id: string,\n appointments?: {\n __typename: \"ModelAppointmentConnection\",\n nextToken?: string | null,\n } | null,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n partnerOrganization: PartnerOrganization,\n requisitions?: Array< {\n __typename: \"Requisition\",\n id: string,\n labOrganization?: LabOrganization | null,\n // A unique numerical patient requisition number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n requisitionNumber?: string | null,\n } > | null,\n requisitionUploads?: Array< {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n diagnosisCodes?: Array< {\n __typename: \"Coding\",\n system: string,\n code: string,\n displayName?: string | null,\n } > | null,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n outreachOutcomesPerServiceRequest?: Array< {\n __typename: \"ServiceRequestOutreachOutcome\",\n serviceRequestExternalID: string,\n productType?: ProductType | null,\n serviceTypes?: Array< ServiceType > | null,\n labOrganization: LabOrganization,\n outcome: string,\n notes?: string | null,\n } > | null,\n ttl?: number | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteReferralMutationVariables = {\n input: DeleteReferralInput,\n condition?: ModelReferralConditionInput | null,\n};\n\nexport type DeleteReferralMutation = {\n deleteReferral?: {\n __typename: \"Referral\",\n id: string,\n appointments?: {\n __typename: \"ModelAppointmentConnection\",\n nextToken?: string | null,\n } | null,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n partnerOrganization: PartnerOrganization,\n requisitions?: Array< {\n __typename: \"Requisition\",\n id: string,\n labOrganization?: LabOrganization | null,\n // A unique numerical patient requisition number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n requisitionNumber?: string | null,\n } > | null,\n requisitionUploads?: Array< {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n diagnosisCodes?: Array< {\n __typename: \"Coding\",\n system: string,\n code: string,\n displayName?: string | null,\n } > | null,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n outreachOutcomesPerServiceRequest?: Array< {\n __typename: \"ServiceRequestOutreachOutcome\",\n serviceRequestExternalID: string,\n productType?: ProductType | null,\n serviceTypes?: Array< ServiceType > | null,\n labOrganization: LabOrganization,\n outcome: string,\n notes?: string | null,\n } > | null,\n ttl?: number | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreatePatientCampaignStateMutationVariables = {\n input: CreatePatientCampaignStateInput,\n condition?: ModelPatientCampaignStateConditionInput | null,\n};\n\nexport type CreatePatientCampaignStateMutation = {\n createPatientCampaignState?: {\n __typename: \"PatientCampaignState\",\n id: string,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n name: PatientCampaignStateName,\n campaignName: CampaignName,\n eligibilityStart: string,\n eligibilityEnd: string,\n cohort?: number | null,\n contextJSON: string,\n enteredAt: number,\n partnerOrganization: PartnerOrganization,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdatePatientCampaignStateMutationVariables = {\n input: UpdatePatientCampaignStateInput,\n condition?: ModelPatientCampaignStateConditionInput | null,\n};\n\nexport type UpdatePatientCampaignStateMutation = {\n updatePatientCampaignState?: {\n __typename: \"PatientCampaignState\",\n id: string,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n name: PatientCampaignStateName,\n campaignName: CampaignName,\n eligibilityStart: string,\n eligibilityEnd: string,\n cohort?: number | null,\n contextJSON: string,\n enteredAt: number,\n partnerOrganization: PartnerOrganization,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeletePatientCampaignStateMutationVariables = {\n input: DeletePatientCampaignStateInput,\n condition?: ModelPatientCampaignStateConditionInput | null,\n};\n\nexport type DeletePatientCampaignStateMutation = {\n deletePatientCampaignState?: {\n __typename: \"PatientCampaignState\",\n id: string,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n name: PatientCampaignStateName,\n campaignName: CampaignName,\n eligibilityStart: string,\n eligibilityEnd: string,\n cohort?: number | null,\n contextJSON: string,\n enteredAt: number,\n partnerOrganization: PartnerOrganization,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateProjectedEngagementActivityScheduleMutationVariables = {\n input: CreateProjectedEngagementActivityScheduleInput,\n condition?: ModelProjectedEngagementActivityScheduleConditionInput | null,\n};\n\nexport type CreateProjectedEngagementActivityScheduleMutation = {\n createProjectedEngagementActivitySchedule?: {\n __typename: \"ProjectedEngagementActivitySchedule\",\n id: string,\n // A friendly(-ish) name for the schedule.\n name: string,\n // The status of the schedule. This largely serves as a partition key so we can query for schedules sorted by accepted at.\n status: ProjectedEngagementActivityScheduleStatus,\n acceptedAt?: string | null,\n totalBatches?: number | null,\n processedBatches?: number | null,\n parametersJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateProjectedEngagementActivityScheduleMutationVariables = {\n input: UpdateProjectedEngagementActivityScheduleInput,\n condition?: ModelProjectedEngagementActivityScheduleConditionInput | null,\n};\n\nexport type UpdateProjectedEngagementActivityScheduleMutation = {\n updateProjectedEngagementActivitySchedule?: {\n __typename: \"ProjectedEngagementActivitySchedule\",\n id: string,\n // A friendly(-ish) name for the schedule.\n name: string,\n // The status of the schedule. This largely serves as a partition key so we can query for schedules sorted by accepted at.\n status: ProjectedEngagementActivityScheduleStatus,\n acceptedAt?: string | null,\n totalBatches?: number | null,\n processedBatches?: number | null,\n parametersJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteProjectedEngagementActivityScheduleMutationVariables = {\n input: DeleteProjectedEngagementActivityScheduleInput,\n condition?: ModelProjectedEngagementActivityScheduleConditionInput | null,\n};\n\nexport type DeleteProjectedEngagementActivityScheduleMutation = {\n deleteProjectedEngagementActivitySchedule?: {\n __typename: \"ProjectedEngagementActivitySchedule\",\n id: string,\n // A friendly(-ish) name for the schedule.\n name: string,\n // The status of the schedule. This largely serves as a partition key so we can query for schedules sorted by accepted at.\n status: ProjectedEngagementActivityScheduleStatus,\n acceptedAt?: string | null,\n totalBatches?: number | null,\n processedBatches?: number | null,\n parametersJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateUnlinkableReportMutationVariables = {\n input: CreateUnlinkableReportInput,\n condition?: ModelUnlinkableReportConditionInput | null,\n};\n\nexport type CreateUnlinkableReportMutation = {\n createUnlinkableReport?: {\n __typename: \"UnlinkableReport\",\n id: string,\n externalID: string,\n documents: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } >,\n zendeskTicketID?: number | null,\n hasBeenResolved?: boolean | null,\n patientName?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n patientNumber?: string | null,\n requisitionNumber?: string | null,\n labOrganization?: LabOrganization | null,\n serviceRequestExternalIDs?: Array< string > | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateUnlinkableReportMutationVariables = {\n input: UpdateUnlinkableReportInput,\n condition?: ModelUnlinkableReportConditionInput | null,\n};\n\nexport type UpdateUnlinkableReportMutation = {\n updateUnlinkableReport?: {\n __typename: \"UnlinkableReport\",\n id: string,\n externalID: string,\n documents: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } >,\n zendeskTicketID?: number | null,\n hasBeenResolved?: boolean | null,\n patientName?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n patientNumber?: string | null,\n requisitionNumber?: string | null,\n labOrganization?: LabOrganization | null,\n serviceRequestExternalIDs?: Array< string > | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteUnlinkableReportMutationVariables = {\n input: DeleteUnlinkableReportInput,\n condition?: ModelUnlinkableReportConditionInput | null,\n};\n\nexport type DeleteUnlinkableReportMutation = {\n deleteUnlinkableReport?: {\n __typename: \"UnlinkableReport\",\n id: string,\n externalID: string,\n documents: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } >,\n zendeskTicketID?: number | null,\n hasBeenResolved?: boolean | null,\n patientName?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n patientNumber?: string | null,\n requisitionNumber?: string | null,\n labOrganization?: LabOrganization | null,\n serviceRequestExternalIDs?: Array< string > | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateDropOffMutationVariables = {\n input: CreateDropOffInput,\n condition?: ModelDropOffConditionInput | null,\n};\n\nexport type CreateDropOffMutation = {\n createDropOff?: {\n __typename: \"DropOff\",\n id: string,\n organization: DropOffOrganization,\n name: string,\n phone?: string | null,\n email?: string | null,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n // Timezone generated based on the lat/long location of this dropoff\n timezone?: string | null,\n availabilityRules: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } >,\n hasParking?: boolean | null,\n hasDropBox?: boolean | null,\n commentsFromScheduler?: string | null,\n googleMapsPlaceID?: string | null,\n metroName: string,\n isActive: boolean,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateDropOffMutationVariables = {\n input: UpdateDropOffInput,\n condition?: ModelDropOffConditionInput | null,\n};\n\nexport type UpdateDropOffMutation = {\n updateDropOff?: {\n __typename: \"DropOff\",\n id: string,\n organization: DropOffOrganization,\n name: string,\n phone?: string | null,\n email?: string | null,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n // Timezone generated based on the lat/long location of this dropoff\n timezone?: string | null,\n availabilityRules: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } >,\n hasParking?: boolean | null,\n hasDropBox?: boolean | null,\n commentsFromScheduler?: string | null,\n googleMapsPlaceID?: string | null,\n metroName: string,\n isActive: boolean,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteDropOffMutationVariables = {\n input: DeleteDropOffInput,\n condition?: ModelDropOffConditionInput | null,\n};\n\nexport type DeleteDropOffMutation = {\n deleteDropOff?: {\n __typename: \"DropOff\",\n id: string,\n organization: DropOffOrganization,\n name: string,\n phone?: string | null,\n email?: string | null,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n // Timezone generated based on the lat/long location of this dropoff\n timezone?: string | null,\n availabilityRules: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } >,\n hasParking?: boolean | null,\n hasDropBox?: boolean | null,\n commentsFromScheduler?: string | null,\n googleMapsPlaceID?: string | null,\n metroName: string,\n isActive: boolean,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateServiceRequestTypeMutationVariables = {\n input: CreateServiceRequestTypeInput,\n condition?: ModelServiceRequestTypeConditionInput | null,\n};\n\nexport type CreateServiceRequestTypeMutation = {\n createServiceRequestType?: {\n __typename: \"ServiceRequestType\",\n id: string,\n cptCodes: Array< string | null >,\n externalID: string,\n displayName: string,\n // Alternate names for service requests, to be used in service request lookup\n synonyms?: Array< string | null > | null,\n labOrganization: LabOrganization,\n container?: string | null,\n serviceRequestTypeContainerID?: string | null,\n serviceRequestTypeContainer?: {\n __typename: \"ServiceRequestTypeContainer\",\n id: string,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n createdAt: string,\n updatedAt: string,\n } | null,\n specimen?: string | null,\n preferredSpecimen?: string | null,\n preferredVolumeDescription?: string | null,\n preferredVolumeMilliliters?: number | null,\n minimumVolume?: string | null,\n minimumVolumeAmount?: number | null,\n alternateSpecimen?: string | null,\n transportInstructions?: string | null,\n collectionInstructions?: string | null,\n collectionInstructionsVideoURL?: string | null,\n rejectionCriteria?: string | null,\n specimenStability?: string | null,\n patientPreparation?: string | null,\n resultAvailability?: string | null,\n serviceTypes?: Array< ServiceType > | null,\n containerSpecimenVolumes?: Array< {\n __typename: \"SpecimenContainerSpecimenVolumes\",\n // The ID of the container assigned to a serviceRequest, only applicable for non-combinable serviceRequests\n containerOverrideID?: string | null,\n // The type of tube e.g., SST, LAV EDTA, Urine Cup\n containerCategory?: SpecimenContainerCategory | null,\n // The minimum volume needed for a test\n minimumMilliliters?: number | null,\n // The preferred volume for a test in case we do not have minumum volume set above.\n preferredMilliliters?: number | null,\n // Whether it's acceptable to combine the specimens for this test and others into a single container during container calculations.\n // For example, if true, then blood for two tests requiring 2 mL of whole blood each can be drawn into a single 5 mL tube rather than two separate 3 mL tubes.\n isCombinable: boolean,\n // minimum container count needed for the specimen\n minimumContainerCount?: number | null,\n specimenTestTypes?: Array< SpecimenTestType | null > | null,\n } > | null,\n abstentions?: Array< {\n __typename: \"Abstention\",\n abstentionType: AbstentionType,\n preferredDurationMinutes: number,\n requiredDurationMinutes?: number | null,\n } > | null,\n customKit?: {\n __typename: \"ServiceRequestCustomKit\",\n photoURL: string,\n barcodePhotoURL?: string | null,\n recipient: CustomKitRecipient,\n // requires test requisition form (TRF) completion\n requiresTRFCompletion: boolean,\n // requires benefit correction form (BCF) completion\n requiresBCFCompletion: boolean,\n } | null,\n collectionTimeRules?: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } > | null,\n requiresBinaryPatientSex?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateServiceRequestTypeMutationVariables = {\n input: UpdateServiceRequestTypeInput,\n condition?: ModelServiceRequestTypeConditionInput | null,\n};\n\nexport type UpdateServiceRequestTypeMutation = {\n updateServiceRequestType?: {\n __typename: \"ServiceRequestType\",\n id: string,\n cptCodes: Array< string | null >,\n externalID: string,\n displayName: string,\n // Alternate names for service requests, to be used in service request lookup\n synonyms?: Array< string | null > | null,\n labOrganization: LabOrganization,\n container?: string | null,\n serviceRequestTypeContainerID?: string | null,\n serviceRequestTypeContainer?: {\n __typename: \"ServiceRequestTypeContainer\",\n id: string,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n createdAt: string,\n updatedAt: string,\n } | null,\n specimen?: string | null,\n preferredSpecimen?: string | null,\n preferredVolumeDescription?: string | null,\n preferredVolumeMilliliters?: number | null,\n minimumVolume?: string | null,\n minimumVolumeAmount?: number | null,\n alternateSpecimen?: string | null,\n transportInstructions?: string | null,\n collectionInstructions?: string | null,\n collectionInstructionsVideoURL?: string | null,\n rejectionCriteria?: string | null,\n specimenStability?: string | null,\n patientPreparation?: string | null,\n resultAvailability?: string | null,\n serviceTypes?: Array< ServiceType > | null,\n containerSpecimenVolumes?: Array< {\n __typename: \"SpecimenContainerSpecimenVolumes\",\n // The ID of the container assigned to a serviceRequest, only applicable for non-combinable serviceRequests\n containerOverrideID?: string | null,\n // The type of tube e.g., SST, LAV EDTA, Urine Cup\n containerCategory?: SpecimenContainerCategory | null,\n // The minimum volume needed for a test\n minimumMilliliters?: number | null,\n // The preferred volume for a test in case we do not have minumum volume set above.\n preferredMilliliters?: number | null,\n // Whether it's acceptable to combine the specimens for this test and others into a single container during container calculations.\n // For example, if true, then blood for two tests requiring 2 mL of whole blood each can be drawn into a single 5 mL tube rather than two separate 3 mL tubes.\n isCombinable: boolean,\n // minimum container count needed for the specimen\n minimumContainerCount?: number | null,\n specimenTestTypes?: Array< SpecimenTestType | null > | null,\n } > | null,\n abstentions?: Array< {\n __typename: \"Abstention\",\n abstentionType: AbstentionType,\n preferredDurationMinutes: number,\n requiredDurationMinutes?: number | null,\n } > | null,\n customKit?: {\n __typename: \"ServiceRequestCustomKit\",\n photoURL: string,\n barcodePhotoURL?: string | null,\n recipient: CustomKitRecipient,\n // requires test requisition form (TRF) completion\n requiresTRFCompletion: boolean,\n // requires benefit correction form (BCF) completion\n requiresBCFCompletion: boolean,\n } | null,\n collectionTimeRules?: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } > | null,\n requiresBinaryPatientSex?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteServiceRequestTypeMutationVariables = {\n input: DeleteServiceRequestTypeInput,\n condition?: ModelServiceRequestTypeConditionInput | null,\n};\n\nexport type DeleteServiceRequestTypeMutation = {\n deleteServiceRequestType?: {\n __typename: \"ServiceRequestType\",\n id: string,\n cptCodes: Array< string | null >,\n externalID: string,\n displayName: string,\n // Alternate names for service requests, to be used in service request lookup\n synonyms?: Array< string | null > | null,\n labOrganization: LabOrganization,\n container?: string | null,\n serviceRequestTypeContainerID?: string | null,\n serviceRequestTypeContainer?: {\n __typename: \"ServiceRequestTypeContainer\",\n id: string,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n createdAt: string,\n updatedAt: string,\n } | null,\n specimen?: string | null,\n preferredSpecimen?: string | null,\n preferredVolumeDescription?: string | null,\n preferredVolumeMilliliters?: number | null,\n minimumVolume?: string | null,\n minimumVolumeAmount?: number | null,\n alternateSpecimen?: string | null,\n transportInstructions?: string | null,\n collectionInstructions?: string | null,\n collectionInstructionsVideoURL?: string | null,\n rejectionCriteria?: string | null,\n specimenStability?: string | null,\n patientPreparation?: string | null,\n resultAvailability?: string | null,\n serviceTypes?: Array< ServiceType > | null,\n containerSpecimenVolumes?: Array< {\n __typename: \"SpecimenContainerSpecimenVolumes\",\n // The ID of the container assigned to a serviceRequest, only applicable for non-combinable serviceRequests\n containerOverrideID?: string | null,\n // The type of tube e.g., SST, LAV EDTA, Urine Cup\n containerCategory?: SpecimenContainerCategory | null,\n // The minimum volume needed for a test\n minimumMilliliters?: number | null,\n // The preferred volume for a test in case we do not have minumum volume set above.\n preferredMilliliters?: number | null,\n // Whether it's acceptable to combine the specimens for this test and others into a single container during container calculations.\n // For example, if true, then blood for two tests requiring 2 mL of whole blood each can be drawn into a single 5 mL tube rather than two separate 3 mL tubes.\n isCombinable: boolean,\n // minimum container count needed for the specimen\n minimumContainerCount?: number | null,\n specimenTestTypes?: Array< SpecimenTestType | null > | null,\n } > | null,\n abstentions?: Array< {\n __typename: \"Abstention\",\n abstentionType: AbstentionType,\n preferredDurationMinutes: number,\n requiredDurationMinutes?: number | null,\n } > | null,\n customKit?: {\n __typename: \"ServiceRequestCustomKit\",\n photoURL: string,\n barcodePhotoURL?: string | null,\n recipient: CustomKitRecipient,\n // requires test requisition form (TRF) completion\n requiresTRFCompletion: boolean,\n // requires benefit correction form (BCF) completion\n requiresBCFCompletion: boolean,\n } | null,\n collectionTimeRules?: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } > | null,\n requiresBinaryPatientSex?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateSpecimenContainerTypeMutationVariables = {\n input: CreateSpecimenContainerTypeInput,\n condition?: ModelSpecimenContainerTypeConditionInput | null,\n};\n\nexport type CreateSpecimenContainerTypeMutation = {\n createSpecimenContainerType?: {\n __typename: \"SpecimenContainerType\",\n id: string,\n name: string,\n category: SpecimenContainerCategory,\n // The whole capacity of the container. This would be the \"whole blood capacity\" for SST containers and the\n // general capacity for the containers which are not used for serum tests like Urine Cups and the Insure FOBT.\n capacityMilliliters: number,\n // Serum Capacity. The capacity of the container. Usually this is the volume of the container,\n // but in some cases the relevant capacity might reflect only a portion of the overall volume\n // (e.g. serum capacity in an SST, where the remaining volume is filled with clotted blood components).\n serumBloodCapacityMilliliters?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateSpecimenContainerTypeMutationVariables = {\n input: UpdateSpecimenContainerTypeInput,\n condition?: ModelSpecimenContainerTypeConditionInput | null,\n};\n\nexport type UpdateSpecimenContainerTypeMutation = {\n updateSpecimenContainerType?: {\n __typename: \"SpecimenContainerType\",\n id: string,\n name: string,\n category: SpecimenContainerCategory,\n // The whole capacity of the container. This would be the \"whole blood capacity\" for SST containers and the\n // general capacity for the containers which are not used for serum tests like Urine Cups and the Insure FOBT.\n capacityMilliliters: number,\n // Serum Capacity. The capacity of the container. Usually this is the volume of the container,\n // but in some cases the relevant capacity might reflect only a portion of the overall volume\n // (e.g. serum capacity in an SST, where the remaining volume is filled with clotted blood components).\n serumBloodCapacityMilliliters?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteSpecimenContainerTypeMutationVariables = {\n input: DeleteSpecimenContainerTypeInput,\n condition?: ModelSpecimenContainerTypeConditionInput | null,\n};\n\nexport type DeleteSpecimenContainerTypeMutation = {\n deleteSpecimenContainerType?: {\n __typename: \"SpecimenContainerType\",\n id: string,\n name: string,\n category: SpecimenContainerCategory,\n // The whole capacity of the container. This would be the \"whole blood capacity\" for SST containers and the\n // general capacity for the containers which are not used for serum tests like Urine Cups and the Insure FOBT.\n capacityMilliliters: number,\n // Serum Capacity. The capacity of the container. Usually this is the volume of the container,\n // but in some cases the relevant capacity might reflect only a portion of the overall volume\n // (e.g. serum capacity in an SST, where the remaining volume is filled with clotted blood components).\n serumBloodCapacityMilliliters?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateServiceRequestTypeContainerMutationVariables = {\n input: CreateServiceRequestTypeContainerInput,\n condition?: ModelServiceRequestTypeContainerConditionInput | null,\n};\n\nexport type CreateServiceRequestTypeContainerMutation = {\n createServiceRequestTypeContainer?: {\n __typename: \"ServiceRequestTypeContainer\",\n id: string,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateServiceRequestTypeContainerMutationVariables = {\n input: UpdateServiceRequestTypeContainerInput,\n condition?: ModelServiceRequestTypeContainerConditionInput | null,\n};\n\nexport type UpdateServiceRequestTypeContainerMutation = {\n updateServiceRequestTypeContainer?: {\n __typename: \"ServiceRequestTypeContainer\",\n id: string,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type DeleteServiceRequestTypeContainerMutationVariables = {\n input: DeleteServiceRequestTypeContainerInput,\n condition?: ModelServiceRequestTypeContainerConditionInput | null,\n};\n\nexport type DeleteServiceRequestTypeContainerMutation = {\n deleteServiceRequestTypeContainer?: {\n __typename: \"ServiceRequestTypeContainer\",\n id: string,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CreateSMSMutationVariables = {\n input: CreateSMSInput,\n condition?: ModelSMSConditionInput | null,\n};\n\nexport type CreateSMSMutation = {\n createSMS?: {\n __typename: \"SMS\",\n id: string,\n type: SMSType,\n contextJSON: string,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type BookAppointmentMutationVariables = {\n input: BookAppointmentInput,\n};\n\nexport type BookAppointmentMutation = {\n bookAppointment?: {\n __typename: \"BookAppointmentResponse\",\n appointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n } | null,\n};\n\nexport type CancelAppointmentMutationVariables = {\n input: CancelAppointmentInput,\n};\n\nexport type CancelAppointmentMutation = {\n cancelAppointment?: {\n __typename: \"CancelAppointmentResponse\",\n appointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n } | null,\n};\n\nexport type DeepCloneAndBookAppointmentMutationVariables = {\n input: DeepCloneAndBookAppointmentInput,\n};\n\nexport type DeepCloneAndBookAppointmentMutation = {\n deepCloneAndBookAppointment?: {\n __typename: \"DeepCloneAndBookAppointmentResponse\",\n appointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n } | null,\n};\n\nexport type AcceptAppointmentMutationVariables = {\n input: AcceptAppointmentInput,\n};\n\nexport type AcceptAppointmentMutation = {\n acceptAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ValidateAndCompleteAppointmentMutationVariables = {\n appointmentID: string,\n};\n\nexport type ValidateAndCompleteAppointmentMutation = {\n validateAndCompleteAppointment?: {\n __typename: \"ValidateAndCompleteAppointmentResponse\",\n appointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n } | null,\n};\n\nexport type ExportReportsMutationVariables = {\n type: ReportsExportType,\n destination: ReportsExportDestination,\n startDate?: string | null,\n endDate?: string | null,\n parametersJSON?: string | null,\n};\n\nexport type ExportReportsMutation = {\n exportReports?: Array< {\n __typename: \"Report\",\n name?: string | null,\n reportURL?: string | null,\n reportS3Object?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n type: ReportType,\n } > | null,\n};\n\nexport type ImportDataMutationVariables = {\n type: DataImportType,\n data: Array< DocumentInput >,\n parametersJSON?: string | null,\n outputDestination: ReportsExportDestination,\n write: boolean,\n verbose?: boolean | null,\n};\n\nexport type ImportDataMutation = {\n importData?: Array< {\n __typename: \"Report\",\n name?: string | null,\n reportURL?: string | null,\n reportS3Object?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n type: ReportType,\n } > | null,\n};\n\nexport type GenerateStripeSetupIntentMutationVariables = {\n input: GenerateStripeSetupIntentInput,\n};\n\nexport type GenerateStripeSetupIntentMutation = {\n generateStripeSetupIntent?: {\n __typename: \"GenerateStripeSetupIntentResponse\",\n clientSecret?: string | null,\n finalPrice?: number | null,\n strikethroughPrice?: number | null,\n } | null,\n};\n\nexport type GenerateProjectedEngagementActivityScheduleMutationVariables = {\n configuration?: string | null,\n name?: string | null,\n};\n\nexport type GenerateProjectedEngagementActivityScheduleMutation = {\n generateProjectedEngagementActivitySchedule: {\n __typename: \"ProjectedEngagementActivitySchedule\",\n id: string,\n // A friendly(-ish) name for the schedule.\n name: string,\n // The status of the schedule. This largely serves as a partition key so we can query for schedules sorted by accepted at.\n status: ProjectedEngagementActivityScheduleStatus,\n acceptedAt?: string | null,\n totalBatches?: number | null,\n processedBatches?: number | null,\n parametersJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n};\n\nexport type AcceptProjectedEngagementActivityScheduleMutationVariables = {\n id: string,\n};\n\nexport type AcceptProjectedEngagementActivityScheduleMutation = {\n acceptProjectedEngagementActivitySchedule: {\n __typename: \"ProjectedEngagementActivitySchedule\",\n id: string,\n // A friendly(-ish) name for the schedule.\n name: string,\n // The status of the schedule. This largely serves as a partition key so we can query for schedules sorted by accepted at.\n status: ProjectedEngagementActivityScheduleStatus,\n acceptedAt?: string | null,\n totalBatches?: number | null,\n processedBatches?: number | null,\n parametersJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n};\n\nexport type AddUnlinkableReportToEncounterMutationVariables = {\n encounterID: string,\n unlinkableReportID: string,\n linkedRequisitionID?: string | null,\n};\n\nexport type AddUnlinkableReportToEncounterMutation = {\n addUnlinkableReportToEncounter?: {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n appointment: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n },\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n coordinatorID: string,\n coordinator?: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n techID?: string | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitions?: Array< {\n __typename: \"Requisition\",\n id: string,\n labOrganization?: LabOrganization | null,\n // A unique numerical patient requisition number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n requisitionNumber?: string | null,\n } > | null,\n requisitionUploads?: Array< {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n covid19Questions?: {\n __typename: \"COVID19Questions\",\n isForTravel?: boolean | null,\n isForWorkOrSchool?: boolean | null,\n isForAPublicEvent?: boolean | null,\n isForPotentialExposure?: boolean | null,\n isForSymptoms?: boolean | null,\n isForOtherReasons?: boolean | null,\n } | null,\n bloodCollectionDetails?: {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n } | null,\n capillaryDrawCollectionDetails?: {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n } | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n serviceOutcomes?: Array< {\n __typename: \"ServiceOutcome\",\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromSchedulerAboutServiceFailure?: string | null,\n serviceDetailJSON?: string | null,\n } > | null,\n diagnosisCodes?: Array< {\n __typename: \"Coding\",\n system: string,\n code: string,\n displayName?: string | null,\n } > | null,\n // The partner's identifier for this encounter/appointment:\n // - FMI Case number for Foundation,\n // - Accession Number for Guardant,\n // - Job ID for Natera\n partnersEncounterID?: {\n __typename: \"CustomProperty\",\n key: CustomPropertyKey,\n value: string,\n } | null,\n documents?: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } > | null,\n observations?: Array< {\n __typename: \"Observation\",\n id: string,\n // Per FHIR specifications, we should only have value or valueCoding\n value?: string | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n notes?: string | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n source?: ObservationSource | null,\n } > | null,\n procedures?: Array< {\n __typename: \"Procedure\",\n source: ProcedureSource,\n } > | null,\n escalation?: {\n __typename: \"Escalation\",\n isResolved?: boolean | null,\n symptoms?: Array< EscalationSymptom > | null,\n // If OTHER is selected in the symptoms this contains the list of other symptoms.\n otherSymptoms?: string | null,\n // Comments from the patient to the escalation owner, like their medical history. The escalation owner is the scheduler who is filling out the report.\n commentsFromPatientToEscalationOwner?: string | null,\n // Comments from the escalation owner to the partner about the escalation. This includes the general assessment of the situation involving the patient. The escalation owner is the scheduler who is filling out the report.\n commentsFromEscalationOwnerToPartnerAboutEscalation?: string | null,\n outcome?: EscalationOutcome | null,\n // If OTHER is selected for the outcome this contains a description of the outcome.\n otherOutcome?: string | null,\n outcomeTimeframe?: EscalationOutcomeTimeframe | null,\n createdAt?: string | null,\n resolvedAt?: string | null,\n } | null,\n // List of questionnaires associated with the encounter\n questionnaires?: Array< {\n __typename: \"QuestionnaireEmbedded\",\n type: QuestionnaireType,\n url: string,\n metadataJSON?: string | null,\n } > | null,\n colorectalCancerScreeningAnswers?: {\n __typename: \"QuestionnaireResponse\",\n // Canonical id of Questionnaire being answered\n responseID?: string | null,\n // Date the answers were gathered\n authoredAt?: string | null,\n } | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n duplicateChildDocuments?: {\n __typename: \"DuplicateChildDocumentResponse\",\n s3ObjectIDs?: Array< string > | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type RerouteAppointmentMutationVariables = {\n input: RerouteAppointmentInput,\n};\n\nexport type RerouteAppointmentMutation = {\n rerouteAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ReviewPostAppointmentMutationVariables = {\n input: ReviewPostAppointmentInput,\n};\n\nexport type ReviewPostAppointmentMutation = {\n reviewPostAppointment?: {\n __typename: \"ReviewPostAppointmentResponse\",\n appointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n } | null,\n};\n\nexport type ReviewPreAppointmentMutationVariables = {\n input: ReviewPreAppointmentInput,\n};\n\nexport type ReviewPreAppointmentMutation = {\n reviewPreAppointment?: {\n __typename: \"ReviewPreAppointmentResponse\",\n appointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n } | null,\n};\n\nexport type ForceRescheduleAppointmentMutationVariables = {\n appointmentID: string,\n start: string,\n end: string,\n};\n\nexport type ForceRescheduleAppointmentMutation = {\n forceRescheduleAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateEncounterServiceOutcomesMutationVariables = {\n input: UpdateEncounterServiceOutcomesInput,\n};\n\nexport type UpdateEncounterServiceOutcomesMutation = {\n updateEncounterServiceOutcomes?: {\n __typename: \"UpdateEncounterServiceOutcomesResponse\",\n appointmentID: string,\n hasFailedServices: boolean,\n hasSuccessfulServices: boolean,\n } | null,\n};\n\nexport type SaveEmailToContactForServiceExpansionMutationVariables = {\n input: SaveEmailToContactForServiceExpansionInput,\n};\n\nexport type SaveEmailToContactForServiceExpansionMutation = {\n saveEmailToContactForServiceExpansion?: {\n __typename: \"SaveEmailToContactForServiceExpansionResponse\",\n _?: number | null,\n } | null,\n};\n\nexport type SendEFaxMutationVariables = {\n input: SendEFaxInput,\n};\n\nexport type SendEFaxMutation = {\n sendEFax?: {\n __typename: \"SendEFaxResponse\",\n result?: string | null,\n errorMessage?: string | null,\n sentAt?: string | null,\n } | null,\n};\n\nexport type SendEncounterSummaryToPractitionerMutationVariables = {\n input: SendEncounterSummaryToPractitionerInput,\n};\n\nexport type SendEncounterSummaryToPractitionerMutation = {\n sendEncounterSummaryToPractitioner?: {\n __typename: \"SendEncounterSummaryToPractitionerResponse\",\n sentAt?: string | null,\n response?: string | null,\n errorMessage?: string | null,\n to?: Array< string | null > | null,\n } | null,\n};\n\nexport type SendEncounterSummaryEmailMutationVariables = {\n input: SendEncounterSummaryEmailInput,\n};\n\nexport type SendEncounterSummaryEmailMutation = {\n sendEncounterSummaryEmail?: {\n __typename: \"SendEncounterSummaryEmailResponse\",\n sentAt?: string | null,\n response?: string | null,\n to?: Array< string | null > | null,\n } | null,\n};\n\nexport type StartCareNavigationEpisodesMutationVariables = {\n referralID: string,\n episodeDetails: Array< StartCareNavigationEpisodeDetails >,\n};\n\nexport type StartCareNavigationEpisodesMutation = {\n startCareNavigationEpisodes?: Array< {\n __typename: \"CareNavigationEpisode\",\n closedAt?: string | null,\n careNavigationGroup: CareNavigationGroup,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n partnerOrganization: PartnerOrganization,\n referralID: string,\n referral: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n },\n zendeskTicketID?: number | null,\n serviceOutcomes?: Array< {\n __typename: \"CareNavigationEpisodeServiceOutcome\",\n id: string,\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromCareNavigatorAboutServiceFailure?: string | null,\n statusChangedAt?: string | null,\n serviceDetailJSON: string,\n } > | null,\n documents?: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } > | null,\n observations?: Array< {\n __typename: \"Observation\",\n id: string,\n // Per FHIR specifications, we should only have value or valueCoding\n value?: string | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n notes?: string | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n source?: ObservationSource | null,\n } > | null,\n onboardingQuestionsAndAnswers?: Array< {\n __typename: \"OnboardingQuestionAnswerPair\",\n key: string,\n question: string,\n answer: string,\n } > | null,\n createdAt: string,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n id: string,\n updatedAt: string,\n } > | null,\n};\n\nexport type RegisterPatientsInImageMoverMutationVariables = {\n input: RegisterPatientsInImageMoverInput,\n};\n\nexport type RegisterPatientsInImageMoverMutation = {\n registerPatientsInImageMover?: Array< {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n location?: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n labOrganizationPatientIDs?: Array< {\n __typename: \"LabOrganizationPatientID\",\n labOrganization: LabOrganization,\n externalID: string,\n planNameForLabOrdering: string,\n } > | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n consentToContactForAppointmentBySMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForAppointmentByEmail?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n name: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n },\n caregiverName?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFront?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n insuranceCardUploadBack?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFront?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n medicareCardUploadBack?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n commentsFromTechsAboutEncounters?: Array< {\n __typename: \"CommentsFromTechAboutEncounter\",\n encounterID: string,\n appointmentStart: string,\n comments?: string | null,\n } > | null,\n bloodCollectionDetailsFromEncounters?: Array< {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n failureReason?: ServiceFailureReason | null,\n } > | null,\n capillaryDrawCollectionDetailsFromEncounters?: Array< {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n failureReason?: ServiceFailureReason | null,\n } > | null,\n referrals?: {\n __typename: \"ModelReferralConnection\",\n nextToken?: string | null,\n } | null,\n careNavigationEpisodes?: {\n __typename: \"ModelCareNavigationEpisodeConnection\",\n nextToken?: string | null,\n } | null,\n campaigns?: {\n __typename: \"ModelPatientCampaignStateConnection\",\n nextToken?: string | null,\n } | null,\n watchlistedAppointmentID?: string | null,\n watchlistedAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n responsiblePractitionerID?: string | null,\n responsiblePractitioner?: {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n practitionerGroupName?: string | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n consentToContactForMarketingSMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketingEmail?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketingPhone?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n suggestedAppointmentLocation?: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n mailingAddress?: {\n __typename: \"Address\",\n use?: AddressUse | null,\n lines: Array< string >,\n subunit?: string | null,\n city: string,\n state: string,\n postalCode: string,\n } | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n consents?: Array< {\n __typename: \"ConsentForm\",\n consentedAt: string,\n type: ConsentType,\n platform: QuestionnairePlatform,\n formID: string,\n responseID: string,\n appointmentID: string,\n rawResponseJSON: string,\n } > | null,\n telecom?: {\n __typename: \"ModelPatientContactPointConnection\",\n nextToken?: string | null,\n } | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n};\n\nexport type UpdatePatientInImageMoverMutationVariables = {\n input: UpdatePatientInImageMoverInput,\n};\n\nexport type UpdatePatientInImageMoverMutation = {\n updatePatientInImageMover?: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n location?: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n labOrganizationPatientIDs?: Array< {\n __typename: \"LabOrganizationPatientID\",\n labOrganization: LabOrganization,\n externalID: string,\n planNameForLabOrdering: string,\n } > | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n consentToContactForAppointmentBySMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForAppointmentByEmail?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n name: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n },\n caregiverName?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFront?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n insuranceCardUploadBack?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFront?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n medicareCardUploadBack?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n commentsFromTechsAboutEncounters?: Array< {\n __typename: \"CommentsFromTechAboutEncounter\",\n encounterID: string,\n appointmentStart: string,\n comments?: string | null,\n } > | null,\n bloodCollectionDetailsFromEncounters?: Array< {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n failureReason?: ServiceFailureReason | null,\n } > | null,\n capillaryDrawCollectionDetailsFromEncounters?: Array< {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n failureReason?: ServiceFailureReason | null,\n } > | null,\n referrals?: {\n __typename: \"ModelReferralConnection\",\n nextToken?: string | null,\n } | null,\n careNavigationEpisodes?: {\n __typename: \"ModelCareNavigationEpisodeConnection\",\n nextToken?: string | null,\n } | null,\n campaigns?: {\n __typename: \"ModelPatientCampaignStateConnection\",\n nextToken?: string | null,\n } | null,\n watchlistedAppointmentID?: string | null,\n watchlistedAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n responsiblePractitionerID?: string | null,\n responsiblePractitioner?: {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n practitionerGroupName?: string | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n consentToContactForMarketingSMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketingEmail?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketingPhone?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n suggestedAppointmentLocation?: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n mailingAddress?: {\n __typename: \"Address\",\n use?: AddressUse | null,\n lines: Array< string >,\n subunit?: string | null,\n city: string,\n state: string,\n postalCode: string,\n } | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n consents?: Array< {\n __typename: \"ConsentForm\",\n consentedAt: string,\n type: ConsentType,\n platform: QuestionnairePlatform,\n formID: string,\n responseID: string,\n appointmentID: string,\n rawResponseJSON: string,\n } > | null,\n telecom?: {\n __typename: \"ModelPatientContactPointConnection\",\n nextToken?: string | null,\n } | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type GenerateAppointmentChecklistMutationVariables = {\n input: GenerateChecklistInput,\n};\n\nexport type GenerateAppointmentChecklistMutation = {\n generateAppointmentChecklist?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateAppointmentChecklistMutationVariables = {\n input: UpdateChecklistInput,\n};\n\nexport type UpdateAppointmentChecklistMutation = {\n updateAppointmentChecklist?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type GeneratePreReviewChecklistMutationVariables = {\n input: GenerateChecklistInput,\n};\n\nexport type GeneratePreReviewChecklistMutation = {\n generatePreReviewChecklist?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdatePreReviewChecklistMutationVariables = {\n input: UpdateChecklistInput,\n};\n\nexport type UpdatePreReviewChecklistMutation = {\n updatePreReviewChecklist?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type GeneratePostReviewChecklistMutationVariables = {\n input: GenerateChecklistInput,\n};\n\nexport type GeneratePostReviewChecklistMutation = {\n generatePostReviewChecklist?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdatePostReviewChecklistMutationVariables = {\n input: UpdateChecklistInput,\n};\n\nexport type UpdatePostReviewChecklistMutation = {\n updatePostReviewChecklist?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateTechAvailabilitiesMutationVariables = {\n input: UpdateTechAvailabilitiesInput,\n};\n\nexport type UpdateTechAvailabilitiesMutation = {\n updateTechAvailabilities?: {\n __typename: \"UpdateTechAvailabilitiesResponse\",\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n conflictingAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n } | null,\n};\n\nexport type UpdateEncounterRequisitionMutationVariables = {\n input: UpdateEncounterRequisitionInput,\n};\n\nexport type UpdateEncounterRequisitionMutation = {\n updateEncounterRequisition?: {\n __typename: \"UpdateEncounterRequisitionResponse\",\n appointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n encounter?: {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n patientID: string,\n coordinatorID: string,\n techID?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n } | null,\n};\n\nexport type UpdateEncounterDocumentsMutationVariables = {\n documentType: DocumentType,\n encounterID?: string | null,\n documents: Array< S3ObjectInput >,\n documentIDs?: Array< string > | null,\n};\n\nexport type UpdateEncounterDocumentsMutation = {\n updateEncounterDocuments?: {\n __typename: \"UpdateEncounterDocumentsResponse\",\n appointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n encounter?: {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n patientID: string,\n coordinatorID: string,\n techID?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n } | null,\n};\n\nexport type UpdateTechServiceRegionAvailabilitiesMutationVariables = {\n input: UpdateTechServiceRegionAvailabilitiesInput,\n};\n\nexport type UpdateTechServiceRegionAvailabilitiesMutation = {\n updateTechServiceRegionAvailabilities?: {\n __typename: \"UpdateTechServiceRegionAvailabilitiesResponse\",\n techServiceRegion?: {\n __typename: \"TechServiceRegion\",\n id: string,\n techID: string,\n serviceRegionName: string,\n createdAt: string,\n updatedAt: string,\n } | null,\n conflictingAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n } | null,\n};\n\nexport type UpdateTechAllAvailabilitiesMutationVariables = {\n input: UpdateTechAllAvailabilitiesInput,\n};\n\nexport type UpdateTechAllAvailabilitiesMutation = {\n updateTechAllAvailabilities?: {\n __typename: \"UpdateTechAllAvailabilitiesResponse\",\n conflictingAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n } | null,\n};\n\nexport type ConvertCoordinatorToPartnerCSRMutationVariables = {\n input: ConvertCoordinatorToPartnerCSRInput,\n};\n\nexport type ConvertCoordinatorToPartnerCSRMutation = {\n convertCoordinatorToPartnerCSR?: {\n __typename: \"ConvertCoordinatorToPartnerCSRResponse\",\n coordinator?: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n } | null,\n};\n\nexport type GenerateRequisitionsForPrintingMutationVariables = {\n input: GenerateRequisitionsForPrintingInput,\n};\n\nexport type GenerateRequisitionsForPrintingMutation = {\n generateRequisitionsForPrinting?: {\n __typename: \"GenerateRequisitionsForPrintingResponse\",\n output?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n url?: string | null,\n } | null,\n};\n\nexport type GenerateEncounterSummaryMutationVariables = {\n input: GenerateEncounterSummaryInput,\n};\n\nexport type GenerateEncounterSummaryMutation = {\n generateEncounterSummary?: {\n __typename: \"GenerateEncounterSummaryResponse\",\n s3ObjectID: string,\n identityID: string,\n bucket?: string | null,\n key: string,\n type?: EncounterSummaryType | null,\n } | null,\n};\n\nexport type GenerateTestFaxPDFMutationVariables = {\n input: GenerateTestFaxPDFInput,\n};\n\nexport type GenerateTestFaxPDFMutation = {\n generateTestFaxPDF?: {\n __typename: \"GenerateTestFaxPDFResponse\",\n outputPresignedURL: string,\n } | null,\n};\n\nexport type MergeAppointmentsMutationVariables = {\n input: MergeAppointmentsInput,\n};\n\nexport type MergeAppointmentsMutation = {\n mergeAppointments?: {\n __typename: \"MergeAppointmentsResponse\",\n appointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n } | null,\n};\n\nexport type GenerateMedicareBillingTemplateMutationVariables = {\n input: GenerateMedicareBillingTemplateInput,\n};\n\nexport type GenerateMedicareBillingTemplateMutation = {\n generateMedicareBillingTemplate?: {\n __typename: \"GenerateMedicareBillingTemplateResponse\",\n billingCSV: string,\n } | null,\n};\n\nexport type RemovePatientFromAppointmentMutationVariables = {\n input: RemovePatientFromAppointmentInput,\n};\n\nexport type RemovePatientFromAppointmentMutation = {\n removePatientFromAppointment?: {\n __typename: \"RemovePatientFromAppointmentResponse\",\n appointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n } | null,\n};\n\nexport type InviteUserToPartnerOrganizationMutationVariables = {\n input?: InviteUserToPartnerOrganizationInput | null,\n};\n\nexport type InviteUserToPartnerOrganizationMutation = {\n inviteUserToPartnerOrganization?: {\n __typename: \"InviteUserToPartnerOrganizationResponse\",\n invite?: {\n __typename: \"PartnerUserInvite\",\n id: string,\n email: string,\n partnerOrganization: PartnerOrganization,\n status: PartnerUserInviteStatus,\n expiry: number,\n ttl?: number | null,\n managePartnerUsersAuthorization: ManagePartnerUsersAuthorization,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n } | null,\n};\n\nexport type ChangeUserAccountStatusOrPermissionMutationVariables = {\n input?: ChangeUserAccountStatusOrPermissionInput | null,\n};\n\nexport type ChangeUserAccountStatusOrPermissionMutation = {\n changeUserAccountStatusOrPermission?: {\n __typename: \"ChangeUserAccountStatusOrPermissionResponse\",\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n } | null,\n};\n\nexport type ExpirePartnerUserInviteMutationVariables = {\n input?: ExpirePartnerUserInviteInput | null,\n};\n\nexport type ExpirePartnerUserInviteMutation = {\n expirePartnerUserInvite?: {\n __typename: \"ExpirePartnerUserInviteResponse\",\n invite: {\n __typename: \"PartnerUserInvite\",\n id: string,\n email: string,\n partnerOrganization: PartnerOrganization,\n status: PartnerUserInviteStatus,\n expiry: number,\n ttl?: number | null,\n managePartnerUsersAuthorization: ManagePartnerUsersAuthorization,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n } | null,\n};\n\nexport type UpdateContainerSpecimenVolumesMutationVariables = {\n input: UpdateContainerSpecimenVolumesInput,\n};\n\nexport type UpdateContainerSpecimenVolumesMutation = {\n updateContainerSpecimenVolumes?: {\n __typename: \"UpdateContainerSpecimenVolumesResponse\",\n id?: string | null,\n } | null,\n};\n\nexport type CreateZendeskTicketMutationVariables = {\n input?: CreateZendeskTicketInput | null,\n};\n\nexport type CreateZendeskTicketMutation = {\n createZendeskTicket?: {\n __typename: \"CreateZendeskTicketResponse\",\n id?: number | null,\n } | null,\n};\n\nexport type CreateReferralVerificationZendeskTicketMutationVariables = {\n input?: CreateReferralVerificationZendeskTicketInput | null,\n};\n\nexport type CreateReferralVerificationZendeskTicketMutation = {\n createReferralVerificationZendeskTicket?: {\n __typename: \"CreateReferralVerificationZendeskTicketResponse\",\n _?: number | null,\n } | null,\n};\n\nexport type BookReferralMutationVariables = {\n input: BookReferralInput,\n};\n\nexport type BookReferralMutation = {\n bookReferral?: {\n __typename: \"BookReferralResponse\",\n appointment?: {\n __typename: \"CustomAuthPartialAppointment\",\n id: string,\n serviceTypes: Array< ServiceType >,\n productTypes: Array< ProductType >,\n start: string,\n end: string,\n timezone: string,\n referralID?: string | null,\n status: AppointmentStatus,\n patientEncounterSummaryPresignedURL?: string | null,\n commentsFromCoordinatorAboutAppointment?: string | null,\n visitType: VisitType,\n } | null,\n } | null,\n};\n\nexport type CancelReferralBookingMutationVariables = {\n input: CancelReferralBookingInput,\n};\n\nexport type CancelReferralBookingMutation = {\n cancelReferralBooking?: {\n __typename: \"CancelReferralBookingResponse\",\n appointmentID?: string | null,\n } | null,\n};\n\nexport type UpdateReferralPatientInformationMutationVariables = {\n input: UpdateReferralPatientInformationInput,\n};\n\nexport type UpdateReferralPatientInformationMutation = {\n updateReferralPatientInformation?: {\n __typename: \"UpdateReferralPatientInformationMutationResponse\",\n patientID: string,\n phone?: string | null,\n email?: string | null,\n } | null,\n};\n\nexport type MarkFailedAllAppointmentServicesMutationVariables = {\n input: MarkFailedAllAppointmentServicesInput,\n};\n\nexport type MarkFailedAllAppointmentServicesMutation = {\n markFailedAllAppointmentServices?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpsertPatientAndCreateReferralMutationVariables = {\n input: UpsertPatientAndCreateReferralInput,\n};\n\nexport type UpsertPatientAndCreateReferralMutation = {\n upsertPatientAndCreateReferral: {\n __typename: \"UpsertPatientAndCreateReferralResponse\",\n patient?: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n },\n};\n\nexport type CreateServiceRequestMutationVariables = {\n input: CreateServiceRequestInput,\n};\n\nexport type CreateServiceRequestMutation = {\n createServiceRequest?: {\n __typename: \"CreateServiceRequestResponse\",\n serviceRequestTypeID: string,\n } | null,\n};\n\nexport type OnboardTechMutationVariables = {\n input: OnboardTechInput,\n};\n\nexport type OnboardTechMutation = {\n onboardTech?: {\n __typename: \"OnboardTechResponse\",\n id: string,\n } | null,\n};\n\nexport type UpsertPractitionersInZendeskMutationVariables = {\n input?: UpsertPractitionersInZendeskInput | null,\n};\n\nexport type UpsertPractitionersInZendeskMutation = {\n upsertPractitionersInZendesk?: {\n __typename: \"UpsertPractitionersInZendeskResponse\",\n updatedUsers?: number | null,\n } | null,\n};\n\nexport type TriggerTestPatientCampaignStateUpdateMutationVariables = {\n input?: TriggerTestPatientCampaignStateUpdateInput | null,\n};\n\nexport type TriggerTestPatientCampaignStateUpdateMutation = {\n triggerTestPatientCampaignStateUpdate?: {\n __typename: \"TriggerTestPatientCampaignStateUpdateResponse\",\n result: string,\n } | null,\n};\n\nexport type UnsubscribeFromEmailNotificationsMutationVariables = {\n input?: UnsubscribeFromEmailNotificationsInput | null,\n};\n\nexport type UnsubscribeFromEmailNotificationsMutation = {\n unsubscribeFromEmailNotifications?: {\n __typename: \"UnsubscribeFromEmailNotificationsResponse\",\n isUnsubscribed: boolean,\n } | null,\n};\n\nexport type SendVerificationFaxesToPractitionersMutationVariables = {\n input?: SendPractitionersVerificationFaxesInput | null,\n};\n\nexport type SendVerificationFaxesToPractitionersMutation = {\n sendVerificationFaxesToPractitioners?: {\n __typename: \"SendPractitionersVerificationFaxesResponse\",\n totalNPI: number,\n totalPractitionersToSendTo: number,\n totalFaxesToSend: number,\n totalFaxesSent: number,\n totalPractitionersSent: number,\n } | null,\n};\n\nexport type AutofillRequisitionFormMutationVariables = {\n input?: AutofillRequisitionFormInput | null,\n};\n\nexport type AutofillRequisitionFormMutation = {\n autofillRequisitionForm?: {\n __typename: \"AutofillRequisitionFormResponse\",\n encounter: {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n patientID: string,\n coordinatorID: string,\n techID?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n errors?: Array< string > | null,\n } | null,\n};\n\nexport type EscalateEncounterMutationVariables = {\n id: string,\n triggeringObservation: ObservationInput,\n};\n\nexport type EscalateEncounterMutation = {\n escalateEncounter?: {\n __typename: \"EscalateEncounterResponse\",\n encounterID: string,\n } | null,\n};\n\nexport type UpdateTechMutationVariables = {\n input: UpdateTechInput,\n};\n\nexport type UpdateTechMutation = {\n updateTech?: {\n __typename: \"Tech\",\n id: string,\n name: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n },\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n vehicle?: {\n __typename: \"Vehicle\",\n make: string,\n model: string,\n color: string,\n } | null,\n serviceTypes?: Array< ServiceType | null > | null,\n serviceTypesAvailabilityRules?: Array< {\n __typename: \"ServiceTypeAvailabilityRules\",\n serviceType: ServiceType,\n } > | null,\n availabilityRules?: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } > | null,\n locations?: Array< {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } > | null,\n profilePicture?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n serviceRegions?: {\n __typename: \"ModelTechServiceRegionConnection\",\n nextToken?: string | null,\n } | null,\n appointments?: {\n __typename: \"ModelAppointmentConnection\",\n nextToken?: string | null,\n } | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UploadDNCListMutationVariables = {\n partnerOrganization: PartnerOrganization,\n driveURL: string,\n write: boolean,\n};\n\nexport type UploadDNCListMutation = {\n uploadDNCList?: {\n __typename: \"UploadDNCListResponse\",\n ok: boolean,\n } | null,\n};\n\nexport type UploadPatientListMutationVariables = {\n partnerOrganization: PartnerOrganization,\n driveURL: string,\n patientListType: PatientListType,\n s3Filename?: string | null,\n skipColumns?: Array< string > | null,\n skipPatientExternalIDs?: Array< string > | null,\n campaignName?: CampaignName | null,\n write: boolean,\n verbose: boolean,\n};\n\nexport type UploadPatientListMutation = {\n uploadPatientList?: {\n __typename: \"UploadPatientListResponse\",\n resultsURL?: string | null,\n } | null,\n};\n\nexport type PlaceLabOrderForEncounterMutationVariables = {\n encounterID?: string | null,\n};\n\nexport type PlaceLabOrderForEncounterMutation = {\n placeLabOrderForEncounter?: {\n __typename: \"PlaceLabOrderForEncounterResponse\",\n encounter?: {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n patientID: string,\n coordinatorID: string,\n techID?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n errors?: Array< string > | null,\n } | null,\n};\n\nexport type TriggerPatientCampaignActionMutationVariables = {\n patientCampaignStateID: string,\n actionPropsJSON: string,\n expectedCurrentStateNameAfterUpdate?: PatientCampaignStateName | null,\n contextJSONPatch?: string | null,\n};\n\nexport type TriggerPatientCampaignActionMutation = {\n triggerPatientCampaignAction?: {\n __typename: \"PatientCampaignState\",\n id: string,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n name: PatientCampaignStateName,\n campaignName: CampaignName,\n eligibilityStart: string,\n eligibilityEnd: string,\n cohort?: number | null,\n contextJSON: string,\n enteredAt: number,\n partnerOrganization: PartnerOrganization,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type GenerateQuestionnaireForEncounterMutationVariables = {\n questionnaireType: QuestionnaireType,\n patientID: string,\n encounterID: string,\n};\n\nexport type GenerateQuestionnaireForEncounterMutation = {\n generateQuestionnaireForEncounter?: {\n __typename: \"GenerateQuestionnaireForEncounterResponse\",\n questionnaire: {\n __typename: \"QuestionnaireEmbedded\",\n type: QuestionnaireType,\n url: string,\n metadataJSON?: string | null,\n },\n } | null,\n};\n\nexport type AssignRemoteTechMutationVariables = {\n appointmentID: string,\n remoteTechID: string,\n canIgnoreAvailabilityConflicts?: boolean | null,\n};\n\nexport type AssignRemoteTechMutation = {\n assignRemoteTech?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UnassignRemoteTechMutationVariables = {\n appointmentID: string,\n remoteTechID: string,\n};\n\nexport type UnassignRemoteTechMutation = {\n unassignRemoteTech?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type CompleteRemoteTechMutationVariables = {\n appointmentID: string,\n};\n\nexport type CompleteRemoteTechMutation = {\n completeRemoteTech?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type UpdateTrickleConfigurationMutationVariables = {\n configuration: string,\n};\n\nexport type UpdateTrickleConfigurationMutation = {\n updateTrickleConfiguration?: {\n __typename: \"UpdateTrickleConfigurationResponse\",\n configuration: string,\n } | null,\n};\n\nexport type FetchTechConfirmationCallsMutationVariables = {\n appointmentIDs: Array< string >,\n};\n\nexport type FetchTechConfirmationCallsMutation = {\n fetchTechConfirmationCalls?: {\n __typename: \"FetchTechConfirmationCallsResponse\",\n appointmentIDsForConfirmationCalls: Array< string >,\n } | null,\n};\n\nexport type CompleteTechConfirmationMutationVariables = {\n appointmentID: string,\n callDisposition: TechConfirmationCallDisposition,\n};\n\nexport type CompleteTechConfirmationMutation = {\n completeTechConfirmation?: {\n __typename: \"CompleteTechConfirmationMutationResponse\",\n status: string,\n } | null,\n};\n\nexport type AddObservationsToEncounterMutationVariables = {\n encounterID: string,\n observations?: Array< ObservationInput > | null,\n};\n\nexport type AddObservationsToEncounterMutation = {\n addObservationsToEncounter?: {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n appointment: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n },\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n coordinatorID: string,\n coordinator?: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n techID?: string | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitions?: Array< {\n __typename: \"Requisition\",\n id: string,\n labOrganization?: LabOrganization | null,\n // A unique numerical patient requisition number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n requisitionNumber?: string | null,\n } > | null,\n requisitionUploads?: Array< {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n covid19Questions?: {\n __typename: \"COVID19Questions\",\n isForTravel?: boolean | null,\n isForWorkOrSchool?: boolean | null,\n isForAPublicEvent?: boolean | null,\n isForPotentialExposure?: boolean | null,\n isForSymptoms?: boolean | null,\n isForOtherReasons?: boolean | null,\n } | null,\n bloodCollectionDetails?: {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n } | null,\n capillaryDrawCollectionDetails?: {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n } | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n serviceOutcomes?: Array< {\n __typename: \"ServiceOutcome\",\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromSchedulerAboutServiceFailure?: string | null,\n serviceDetailJSON?: string | null,\n } > | null,\n diagnosisCodes?: Array< {\n __typename: \"Coding\",\n system: string,\n code: string,\n displayName?: string | null,\n } > | null,\n // The partner's identifier for this encounter/appointment:\n // - FMI Case number for Foundation,\n // - Accession Number for Guardant,\n // - Job ID for Natera\n partnersEncounterID?: {\n __typename: \"CustomProperty\",\n key: CustomPropertyKey,\n value: string,\n } | null,\n documents?: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } > | null,\n observations?: Array< {\n __typename: \"Observation\",\n id: string,\n // Per FHIR specifications, we should only have value or valueCoding\n value?: string | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n notes?: string | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n source?: ObservationSource | null,\n } > | null,\n procedures?: Array< {\n __typename: \"Procedure\",\n source: ProcedureSource,\n } > | null,\n escalation?: {\n __typename: \"Escalation\",\n isResolved?: boolean | null,\n symptoms?: Array< EscalationSymptom > | null,\n // If OTHER is selected in the symptoms this contains the list of other symptoms.\n otherSymptoms?: string | null,\n // Comments from the patient to the escalation owner, like their medical history. The escalation owner is the scheduler who is filling out the report.\n commentsFromPatientToEscalationOwner?: string | null,\n // Comments from the escalation owner to the partner about the escalation. This includes the general assessment of the situation involving the patient. The escalation owner is the scheduler who is filling out the report.\n commentsFromEscalationOwnerToPartnerAboutEscalation?: string | null,\n outcome?: EscalationOutcome | null,\n // If OTHER is selected for the outcome this contains a description of the outcome.\n otherOutcome?: string | null,\n outcomeTimeframe?: EscalationOutcomeTimeframe | null,\n createdAt?: string | null,\n resolvedAt?: string | null,\n } | null,\n // List of questionnaires associated with the encounter\n questionnaires?: Array< {\n __typename: \"QuestionnaireEmbedded\",\n type: QuestionnaireType,\n url: string,\n metadataJSON?: string | null,\n } > | null,\n colorectalCancerScreeningAnswers?: {\n __typename: \"QuestionnaireResponse\",\n // Canonical id of Questionnaire being answered\n responseID?: string | null,\n // Date the answers were gathered\n authoredAt?: string | null,\n } | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n duplicateChildDocuments?: {\n __typename: \"DuplicateChildDocumentResponse\",\n s3ObjectIDs?: Array< string > | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ForceTrickleNextNPatientsMutationVariables = {\n numberOfPatients: number,\n shouldMoveToReadyForFirstPhoneQueued?: boolean | null,\n campaignNames?: Array< CampaignName > | null,\n serviceRegionNames?: Array< string > | null,\n};\n\nexport type ForceTrickleNextNPatientsMutation = {\n forceTrickleNextNPatients?: number | null,\n};\n\nexport type EndOutreachInServiceRegionsMutationVariables = {\n campaignNames?: Array< CampaignName > | null,\n serviceRegionNames: Array< string >,\n};\n\nexport type EndOutreachInServiceRegionsMutation = {\n endOutreachInServiceRegions?: string | null,\n};\n\nexport type PublishCMSEnglishContentMutationVariables = {\n googleSheetsURL: string,\n};\n\nexport type PublishCMSEnglishContentMutation = {\n // This endpoint handles publishing the updated EN keys & copy from the CMS. This entails:\n // 1. Updating the en/cmsOutreachSms.json file with the new/updated translations & automatically opening a GitHub PR\n // 2. Creating a Lokalise Task with the new/updated keys for translation\n // 3. Sending a Slack message to #updates-engagement-content\n publishCMSEnglishContent?: {\n __typename: \"PublishCMSEnglishContentResponse\",\n pullRequestCreationSuccess: boolean,\n lokaliseTaskCreationSuccess: boolean,\n slackNotificationSuccess: boolean,\n } | null,\n};\n\nexport type GetSerialCounterQueryVariables = {\n type: SerialCounterType,\n};\n\nexport type GetSerialCounterQuery = {\n getSerialCounter?: {\n __typename: \"SerialCounter\",\n type: SerialCounterType,\n serialValue: number,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListSerialCountersQueryVariables = {\n type?: SerialCounterType | null,\n filter?: ModelSerialCounterFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListSerialCountersQuery = {\n listSerialCounters?: {\n __typename: \"ModelSerialCounterConnection\",\n items: Array< {\n __typename: \"SerialCounter\",\n type: SerialCounterType,\n serialValue: number,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type GetAppointmentQueryVariables = {\n id: string,\n};\n\nexport type GetAppointmentQuery = {\n getAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListAppointmentsQueryVariables = {\n filter?: ModelAppointmentFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAppointmentsQuery = {\n listAppointments?: {\n __typename: \"ModelAppointmentConnection\",\n items: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListAppointmentsByStatusByDateQueryVariables = {\n status: AppointmentStatus,\n start?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelAppointmentFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAppointmentsByStatusByDateQuery = {\n listAppointmentsByStatusByDate?: {\n __typename: \"ModelAppointmentConnection\",\n items: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListAppointmentsByStatusByMarkedReadyForRemoteTechAtQueryVariables = {\n status: AppointmentStatus,\n markedReadyForRemoteTechAt?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelAppointmentFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAppointmentsByStatusByMarkedReadyForRemoteTechAtQuery = {\n listAppointmentsByStatusByMarkedReadyForRemoteTechAt?: {\n __typename: \"ModelAppointmentConnection\",\n items: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListAppointmentsByTechByDateQueryVariables = {\n techID: string,\n start?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelAppointmentFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAppointmentsByTechByDateQuery = {\n listAppointmentsByTechByDate?: {\n __typename: \"ModelAppointmentConnection\",\n items: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListAppointmentsByRemoteTechByDateQueryVariables = {\n remoteTechID: string,\n start?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelAppointmentFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAppointmentsByRemoteTechByDateQuery = {\n listAppointmentsByRemoteTechByDate?: {\n __typename: \"ModelAppointmentConnection\",\n items: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListAppointmentsByAllocatedRemoteTechByDateQueryVariables = {\n allocatedRemoteTechID: string,\n start?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelAppointmentFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAppointmentsByAllocatedRemoteTechByDateQuery = {\n listAppointmentsByAllocatedRemoteTechByDate?: {\n __typename: \"ModelAppointmentConnection\",\n items: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListAppointmentsByCoordinatorByTechQueryVariables = {\n coordinatorID: string,\n techID?: ModelIDKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelAppointmentFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAppointmentsByCoordinatorByTechQuery = {\n listAppointmentsByCoordinatorByTech?: {\n __typename: \"ModelAppointmentConnection\",\n items: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListAppointmentsByPartnerOrganizationByDateQueryVariables = {\n partnerOrganization: PartnerOrganization,\n start?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelAppointmentFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAppointmentsByPartnerOrganizationByDateQuery = {\n listAppointmentsByPartnerOrganizationByDate?: {\n __typename: \"ModelAppointmentConnection\",\n items: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListAppointmentsByServiceRegionNameByDateQueryVariables = {\n serviceRegionName: string,\n start?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelAppointmentFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAppointmentsByServiceRegionNameByDateQuery = {\n listAppointmentsByServiceRegionNameByDate?: {\n __typename: \"ModelAppointmentConnection\",\n items: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListAppointmentsByGeographicalStateByDateQueryVariables = {\n geographicalState: string,\n start?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelAppointmentFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAppointmentsByGeographicalStateByDateQuery = {\n listAppointmentsByGeographicalStateByDate?: {\n __typename: \"ModelAppointmentConnection\",\n items: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListAppointmentsByRemoteTechQualificationTypeRequiredByDateQueryVariables = {\n remoteTechQualificationTypeRequired: QualificationType,\n start?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelAppointmentFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListAppointmentsByRemoteTechQualificationTypeRequiredByDateQuery = {\n listAppointmentsByRemoteTechQualificationTypeRequiredByDate?: {\n __typename: \"ModelAppointmentConnection\",\n items: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchAppointmentsQueryVariables = {\n filter?: SearchableAppointmentFilterInput | null,\n sort?: Array< SearchableAppointmentSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableAppointmentAggregationInput | null > | null,\n};\n\nexport type SearchAppointmentsQuery = {\n searchAppointments?: {\n __typename: \"SearchableAppointmentConnection\",\n items: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetEncounterQueryVariables = {\n id: string,\n};\n\nexport type GetEncounterQuery = {\n getEncounter?: {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n appointment: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n },\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n coordinatorID: string,\n coordinator?: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n techID?: string | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitions?: Array< {\n __typename: \"Requisition\",\n id: string,\n labOrganization?: LabOrganization | null,\n // A unique numerical patient requisition number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n requisitionNumber?: string | null,\n } > | null,\n requisitionUploads?: Array< {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n covid19Questions?: {\n __typename: \"COVID19Questions\",\n isForTravel?: boolean | null,\n isForWorkOrSchool?: boolean | null,\n isForAPublicEvent?: boolean | null,\n isForPotentialExposure?: boolean | null,\n isForSymptoms?: boolean | null,\n isForOtherReasons?: boolean | null,\n } | null,\n bloodCollectionDetails?: {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n } | null,\n capillaryDrawCollectionDetails?: {\n __typename: \"SpecimenCollectionDetails\",\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n deviceType?: SpecimenCollectionDeviceType | null,\n attempts?: number | null,\n } | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n serviceOutcomes?: Array< {\n __typename: \"ServiceOutcome\",\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromSchedulerAboutServiceFailure?: string | null,\n serviceDetailJSON?: string | null,\n } > | null,\n diagnosisCodes?: Array< {\n __typename: \"Coding\",\n system: string,\n code: string,\n displayName?: string | null,\n } > | null,\n // The partner's identifier for this encounter/appointment:\n // - FMI Case number for Foundation,\n // - Accession Number for Guardant,\n // - Job ID for Natera\n partnersEncounterID?: {\n __typename: \"CustomProperty\",\n key: CustomPropertyKey,\n value: string,\n } | null,\n documents?: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } > | null,\n observations?: Array< {\n __typename: \"Observation\",\n id: string,\n // Per FHIR specifications, we should only have value or valueCoding\n value?: string | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n notes?: string | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n source?: ObservationSource | null,\n } > | null,\n procedures?: Array< {\n __typename: \"Procedure\",\n source: ProcedureSource,\n } > | null,\n escalation?: {\n __typename: \"Escalation\",\n isResolved?: boolean | null,\n symptoms?: Array< EscalationSymptom > | null,\n // If OTHER is selected in the symptoms this contains the list of other symptoms.\n otherSymptoms?: string | null,\n // Comments from the patient to the escalation owner, like their medical history. The escalation owner is the scheduler who is filling out the report.\n commentsFromPatientToEscalationOwner?: string | null,\n // Comments from the escalation owner to the partner about the escalation. This includes the general assessment of the situation involving the patient. The escalation owner is the scheduler who is filling out the report.\n commentsFromEscalationOwnerToPartnerAboutEscalation?: string | null,\n outcome?: EscalationOutcome | null,\n // If OTHER is selected for the outcome this contains a description of the outcome.\n otherOutcome?: string | null,\n outcomeTimeframe?: EscalationOutcomeTimeframe | null,\n createdAt?: string | null,\n resolvedAt?: string | null,\n } | null,\n // List of questionnaires associated with the encounter\n questionnaires?: Array< {\n __typename: \"QuestionnaireEmbedded\",\n type: QuestionnaireType,\n url: string,\n metadataJSON?: string | null,\n } > | null,\n colorectalCancerScreeningAnswers?: {\n __typename: \"QuestionnaireResponse\",\n // Canonical id of Questionnaire being answered\n responseID?: string | null,\n // Date the answers were gathered\n authoredAt?: string | null,\n } | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n duplicateChildDocuments?: {\n __typename: \"DuplicateChildDocumentResponse\",\n s3ObjectIDs?: Array< string > | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListEncountersQueryVariables = {\n filter?: ModelEncounterFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListEncountersQuery = {\n listEncounters?: {\n __typename: \"ModelEncounterConnection\",\n items: Array< {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n patientID: string,\n coordinatorID: string,\n techID?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListEncountersByPatientByTechQueryVariables = {\n patientID: string,\n techID?: ModelIDKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelEncounterFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListEncountersByPatientByTechQuery = {\n listEncountersByPatientByTech?: {\n __typename: \"ModelEncounterConnection\",\n items: Array< {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n patientID: string,\n coordinatorID: string,\n techID?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchEncountersQueryVariables = {\n filter?: SearchableEncounterFilterInput | null,\n sort?: Array< SearchableEncounterSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableEncounterAggregationInput | null > | null,\n};\n\nexport type SearchEncountersQuery = {\n searchEncounters?: {\n __typename: \"SearchableEncounterConnection\",\n items: Array< {\n __typename: \"Encounter\",\n id: string,\n appointmentID: string,\n patientID: string,\n coordinatorID: string,\n techID?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n // Comments about patient info like medical/draw history, disabilities, etc.\n commentsFromCoordinatorAboutPatient?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter to be passed from scheduler to technician\n commentsFromSchedulerToTechAboutEncounter?: string | null,\n // Comments about the clinical aspects of the encounter and patient info not mentioned by the coordinator\n commentsFromTechAboutEncounter?: string | null,\n // Comments from customer support about actions taken on the encounter (e.g., services removed).\n commentsFromCustomerSupportAboutEncounter?: string | null,\n // Comments from the scheduler to the partner about actions taken on the encounter (e.g., services removed).\n commentsFromSchedulerToPartnerAboutEncounter?: string | null,\n productTypes?: Array< ProductType > | null,\n isMedicare?: boolean | null,\n isMedicareEligible?: boolean | null,\n wasPatientManuallyAdded?: boolean | null,\n patientEncounterSummaryLastSentAt?: string | null,\n // Timestamp of when cologuard order is placed (either via cron or by filing zendesk ticket)\n cologuardOrderSuccessfullyPlacedAt?: string | null,\n // Indicates if patient requested/consented to physically mailed results\n hasPatientRequestedMailedResults?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetCareNavigationEpisodeQueryVariables = {\n id: string,\n};\n\nexport type GetCareNavigationEpisodeQuery = {\n getCareNavigationEpisode?: {\n __typename: \"CareNavigationEpisode\",\n closedAt?: string | null,\n careNavigationGroup: CareNavigationGroup,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n partnerOrganization: PartnerOrganization,\n referralID: string,\n referral: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n },\n zendeskTicketID?: number | null,\n serviceOutcomes?: Array< {\n __typename: \"CareNavigationEpisodeServiceOutcome\",\n id: string,\n failureReason?: ServiceFailureReason | null,\n failureFault?: ServiceFailureFault | null,\n isRescheduleRequired?: boolean | null,\n serviceType: ServiceType,\n status?: ServiceStatus | null,\n commentsFromCareNavigatorAboutServiceFailure?: string | null,\n statusChangedAt?: string | null,\n serviceDetailJSON: string,\n } > | null,\n documents?: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } > | null,\n observations?: Array< {\n __typename: \"Observation\",\n id: string,\n // Per FHIR specifications, we should only have value or valueCoding\n value?: string | null,\n units?: string | null,\n referenceRange?: string | null,\n category: ObservationCategory,\n performerType: ObservationPerformerType,\n performerIdentifier?: string | null,\n observedAt?: string | null,\n bodySiteLaterality?: Laterality | null,\n bodySiteStructure?: BodyStructure | null,\n notes?: string | null,\n // Also called Abnormal Flag. A categorical assessment, providing a rough qualitative interpretation of the observation value.\n // http://hl7.org/fhir/valueset-observation-interpretation.html\n interpretationCode?: ObservationInterpretationCode | null,\n source?: ObservationSource | null,\n } > | null,\n onboardingQuestionsAndAnswers?: Array< {\n __typename: \"OnboardingQuestionAnswerPair\",\n key: string,\n question: string,\n answer: string,\n } > | null,\n createdAt: string,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n id: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListCareNavigationEpisodesQueryVariables = {\n filter?: ModelCareNavigationEpisodeFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListCareNavigationEpisodesQuery = {\n listCareNavigationEpisodes?: {\n __typename: \"ModelCareNavigationEpisodeConnection\",\n items: Array< {\n __typename: \"CareNavigationEpisode\",\n closedAt?: string | null,\n careNavigationGroup: CareNavigationGroup,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n referralID: string,\n zendeskTicketID?: number | null,\n createdAt: string,\n id: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListCareNavigationEpisodesByPartnerOrganizationByCreatedAtQueryVariables = {\n partnerOrganization: PartnerOrganization,\n createdAt?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelCareNavigationEpisodeFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListCareNavigationEpisodesByPartnerOrganizationByCreatedAtQuery = {\n listCareNavigationEpisodesByPartnerOrganizationByCreatedAt?: {\n __typename: \"ModelCareNavigationEpisodeConnection\",\n items: Array< {\n __typename: \"CareNavigationEpisode\",\n closedAt?: string | null,\n careNavigationGroup: CareNavigationGroup,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n referralID: string,\n zendeskTicketID?: number | null,\n createdAt: string,\n id: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchCareNavigationEpisodesQueryVariables = {\n filter?: SearchableCareNavigationEpisodeFilterInput | null,\n sort?: Array< SearchableCareNavigationEpisodeSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableCareNavigationEpisodeAggregationInput | null > | null,\n};\n\nexport type SearchCareNavigationEpisodesQuery = {\n searchCareNavigationEpisodes?: {\n __typename: \"SearchableCareNavigationEpisodeConnection\",\n items: Array< {\n __typename: \"CareNavigationEpisode\",\n closedAt?: string | null,\n careNavigationGroup: CareNavigationGroup,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n referralID: string,\n zendeskTicketID?: number | null,\n createdAt: string,\n id: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetS3ObjectDataQueryVariables = {\n id: string,\n};\n\nexport type GetS3ObjectDataQuery = {\n getS3ObjectData?: {\n __typename: \"S3ObjectData\",\n id: string,\n region: string,\n bucket: string,\n key: string,\n identityID: string,\n parentType: S3ObjectParentType,\n parentID: string,\n contentType?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListS3ObjectDataQueryVariables = {\n filter?: ModelS3ObjectDataFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListS3ObjectDataQuery = {\n listS3ObjectData?: {\n __typename: \"ModelS3ObjectDataConnection\",\n items: Array< {\n __typename: \"S3ObjectData\",\n id: string,\n region: string,\n bucket: string,\n key: string,\n identityID: string,\n parentType: S3ObjectParentType,\n parentID: string,\n contentType?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchS3ObjectDataQueryVariables = {\n filter?: SearchableS3ObjectDataFilterInput | null,\n sort?: Array< SearchableS3ObjectDataSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableS3ObjectDataAggregationInput | null > | null,\n};\n\nexport type SearchS3ObjectDataQuery = {\n searchS3ObjectData?: {\n __typename: \"SearchableS3ObjectDataConnection\",\n items: Array< {\n __typename: \"S3ObjectData\",\n id: string,\n region: string,\n bucket: string,\n key: string,\n identityID: string,\n parentType: S3ObjectParentType,\n parentID: string,\n contentType?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetPartnerUserInviteQueryVariables = {\n id: string,\n};\n\nexport type GetPartnerUserInviteQuery = {\n getPartnerUserInvite?: {\n __typename: \"PartnerUserInvite\",\n id: string,\n email: string,\n partnerOrganization: PartnerOrganization,\n status: PartnerUserInviteStatus,\n expiry: number,\n ttl?: number | null,\n managePartnerUsersAuthorization: ManagePartnerUsersAuthorization,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListPartnerUserInvitesQueryVariables = {\n id?: string | null,\n filter?: ModelPartnerUserInviteFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListPartnerUserInvitesQuery = {\n listPartnerUserInvites?: {\n __typename: \"ModelPartnerUserInviteConnection\",\n items: Array< {\n __typename: \"PartnerUserInvite\",\n id: string,\n email: string,\n partnerOrganization: PartnerOrganization,\n status: PartnerUserInviteStatus,\n expiry: number,\n ttl?: number | null,\n managePartnerUsersAuthorization: ManagePartnerUsersAuthorization,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListPartnerUserInvitesByPartnerOrganizationByEmailQueryVariables = {\n partnerOrganization: PartnerOrganization,\n email?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPartnerUserInviteFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPartnerUserInvitesByPartnerOrganizationByEmailQuery = {\n listPartnerUserInvitesByPartnerOrganizationByEmail?: {\n __typename: \"ModelPartnerUserInviteConnection\",\n items: Array< {\n __typename: \"PartnerUserInvite\",\n id: string,\n email: string,\n partnerOrganization: PartnerOrganization,\n status: PartnerUserInviteStatus,\n expiry: number,\n ttl?: number | null,\n managePartnerUsersAuthorization: ManagePartnerUsersAuthorization,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchPartnerUserInvitesQueryVariables = {\n filter?: SearchablePartnerUserInviteFilterInput | null,\n sort?: Array< SearchablePartnerUserInviteSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchablePartnerUserInviteAggregationInput | null > | null,\n};\n\nexport type SearchPartnerUserInvitesQuery = {\n searchPartnerUserInvites?: {\n __typename: \"SearchablePartnerUserInviteConnection\",\n items: Array< {\n __typename: \"PartnerUserInvite\",\n id: string,\n email: string,\n partnerOrganization: PartnerOrganization,\n status: PartnerUserInviteStatus,\n expiry: number,\n ttl?: number | null,\n managePartnerUsersAuthorization: ManagePartnerUsersAuthorization,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetPractitionerQueryVariables = {\n id: string,\n};\n\nexport type GetPractitionerQuery = {\n getPractitioner?: {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n name?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n practitionerGroupName?: string | null,\n address?: {\n __typename: \"Address\",\n use?: AddressUse | null,\n lines: Array< string >,\n subunit?: string | null,\n city: string,\n state: string,\n postalCode: string,\n } | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListPractitionersQueryVariables = {\n id?: string | null,\n filter?: ModelPractitionerFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListPractitionersQuery = {\n listPractitioners?: {\n __typename: \"ModelPractitionerConnection\",\n items: Array< {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n practitionerGroupName?: string | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type PractitionerByNPIQueryVariables = {\n NPI: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPractitionerFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type PractitionerByNPIQuery = {\n practitionerByNPI?: {\n __typename: \"ModelPractitionerConnection\",\n items: Array< {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n practitionerGroupName?: string | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListPractitionersByFaxQueryVariables = {\n fax: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPractitionerFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPractitionersByFaxQuery = {\n listPractitionersByFax?: {\n __typename: \"ModelPractitionerConnection\",\n items: Array< {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n practitionerGroupName?: string | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListPractitionersByFaxConfirmationStatusAndTimeQueryVariables = {\n faxConfirmationStatus: FaxConfirmationStatus,\n faxLastConfirmedAt?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPractitionerFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPractitionersByFaxConfirmationStatusAndTimeQuery = {\n listPractitionersByFaxConfirmationStatusAndTime?: {\n __typename: \"ModelPractitionerConnection\",\n items: Array< {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n practitionerGroupName?: string | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchPractitionersQueryVariables = {\n filter?: SearchablePractitionerFilterInput | null,\n sort?: Array< SearchablePractitionerSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchablePractitionerAggregationInput | null > | null,\n};\n\nexport type SearchPractitionersQuery = {\n searchPractitioners?: {\n __typename: \"SearchablePractitionerConnection\",\n items: Array< {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n practitionerGroupName?: string | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetTechQueryVariables = {\n id: string,\n};\n\nexport type GetTechQuery = {\n getTech?: {\n __typename: \"Tech\",\n id: string,\n name: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n },\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n vehicle?: {\n __typename: \"Vehicle\",\n make: string,\n model: string,\n color: string,\n } | null,\n serviceTypes?: Array< ServiceType | null > | null,\n serviceTypesAvailabilityRules?: Array< {\n __typename: \"ServiceTypeAvailabilityRules\",\n serviceType: ServiceType,\n } > | null,\n availabilityRules?: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } > | null,\n locations?: Array< {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } > | null,\n profilePicture?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n serviceRegions?: {\n __typename: \"ModelTechServiceRegionConnection\",\n nextToken?: string | null,\n } | null,\n appointments?: {\n __typename: \"ModelAppointmentConnection\",\n nextToken?: string | null,\n } | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListTechsQueryVariables = {\n id?: string | null,\n filter?: ModelTechFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListTechsQuery = {\n listTechs?: {\n __typename: \"ModelTechConnection\",\n items: Array< {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type TechsByPhoneQueryVariables = {\n phone: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelTechFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type TechsByPhoneQuery = {\n techsByPhone?: {\n __typename: \"ModelTechConnection\",\n items: Array< {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchTechsQueryVariables = {\n filter?: SearchableTechFilterInput | null,\n sort?: Array< SearchableTechSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableTechAggregationInput | null > | null,\n};\n\nexport type SearchTechsQuery = {\n searchTechs?: {\n __typename: \"SearchableTechConnection\",\n items: Array< {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetTechServiceRegionQueryVariables = {\n id: string,\n};\n\nexport type GetTechServiceRegionQuery = {\n getTechServiceRegion?: {\n __typename: \"TechServiceRegion\",\n id: string,\n techID: string,\n serviceRegionName: string,\n tech: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n availabilityRules?: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListTechServiceRegionsQueryVariables = {\n filter?: ModelTechServiceRegionFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListTechServiceRegionsQuery = {\n listTechServiceRegions?: {\n __typename: \"ModelTechServiceRegionConnection\",\n items: Array< {\n __typename: \"TechServiceRegion\",\n id: string,\n techID: string,\n serviceRegionName: string,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchTechServiceRegionsQueryVariables = {\n filter?: SearchableTechServiceRegionFilterInput | null,\n sort?: Array< SearchableTechServiceRegionSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableTechServiceRegionAggregationInput | null > | null,\n};\n\nexport type SearchTechServiceRegionsQuery = {\n searchTechServiceRegions?: {\n __typename: \"SearchableTechServiceRegionConnection\",\n items: Array< {\n __typename: \"TechServiceRegion\",\n id: string,\n techID: string,\n serviceRegionName: string,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetRemoteTechQueryVariables = {\n id: string,\n};\n\nexport type GetRemoteTechQuery = {\n getRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n name: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n },\n email: string,\n phone?: string | null,\n profilePicture?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n availabilityRules: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } >,\n isActive: boolean,\n qualifications: Array< {\n __typename: \"Qualification\",\n qualificationType: QualificationType,\n geographicalState: string,\n } >,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCode?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n appointments?: {\n __typename: \"ModelAppointmentConnection\",\n nextToken?: string | null,\n } | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n matchableAndAcceptedAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListRemoteTechsQueryVariables = {\n id?: string | null,\n filter?: ModelRemoteTechFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListRemoteTechsQuery = {\n listRemoteTechs?: {\n __typename: \"ModelRemoteTechConnection\",\n items: Array< {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchRemoteTechsQueryVariables = {\n filter?: SearchableRemoteTechFilterInput | null,\n sort?: Array< SearchableRemoteTechSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableRemoteTechAggregationInput | null > | null,\n};\n\nexport type SearchRemoteTechsQuery = {\n searchRemoteTechs?: {\n __typename: \"SearchableRemoteTechConnection\",\n items: Array< {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetCoordinatorQueryVariables = {\n id: string,\n};\n\nexport type GetCoordinatorQuery = {\n getCoordinator?: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n name?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n consentToContactForAppointmentBySMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n billingCustomerID?: string | null,\n consentToContactForResearch?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketing?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n patients?: {\n __typename: \"ModelPatientConnection\",\n nextToken?: string | null,\n } | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListCoordinatorsQueryVariables = {\n id?: string | null,\n filter?: ModelCoordinatorFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListCoordinatorsQuery = {\n listCoordinators?: {\n __typename: \"ModelCoordinatorConnection\",\n items: Array< {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type CoordinatorsByPhoneQueryVariables = {\n phone: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelCoordinatorFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type CoordinatorsByPhoneQuery = {\n coordinatorsByPhone?: {\n __typename: \"ModelCoordinatorConnection\",\n items: Array< {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type CoordinatorsByEmailQueryVariables = {\n email: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelCoordinatorFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type CoordinatorsByEmailQuery = {\n coordinatorsByEmail?: {\n __typename: \"ModelCoordinatorConnection\",\n items: Array< {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchCoordinatorsQueryVariables = {\n filter?: SearchableCoordinatorFilterInput | null,\n sort?: Array< SearchableCoordinatorSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableCoordinatorAggregationInput | null > | null,\n};\n\nexport type SearchCoordinatorsQuery = {\n searchCoordinators?: {\n __typename: \"SearchableCoordinatorConnection\",\n items: Array< {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetPatientQueryVariables = {\n id: string,\n};\n\nexport type GetPatientQuery = {\n getPatient?: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n location?: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n labOrganizationPatientIDs?: Array< {\n __typename: \"LabOrganizationPatientID\",\n labOrganization: LabOrganization,\n externalID: string,\n planNameForLabOrdering: string,\n } > | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n consentToContactForAppointmentBySMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForAppointmentByEmail?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n name: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n },\n caregiverName?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFront?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n insuranceCardUploadBack?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFront?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n medicareCardUploadBack?: {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n commentsFromTechsAboutEncounters?: Array< {\n __typename: \"CommentsFromTechAboutEncounter\",\n encounterID: string,\n appointmentStart: string,\n comments?: string | null,\n } > | null,\n bloodCollectionDetailsFromEncounters?: Array< {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n failureReason?: ServiceFailureReason | null,\n } > | null,\n capillaryDrawCollectionDetailsFromEncounters?: Array< {\n __typename: \"SpecimenCollectionDetailsFromEncounter\",\n encounterID: string,\n appointmentStart: string,\n failureReason?: ServiceFailureReason | null,\n } > | null,\n referrals?: {\n __typename: \"ModelReferralConnection\",\n nextToken?: string | null,\n } | null,\n careNavigationEpisodes?: {\n __typename: \"ModelCareNavigationEpisodeConnection\",\n nextToken?: string | null,\n } | null,\n campaigns?: {\n __typename: \"ModelPatientCampaignStateConnection\",\n nextToken?: string | null,\n } | null,\n watchlistedAppointmentID?: string | null,\n watchlistedAppointment?: {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n responsiblePractitionerID?: string | null,\n responsiblePractitioner?: {\n __typename: \"Practitioner\",\n id: string,\n // national provider identifier\n NPI: string,\n practitionerGroupName?: string | null,\n phone?: string | null,\n email?: string | null,\n fax?: string | null,\n faxConfirmationStatus?: FaxConfirmationStatus | null,\n faxLastConfirmedAt?: string | null,\n testFaxLastSentAt?: string | null,\n directTrustConfirmationStatus?: DirectTrustConfirmationStatus | null,\n incorrectFaxes?: Array< string > | null,\n role?: PractitionerRole | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n consentToContactForMarketingSMS?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketingEmail?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n consentToContactForMarketingPhone?: {\n __typename: \"Consent\",\n permit: boolean,\n version: number,\n } | null,\n suggestedAppointmentLocation?: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n } | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n mailingAddress?: {\n __typename: \"Address\",\n use?: AddressUse | null,\n lines: Array< string >,\n subunit?: string | null,\n city: string,\n state: string,\n postalCode: string,\n } | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n consents?: Array< {\n __typename: \"ConsentForm\",\n consentedAt: string,\n type: ConsentType,\n platform: QuestionnairePlatform,\n formID: string,\n responseID: string,\n appointmentID: string,\n rawResponseJSON: string,\n } > | null,\n telecom?: {\n __typename: \"ModelPatientContactPointConnection\",\n nextToken?: string | null,\n } | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListPatientsQueryVariables = {\n filter?: ModelPatientFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPatientsQuery = {\n listPatients?: {\n __typename: \"ModelPatientConnection\",\n items: Array< {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListPatientsByCSRPartnerOrganizationQueryVariables = {\n csrPartnerOrganization: PartnerOrganization,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPatientFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPatientsByCSRPartnerOrganizationQuery = {\n listPatientsByCSRPartnerOrganization?: {\n __typename: \"ModelPatientConnection\",\n items: Array< {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListPatientsByPartnerOrganizationAndByExternalIDQueryVariables = {\n partnerOrganization: PartnerOrganization,\n externalID?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPatientFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPatientsByPartnerOrganizationAndByExternalIDQuery = {\n listPatientsByPartnerOrganizationAndByExternalID?: {\n __typename: \"ModelPatientConnection\",\n items: Array< {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListPatientsByPartnerOrganizationByExternalIDQueryVariables = {\n partnerOrganization: PartnerOrganization,\n externalID?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPatientFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPatientsByPartnerOrganizationByExternalIDQuery = {\n listPatientsByPartnerOrganizationByExternalID?: {\n __typename: \"ModelPatientConnection\",\n items: Array< {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListPatientsByBirthdateByWatchlistedAppointmentIDQueryVariables = {\n birthdate: string,\n watchlistedAppointmentID?: ModelIDKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPatientFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPatientsByBirthdateByWatchlistedAppointmentIDQuery = {\n listPatientsByBirthdateByWatchlistedAppointmentID?: {\n __typename: \"ModelPatientConnection\",\n items: Array< {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListPatientsByBirthdateByPartnerOrganizationQueryVariables = {\n birthdate: string,\n partnerOrganization?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPatientFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPatientsByBirthdateByPartnerOrganizationQuery = {\n listPatientsByBirthdateByPartnerOrganization?: {\n __typename: \"ModelPatientConnection\",\n items: Array< {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchPatientsQueryVariables = {\n filter?: SearchablePatientFilterInput | null,\n sort?: Array< SearchablePatientSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchablePatientAggregationInput | null > | null,\n};\n\nexport type SearchPatientsQuery = {\n searchPatients?: {\n __typename: \"SearchablePatientConnection\",\n items: Array< {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetPatientContactPointQueryVariables = {\n id: string,\n};\n\nexport type GetPatientContactPointQuery = {\n getPatientContactPoint?: {\n __typename: \"PatientContactPoint\",\n id: string,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n system: ContactPointSystem,\n value: string,\n status: ContactPointStatus,\n statusLastUpdatedAt?: string | null,\n sources?: Array< {\n __typename: \"PatientContactPointSource\",\n source: ContactPointSource,\n // Specifies a preferred order in which to use a set of contacts. ContactPoints with lower rank values are more preferred than those with higher rank values.\n rank?: number | null,\n system: ContactPointSystem,\n // The date and time the source reports the contact point as last being utilized. For example in the LexisNexis report they include the last time they saw the contact point in their data. This differs from the last time they reported it to _us_.\n reportedAsLastSeenAt?: string | null,\n // The date and time the source first reported this contact point associated to the patient\n firstReportedAt?: string | null,\n // The date and time the source last reported this contact point associated to the patient\n lastReportedAt?: string | null,\n metadataJSON?: string | null,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListPatientContactPointsQueryVariables = {\n filter?: ModelPatientContactPointFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPatientContactPointsQuery = {\n listPatientContactPoints?: {\n __typename: \"ModelPatientContactPointConnection\",\n items: Array< {\n __typename: \"PatientContactPoint\",\n id: string,\n patientID: string,\n system: ContactPointSystem,\n value: string,\n status: ContactPointStatus,\n statusLastUpdatedAt?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListContactPointsByPatientQueryVariables = {\n patientID: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPatientContactPointFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListContactPointsByPatientQuery = {\n listContactPointsByPatient?: {\n __typename: \"ModelPatientContactPointConnection\",\n items: Array< {\n __typename: \"PatientContactPoint\",\n id: string,\n patientID: string,\n system: ContactPointSystem,\n value: string,\n status: ContactPointStatus,\n statusLastUpdatedAt?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchPatientContactPointsQueryVariables = {\n filter?: SearchablePatientContactPointFilterInput | null,\n sort?: Array< SearchablePatientContactPointSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchablePatientContactPointAggregationInput | null > | null,\n};\n\nexport type SearchPatientContactPointsQuery = {\n searchPatientContactPoints?: {\n __typename: \"SearchablePatientContactPointConnection\",\n items: Array< {\n __typename: \"PatientContactPoint\",\n id: string,\n patientID: string,\n system: ContactPointSystem,\n value: string,\n status: ContactPointStatus,\n statusLastUpdatedAt?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetReferralQueryVariables = {\n id: string,\n};\n\nexport type GetReferralQuery = {\n getReferral?: {\n __typename: \"Referral\",\n id: string,\n appointments?: {\n __typename: \"ModelAppointmentConnection\",\n nextToken?: string | null,\n } | null,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n partnerOrganization: PartnerOrganization,\n requisitions?: Array< {\n __typename: \"Requisition\",\n id: string,\n labOrganization?: LabOrganization | null,\n // A unique numerical patient requisition number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n requisitionNumber?: string | null,\n } > | null,\n requisitionUploads?: Array< {\n __typename: \"S3Object\",\n identityID: string,\n bucket?: string | null,\n region?: string | null,\n key: string,\n // url accepts 2 params, accessLevel private | public, shouldFlatted is responsible for\n // making PDF form as regular PDF without editable fields (resolves issues during printing)\n url?: string | null,\n } > | null,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n diagnosisCodes?: Array< {\n __typename: \"Coding\",\n system: string,\n code: string,\n displayName?: string | null,\n } > | null,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n outreachOutcomesPerServiceRequest?: Array< {\n __typename: \"ServiceRequestOutreachOutcome\",\n serviceRequestExternalID: string,\n productType?: ProductType | null,\n serviceTypes?: Array< ServiceType > | null,\n labOrganization: LabOrganization,\n outcome: string,\n notes?: string | null,\n } > | null,\n ttl?: number | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListReferralsQueryVariables = {\n filter?: ModelReferralFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListReferralsQuery = {\n listReferrals?: {\n __typename: \"ModelReferralConnection\",\n items: Array< {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListReferralsByPatientQueryVariables = {\n patientID: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelReferralFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListReferralsByPatientQuery = {\n listReferralsByPatient?: {\n __typename: \"ModelReferralConnection\",\n items: Array< {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchReferralsQueryVariables = {\n filter?: SearchableReferralFilterInput | null,\n sort?: Array< SearchableReferralSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableReferralAggregationInput | null > | null,\n};\n\nexport type SearchReferralsQuery = {\n searchReferrals?: {\n __typename: \"SearchableReferralConnection\",\n items: Array< {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetPatientCampaignStateQueryVariables = {\n id: string,\n};\n\nexport type GetPatientCampaignStateQuery = {\n getPatientCampaignState?: {\n __typename: \"PatientCampaignState\",\n id: string,\n patientID: string,\n patient: {\n __typename: \"Patient\",\n id: string,\n csrPartnerOrganization?: PartnerOrganization | null,\n partnerOrganization?: PartnerOrganization | null,\n coordinatorID: string,\n medicareCardID?: string | null,\n imageMoverUserID?: string | null,\n externalID?: string | null,\n secondaryExternalID?: string | null,\n specimenLabelID?: string | null,\n qtMedicalPatientID?: string | null,\n planName?: string | null,\n diabeticType?: DiabeticType | null,\n authorizedTechIDs?: Array< string > | null,\n isCoordinator: boolean,\n // Phone & email to use in place of the coordinators for messaging. Used primarily for patients whose appointments are booked for them by a partner's customer service representatives.\n phone?: string | null,\n email?: string | null,\n secondaryPhone?: string | null,\n birthdate?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n ethnicity?: Ethnicity | null,\n races?: Array< Race > | null,\n passportNumber?: string | null,\n insuranceCardUploadFrontS3ObjectID?: string | null,\n insuranceCardUploadBackS3ObjectID?: string | null,\n medicareCardUploadFrontS3ObjectID?: string | null,\n medicareCardUploadBackS3ObjectID?: string | null,\n watchlistedAppointmentID?: string | null,\n responsiblePractitionerID?: string | null,\n commentsFromPatientOrCaregiverAboutResponsiblePractitioner?: string | null,\n commentsFromCaregiverAboutResponsiblePractitioner?: string | null,\n suggestedAppointmentLocationAdditionalInformation?: string | null,\n preferredLanguage?: string | null,\n primaryLanguageBCP47?: string | null,\n secondaryLanguagesBCP47?: Array< string > | null,\n // A unique numerical patient reference number used for sending orders electronically. This should be only numeric and less than 10 digits. These are stored as strings so they can have leading zeros. The goal of leading zeros is be more easily readable in HL7 documents.\n patientNumber?: string | null,\n // latest validated gap list data referencing this patient.\n // - latestGapListUploadID: the upload ID of the latest ingestion for tracking purposes\n // - latestGapListRowJSON: the entire row\n // - latestGapListPassthroughJSON: a subset of the row for passing back to the partner with patient data in reports\n latestGapListUploadID?: string | null,\n latestGapListRowJSON?: string | null,\n latestGapListPassthroughJSON?: string | null,\n // A reference to a set of branding material provided for outreach.\n brandCode?: string | null,\n population?: PatientPopulation | null,\n elationID?: string | null,\n // Zus Patient Identification System:\n // - zusUPID (Zus Unique Patient ID): A global identifier that represents the same patient across multiple records\n // - zusID: A unique identifier for a specific patient record in Zus\n // \n // Note: Multiple patient records (each with their own zusID) can exist for the same patient (sharing the same zusUPID)\n // due to their data coming from different sources.\n zusUPID?: string | null,\n zusSprinterHealthPatientRecordID?: string | null,\n createdAt: string,\n updatedAt: string,\n },\n name: PatientCampaignStateName,\n campaignName: CampaignName,\n eligibilityStart: string,\n eligibilityEnd: string,\n cohort?: number | null,\n contextJSON: string,\n enteredAt: number,\n partnerOrganization: PartnerOrganization,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListPatientCampaignStatesQueryVariables = {\n filter?: ModelPatientCampaignStateFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPatientCampaignStatesQuery = {\n listPatientCampaignStates?: {\n __typename: \"ModelPatientCampaignStateConnection\",\n items: Array< {\n __typename: \"PatientCampaignState\",\n id: string,\n patientID: string,\n name: PatientCampaignStateName,\n campaignName: CampaignName,\n eligibilityStart: string,\n eligibilityEnd: string,\n cohort?: number | null,\n contextJSON: string,\n enteredAt: number,\n partnerOrganization: PartnerOrganization,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListCampaignsByPatientQueryVariables = {\n patientID: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPatientCampaignStateFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListCampaignsByPatientQuery = {\n listCampaignsByPatient?: {\n __typename: \"ModelPatientCampaignStateConnection\",\n items: Array< {\n __typename: \"PatientCampaignState\",\n id: string,\n patientID: string,\n name: PatientCampaignStateName,\n campaignName: CampaignName,\n eligibilityStart: string,\n eligibilityEnd: string,\n cohort?: number | null,\n contextJSON: string,\n enteredAt: number,\n partnerOrganization: PartnerOrganization,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListPatientCampaignStatesByNameQueryVariables = {\n name: PatientCampaignStateName,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPatientCampaignStateFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPatientCampaignStatesByNameQuery = {\n listPatientCampaignStatesByName?: {\n __typename: \"ModelPatientCampaignStateConnection\",\n items: Array< {\n __typename: \"PatientCampaignState\",\n id: string,\n patientID: string,\n name: PatientCampaignStateName,\n campaignName: CampaignName,\n eligibilityStart: string,\n eligibilityEnd: string,\n cohort?: number | null,\n contextJSON: string,\n enteredAt: number,\n partnerOrganization: PartnerOrganization,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListPatientCampaignStatesByCampaignNameQueryVariables = {\n campaignName: CampaignName,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelPatientCampaignStateFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListPatientCampaignStatesByCampaignNameQuery = {\n listPatientCampaignStatesByCampaignName?: {\n __typename: \"ModelPatientCampaignStateConnection\",\n items: Array< {\n __typename: \"PatientCampaignState\",\n id: string,\n patientID: string,\n name: PatientCampaignStateName,\n campaignName: CampaignName,\n eligibilityStart: string,\n eligibilityEnd: string,\n cohort?: number | null,\n contextJSON: string,\n enteredAt: number,\n partnerOrganization: PartnerOrganization,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchPatientCampaignStatesQueryVariables = {\n filter?: SearchablePatientCampaignStateFilterInput | null,\n sort?: Array< SearchablePatientCampaignStateSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchablePatientCampaignStateAggregationInput | null > | null,\n};\n\nexport type SearchPatientCampaignStatesQuery = {\n searchPatientCampaignStates?: {\n __typename: \"SearchablePatientCampaignStateConnection\",\n items: Array< {\n __typename: \"PatientCampaignState\",\n id: string,\n patientID: string,\n name: PatientCampaignStateName,\n campaignName: CampaignName,\n eligibilityStart: string,\n eligibilityEnd: string,\n cohort?: number | null,\n contextJSON: string,\n enteredAt: number,\n partnerOrganization: PartnerOrganization,\n previousStateName?: PatientCampaignStateName | null,\n reasonForTransitionToTerminalState?: ReasonForTransitionToTerminalState | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetProjectedEngagementActivityScheduleQueryVariables = {\n id: string,\n};\n\nexport type GetProjectedEngagementActivityScheduleQuery = {\n getProjectedEngagementActivitySchedule?: {\n __typename: \"ProjectedEngagementActivitySchedule\",\n id: string,\n // A friendly(-ish) name for the schedule.\n name: string,\n // The status of the schedule. This largely serves as a partition key so we can query for schedules sorted by accepted at.\n status: ProjectedEngagementActivityScheduleStatus,\n acceptedAt?: string | null,\n totalBatches?: number | null,\n processedBatches?: number | null,\n parametersJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListProjectedEngagementActivitySchedulesQueryVariables = {\n filter?: ModelProjectedEngagementActivityScheduleFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListProjectedEngagementActivitySchedulesQuery = {\n listProjectedEngagementActivitySchedules?: {\n __typename: \"ModelProjectedEngagementActivityScheduleConnection\",\n items: Array< {\n __typename: \"ProjectedEngagementActivitySchedule\",\n id: string,\n // A friendly(-ish) name for the schedule.\n name: string,\n // The status of the schedule. This largely serves as a partition key so we can query for schedules sorted by accepted at.\n status: ProjectedEngagementActivityScheduleStatus,\n acceptedAt?: string | null,\n totalBatches?: number | null,\n processedBatches?: number | null,\n parametersJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchProjectedEngagementActivitySchedulesQueryVariables = {\n filter?: SearchableProjectedEngagementActivityScheduleFilterInput | null,\n sort?: Array< SearchableProjectedEngagementActivityScheduleSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableProjectedEngagementActivityScheduleAggregationInput | null > | null,\n};\n\nexport type SearchProjectedEngagementActivitySchedulesQuery = {\n searchProjectedEngagementActivitySchedules?: {\n __typename: \"SearchableProjectedEngagementActivityScheduleConnection\",\n items: Array< {\n __typename: \"ProjectedEngagementActivitySchedule\",\n id: string,\n // A friendly(-ish) name for the schedule.\n name: string,\n // The status of the schedule. This largely serves as a partition key so we can query for schedules sorted by accepted at.\n status: ProjectedEngagementActivityScheduleStatus,\n acceptedAt?: string | null,\n totalBatches?: number | null,\n processedBatches?: number | null,\n parametersJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetUnlinkableReportQueryVariables = {\n id: string,\n};\n\nexport type GetUnlinkableReportQuery = {\n getUnlinkableReport?: {\n __typename: \"UnlinkableReport\",\n id: string,\n externalID: string,\n documents: Array< {\n __typename: \"Document\",\n type?: DocumentType | null,\n url?: string | null,\n format?: DocumentFormat | null,\n s3ObjectID?: string | null,\n uploadedAt?: number | null,\n // stringified JSON object as a set of additional data we want to store about documents (requisition number, lab report status, etc.)\n metadataJSON?: string | null,\n } >,\n zendeskTicketID?: number | null,\n hasBeenResolved?: boolean | null,\n patientName?: {\n __typename: \"HumanName\",\n use: NameUse,\n family?: string | null,\n given?: Array< string > | null,\n prefix?: HumanNamePrefix | null,\n suffix?: string | null,\n } | null,\n patientNumber?: string | null,\n requisitionNumber?: string | null,\n labOrganization?: LabOrganization | null,\n serviceRequestExternalIDs?: Array< string > | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListUnlinkableReportsQueryVariables = {\n id?: string | null,\n filter?: ModelUnlinkableReportFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListUnlinkableReportsQuery = {\n listUnlinkableReports?: {\n __typename: \"ModelUnlinkableReportConnection\",\n items: Array< {\n __typename: \"UnlinkableReport\",\n id: string,\n externalID: string,\n zendeskTicketID?: number | null,\n hasBeenResolved?: boolean | null,\n patientNumber?: string | null,\n requisitionNumber?: string | null,\n labOrganization?: LabOrganization | null,\n serviceRequestExternalIDs?: Array< string > | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchUnlinkableReportsQueryVariables = {\n filter?: SearchableUnlinkableReportFilterInput | null,\n sort?: Array< SearchableUnlinkableReportSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableUnlinkableReportAggregationInput | null > | null,\n};\n\nexport type SearchUnlinkableReportsQuery = {\n searchUnlinkableReports?: {\n __typename: \"SearchableUnlinkableReportConnection\",\n items: Array< {\n __typename: \"UnlinkableReport\",\n id: string,\n externalID: string,\n zendeskTicketID?: number | null,\n hasBeenResolved?: boolean | null,\n patientNumber?: string | null,\n requisitionNumber?: string | null,\n labOrganization?: LabOrganization | null,\n serviceRequestExternalIDs?: Array< string > | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetDropOffQueryVariables = {\n id: string,\n};\n\nexport type GetDropOffQuery = {\n getDropOff?: {\n __typename: \"DropOff\",\n id: string,\n organization: DropOffOrganization,\n name: string,\n phone?: string | null,\n email?: string | null,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n // Timezone generated based on the lat/long location of this dropoff\n timezone?: string | null,\n availabilityRules: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } >,\n hasParking?: boolean | null,\n hasDropBox?: boolean | null,\n commentsFromScheduler?: string | null,\n googleMapsPlaceID?: string | null,\n metroName: string,\n isActive: boolean,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListDropOffsQueryVariables = {\n id?: string | null,\n filter?: ModelDropOffFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListDropOffsQuery = {\n listDropOffs?: {\n __typename: \"ModelDropOffConnection\",\n items: Array< {\n __typename: \"DropOff\",\n id: string,\n organization: DropOffOrganization,\n name: string,\n phone?: string | null,\n email?: string | null,\n // Timezone generated based on the lat/long location of this dropoff\n timezone?: string | null,\n hasParking?: boolean | null,\n hasDropBox?: boolean | null,\n commentsFromScheduler?: string | null,\n googleMapsPlaceID?: string | null,\n metroName: string,\n isActive: boolean,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListDropOffsByMetroNameQueryVariables = {\n metroName: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelDropOffFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListDropOffsByMetroNameQuery = {\n listDropOffsByMetroName?: {\n __typename: \"ModelDropOffConnection\",\n items: Array< {\n __typename: \"DropOff\",\n id: string,\n organization: DropOffOrganization,\n name: string,\n phone?: string | null,\n email?: string | null,\n // Timezone generated based on the lat/long location of this dropoff\n timezone?: string | null,\n hasParking?: boolean | null,\n hasDropBox?: boolean | null,\n commentsFromScheduler?: string | null,\n googleMapsPlaceID?: string | null,\n metroName: string,\n isActive: boolean,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchDropOffsQueryVariables = {\n filter?: SearchableDropOffFilterInput | null,\n sort?: Array< SearchableDropOffSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableDropOffAggregationInput | null > | null,\n};\n\nexport type SearchDropOffsQuery = {\n searchDropOffs?: {\n __typename: \"SearchableDropOffConnection\",\n items: Array< {\n __typename: \"DropOff\",\n id: string,\n organization: DropOffOrganization,\n name: string,\n phone?: string | null,\n email?: string | null,\n // Timezone generated based on the lat/long location of this dropoff\n timezone?: string | null,\n hasParking?: boolean | null,\n hasDropBox?: boolean | null,\n commentsFromScheduler?: string | null,\n googleMapsPlaceID?: string | null,\n metroName: string,\n isActive: boolean,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetServiceRequestTypeQueryVariables = {\n id: string,\n};\n\nexport type GetServiceRequestTypeQuery = {\n getServiceRequestType?: {\n __typename: \"ServiceRequestType\",\n id: string,\n cptCodes: Array< string | null >,\n externalID: string,\n displayName: string,\n // Alternate names for service requests, to be used in service request lookup\n synonyms?: Array< string | null > | null,\n labOrganization: LabOrganization,\n container?: string | null,\n serviceRequestTypeContainerID?: string | null,\n serviceRequestTypeContainer?: {\n __typename: \"ServiceRequestTypeContainer\",\n id: string,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n createdAt: string,\n updatedAt: string,\n } | null,\n specimen?: string | null,\n preferredSpecimen?: string | null,\n preferredVolumeDescription?: string | null,\n preferredVolumeMilliliters?: number | null,\n minimumVolume?: string | null,\n minimumVolumeAmount?: number | null,\n alternateSpecimen?: string | null,\n transportInstructions?: string | null,\n collectionInstructions?: string | null,\n collectionInstructionsVideoURL?: string | null,\n rejectionCriteria?: string | null,\n specimenStability?: string | null,\n patientPreparation?: string | null,\n resultAvailability?: string | null,\n serviceTypes?: Array< ServiceType > | null,\n containerSpecimenVolumes?: Array< {\n __typename: \"SpecimenContainerSpecimenVolumes\",\n // The ID of the container assigned to a serviceRequest, only applicable for non-combinable serviceRequests\n containerOverrideID?: string | null,\n // The type of tube e.g., SST, LAV EDTA, Urine Cup\n containerCategory?: SpecimenContainerCategory | null,\n // The minimum volume needed for a test\n minimumMilliliters?: number | null,\n // The preferred volume for a test in case we do not have minumum volume set above.\n preferredMilliliters?: number | null,\n // Whether it's acceptable to combine the specimens for this test and others into a single container during container calculations.\n // For example, if true, then blood for two tests requiring 2 mL of whole blood each can be drawn into a single 5 mL tube rather than two separate 3 mL tubes.\n isCombinable: boolean,\n // minimum container count needed for the specimen\n minimumContainerCount?: number | null,\n specimenTestTypes?: Array< SpecimenTestType | null > | null,\n } > | null,\n abstentions?: Array< {\n __typename: \"Abstention\",\n abstentionType: AbstentionType,\n preferredDurationMinutes: number,\n requiredDurationMinutes?: number | null,\n } > | null,\n customKit?: {\n __typename: \"ServiceRequestCustomKit\",\n photoURL: string,\n barcodePhotoURL?: string | null,\n recipient: CustomKitRecipient,\n // requires test requisition form (TRF) completion\n requiresTRFCompletion: boolean,\n // requires benefit correction form (BCF) completion\n requiresBCFCompletion: boolean,\n } | null,\n collectionTimeRules?: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } > | null,\n requiresBinaryPatientSex?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListServiceRequestTypesQueryVariables = {\n id?: string | null,\n filter?: ModelServiceRequestTypeFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListServiceRequestTypesQuery = {\n listServiceRequestTypes?: {\n __typename: \"ModelServiceRequestTypeConnection\",\n items: Array< {\n __typename: \"ServiceRequestType\",\n id: string,\n cptCodes: Array< string | null >,\n externalID: string,\n displayName: string,\n // Alternate names for service requests, to be used in service request lookup\n synonyms?: Array< string | null > | null,\n labOrganization: LabOrganization,\n container?: string | null,\n serviceRequestTypeContainerID?: string | null,\n specimen?: string | null,\n preferredSpecimen?: string | null,\n preferredVolumeDescription?: string | null,\n preferredVolumeMilliliters?: number | null,\n minimumVolume?: string | null,\n minimumVolumeAmount?: number | null,\n alternateSpecimen?: string | null,\n transportInstructions?: string | null,\n collectionInstructions?: string | null,\n collectionInstructionsVideoURL?: string | null,\n rejectionCriteria?: string | null,\n specimenStability?: string | null,\n patientPreparation?: string | null,\n resultAvailability?: string | null,\n serviceTypes?: Array< ServiceType > | null,\n requiresBinaryPatientSex?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListServiceRequestTypeByExternalIDByLabOrganizationQueryVariables = {\n externalID: string,\n labOrganization?: ModelStringKeyConditionInput | null,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelServiceRequestTypeFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListServiceRequestTypeByExternalIDByLabOrganizationQuery = {\n listServiceRequestTypeByExternalIDByLabOrganization?: {\n __typename: \"ModelServiceRequestTypeConnection\",\n items: Array< {\n __typename: \"ServiceRequestType\",\n id: string,\n cptCodes: Array< string | null >,\n externalID: string,\n displayName: string,\n // Alternate names for service requests, to be used in service request lookup\n synonyms?: Array< string | null > | null,\n labOrganization: LabOrganization,\n container?: string | null,\n serviceRequestTypeContainerID?: string | null,\n specimen?: string | null,\n preferredSpecimen?: string | null,\n preferredVolumeDescription?: string | null,\n preferredVolumeMilliliters?: number | null,\n minimumVolume?: string | null,\n minimumVolumeAmount?: number | null,\n alternateSpecimen?: string | null,\n transportInstructions?: string | null,\n collectionInstructions?: string | null,\n collectionInstructionsVideoURL?: string | null,\n rejectionCriteria?: string | null,\n specimenStability?: string | null,\n patientPreparation?: string | null,\n resultAvailability?: string | null,\n serviceTypes?: Array< ServiceType > | null,\n requiresBinaryPatientSex?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchServiceRequestTypesQueryVariables = {\n filter?: SearchableServiceRequestTypeFilterInput | null,\n sort?: Array< SearchableServiceRequestTypeSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableServiceRequestTypeAggregationInput | null > | null,\n};\n\nexport type SearchServiceRequestTypesQuery = {\n searchServiceRequestTypes?: {\n __typename: \"SearchableServiceRequestTypeConnection\",\n items: Array< {\n __typename: \"ServiceRequestType\",\n id: string,\n cptCodes: Array< string | null >,\n externalID: string,\n displayName: string,\n // Alternate names for service requests, to be used in service request lookup\n synonyms?: Array< string | null > | null,\n labOrganization: LabOrganization,\n container?: string | null,\n serviceRequestTypeContainerID?: string | null,\n specimen?: string | null,\n preferredSpecimen?: string | null,\n preferredVolumeDescription?: string | null,\n preferredVolumeMilliliters?: number | null,\n minimumVolume?: string | null,\n minimumVolumeAmount?: number | null,\n alternateSpecimen?: string | null,\n transportInstructions?: string | null,\n collectionInstructions?: string | null,\n collectionInstructionsVideoURL?: string | null,\n rejectionCriteria?: string | null,\n specimenStability?: string | null,\n patientPreparation?: string | null,\n resultAvailability?: string | null,\n serviceTypes?: Array< ServiceType > | null,\n requiresBinaryPatientSex?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetSpecimenContainerTypeQueryVariables = {\n id: string,\n};\n\nexport type GetSpecimenContainerTypeQuery = {\n getSpecimenContainerType?: {\n __typename: \"SpecimenContainerType\",\n id: string,\n name: string,\n category: SpecimenContainerCategory,\n // The whole capacity of the container. This would be the \"whole blood capacity\" for SST containers and the\n // general capacity for the containers which are not used for serum tests like Urine Cups and the Insure FOBT.\n capacityMilliliters: number,\n // Serum Capacity. The capacity of the container. Usually this is the volume of the container,\n // but in some cases the relevant capacity might reflect only a portion of the overall volume\n // (e.g. serum capacity in an SST, where the remaining volume is filled with clotted blood components).\n serumBloodCapacityMilliliters?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListSpecimenContainerTypesQueryVariables = {\n id?: string | null,\n filter?: ModelSpecimenContainerTypeFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListSpecimenContainerTypesQuery = {\n listSpecimenContainerTypes?: {\n __typename: \"ModelSpecimenContainerTypeConnection\",\n items: Array< {\n __typename: \"SpecimenContainerType\",\n id: string,\n name: string,\n category: SpecimenContainerCategory,\n // The whole capacity of the container. This would be the \"whole blood capacity\" for SST containers and the\n // general capacity for the containers which are not used for serum tests like Urine Cups and the Insure FOBT.\n capacityMilliliters: number,\n // Serum Capacity. The capacity of the container. Usually this is the volume of the container,\n // but in some cases the relevant capacity might reflect only a portion of the overall volume\n // (e.g. serum capacity in an SST, where the remaining volume is filled with clotted blood components).\n serumBloodCapacityMilliliters?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchSpecimenContainerTypesQueryVariables = {\n filter?: SearchableSpecimenContainerTypeFilterInput | null,\n sort?: Array< SearchableSpecimenContainerTypeSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableSpecimenContainerTypeAggregationInput | null > | null,\n};\n\nexport type SearchSpecimenContainerTypesQuery = {\n searchSpecimenContainerTypes?: {\n __typename: \"SearchableSpecimenContainerTypeConnection\",\n items: Array< {\n __typename: \"SpecimenContainerType\",\n id: string,\n name: string,\n category: SpecimenContainerCategory,\n // The whole capacity of the container. This would be the \"whole blood capacity\" for SST containers and the\n // general capacity for the containers which are not used for serum tests like Urine Cups and the Insure FOBT.\n capacityMilliliters: number,\n // Serum Capacity. The capacity of the container. Usually this is the volume of the container,\n // but in some cases the relevant capacity might reflect only a portion of the overall volume\n // (e.g. serum capacity in an SST, where the remaining volume is filled with clotted blood components).\n serumBloodCapacityMilliliters?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetServiceRequestTypeContainerQueryVariables = {\n id: string,\n};\n\nexport type GetServiceRequestTypeContainerQuery = {\n getServiceRequestTypeContainer?: {\n __typename: \"ServiceRequestTypeContainer\",\n id: string,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n createdAt: string,\n updatedAt: string,\n } | null,\n};\n\nexport type ListServiceRequestTypeContainersQueryVariables = {\n id?: string | null,\n filter?: ModelServiceRequestTypeContainerFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n sortDirection?: ModelSortDirection | null,\n};\n\nexport type ListServiceRequestTypeContainersQuery = {\n listServiceRequestTypeContainers?: {\n __typename: \"ModelServiceRequestTypeContainerConnection\",\n items: Array< {\n __typename: \"ServiceRequestTypeContainer\",\n id: string,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type ListServiceRequestTypeContainersByContainerTypeQueryVariables = {\n containerType: string,\n sortDirection?: ModelSortDirection | null,\n filter?: ModelServiceRequestTypeContainerFilterInput | null,\n limit?: number | null,\n nextToken?: string | null,\n};\n\nexport type ListServiceRequestTypeContainersByContainerTypeQuery = {\n listServiceRequestTypeContainersByContainerType?: {\n __typename: \"ModelServiceRequestTypeContainerConnection\",\n items: Array< {\n __typename: \"ServiceRequestTypeContainer\",\n id: string,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n } | null,\n};\n\nexport type SearchServiceRequestTypeContainersQueryVariables = {\n filter?: SearchableServiceRequestTypeContainerFilterInput | null,\n sort?: Array< SearchableServiceRequestTypeContainerSortInput | null > | null,\n limit?: number | null,\n nextToken?: string | null,\n from?: number | null,\n aggregates?: Array< SearchableServiceRequestTypeContainerAggregationInput | null > | null,\n};\n\nexport type SearchServiceRequestTypeContainersQuery = {\n searchServiceRequestTypeContainers?: {\n __typename: \"SearchableServiceRequestTypeContainerConnection\",\n items: Array< {\n __typename: \"ServiceRequestTypeContainer\",\n id: string,\n containerType: string,\n alternativeContainerTypes?: Array< string > | null,\n substituteContainerTypesForCalculations?: Array< string > | null,\n containerCategory: string,\n capacity: number,\n createdAt: string,\n updatedAt: string,\n } | null >,\n nextToken?: string | null,\n total?: number | null,\n aggregateItems: Array< {\n __typename: \"SearchableAggregateResult\",\n name: string,\n result: ( {\n __typename: \"SearchableAggregateScalarResult\",\n value: number,\n } | {\n __typename: \"SearchableAggregateBucketResult\",\n buckets?: Array< {\n __typename: string,\n key: string,\n doc_count: number,\n } | null > | null,\n }\n ) | null,\n } | null >,\n } | null,\n};\n\nexport type GetTrickleConfigurationQueryVariables = {\n};\n\nexport type GetTrickleConfigurationQuery = {\n getTrickleConfiguration?: {\n __typename: \"GetTrickleConfigurationResponse\",\n configuration?: string | null,\n } | null,\n};\n\nexport type ListAvailableAppointmentsQueryVariables = {\n appointmentID?: string | null,\n partnerOrganization?: PartnerOrganization | null,\n serviceTypes?: Array< ServiceType > | null,\n start?: string | null,\n end?: string | null,\n location?: LocationInput | null,\n forceTechID?: string | null,\n shouldCalculateSlotScore?: boolean | null,\n patientIDs?: Array< string > | null,\n patientBirthdates?: Array< string > | null,\n visitType?: VisitType | null,\n remoteAppointmentStartIncrementMinutes?: number | null,\n};\n\nexport type ListAvailableAppointmentsQuery = {\n listAvailableAppointments?: Array< {\n __typename: \"AvailableAppointment\",\n start: string,\n end: string,\n slotScore?: number | null,\n incrementalDrivingTimeSeconds?: number | null,\n } | null > | null,\n};\n\nexport type ListAppointmentsForPostReviewQueryVariables = {\n postReviewQueue: PostReviewQueue,\n};\n\nexport type ListAppointmentsForPostReviewQuery = {\n listAppointmentsForPostReview?: {\n __typename: \"ListAppointmentsForPostReviewResponse\",\n appointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n } | null,\n};\n\nexport type ExportTechScheduleQueryVariables = {\n input: ExportTechScheduleInput,\n};\n\nexport type ExportTechScheduleQuery = {\n exportTechSchedule?: {\n __typename: \"ExportTechScheduleResponse\",\n exportedTechSchedule: string,\n } | null,\n};\n\nexport type ListBookedAppointmentsQueryVariables = {\n input: ListBookedAppointmentsInput,\n};\n\nexport type ListBookedAppointmentsQuery = {\n listBookedAppointments: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } >,\n};\n\nexport type ListAppointmentsByViewerPartnerOrganizationsQueryVariables = {\n input: BookedAppointmentsPartnerOrganizationInput,\n};\n\nexport type ListAppointmentsByViewerPartnerOrganizationsQuery = {\n listAppointmentsByViewerPartnerOrganizations?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n allocatedRemoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinatorID: string,\n location: {\n __typename: \"Location\",\n satellitePhotoURL?: string | null,\n streetViewPhotoURL?: string | null,\n },\n partnerOrganization?: PartnerOrganization | null,\n preReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n checklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewChecklist?: {\n __typename: \"Checklist\",\n } | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n encounters?: {\n __typename: \"ModelEncounterConnection\",\n nextToken?: string | null,\n } | null,\n tech?: {\n __typename: \"Tech\",\n id: string,\n gender?: Gender | null,\n phone?: string | null,\n email?: string | null,\n serviceTypes?: Array< ServiceType | null > | null,\n profilePictureS3ObjectID?: string | null,\n isActive?: boolean | null,\n biographyItems?: Array< string > | null,\n patientTestimonials?: Array< string > | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n capabilities?: Array< TechCapability > | null,\n isIneligibleForMatchmaking?: boolean | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n remoteTech?: {\n __typename: \"RemoteTech\",\n id: string,\n email: string,\n phone?: string | null,\n profilePictureS3ObjectID?: string | null,\n timezone: string,\n isActive: boolean,\n serviceTypes: Array< ServiceType >,\n remoteVisitZoomLink?: string | null,\n remoteVisitZoomLinkQRCodeS3ObjectID?: string | null,\n partialAppointmentsForTeamAvailabilityJSON?: string | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n coordinator: {\n __typename: \"Coordinator\",\n id: string,\n authorizedTechIDs?: Array< string > | null,\n // If this Coordinator is a Customer Service Representative for one of our partners (should also have PartnerOrganization set)\n isCSR?: boolean | null,\n isActive?: boolean | null,\n managePartnerUsersAuthorization?: ManagePartnerUsersAuthorization | null,\n authorizedPartnerOrganizations?: Array< PartnerOrganization | null > | null,\n phone?: string | null,\n email?: string | null,\n billingCustomerID?: string | null,\n outstandingPartnerOrganizationBookingURLs?: Array< string > | null,\n stripeCustomerID?: string | null,\n isArchived?: boolean | null,\n createdAt: string,\n updatedAt: string,\n },\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n sharedSlotAppointments?: Array< {\n __typename: \"Appointment\",\n id: string,\n // The current status of the appointment (See AppointmentStatus enum)\n status: AppointmentStatus,\n // Whether the appointment has been marked failed\n isFailed?: boolean | null,\n // Whether the appointment has at least one service completed in any of the encounters\n hasSuccessfulServices?: boolean | null,\n // Whether the appointment has at least one service failed in any of the encounters\n hasFailedServices?: boolean | null,\n // Whether the appointment has at least one service that needs to be rebooked (isRescheduleRequired) in any of the encounters\n needsRebooking?: boolean | null,\n // Whether the appointment has passed the pre-review phase\n isPreReviewed?: boolean | null,\n // Whether the appointment has passed the post-review phase\n isPostReviewed?: boolean | null,\n // Whether the appointment has been escalated\n isEscalated?: boolean | null,\n // Planned appointment start date/time. Must be in UTC since this field is used as a sort key\n start: string,\n // Expected appointment end date/time\n end: string,\n // The technician assigned to the appointment\n techID?: string | null,\n remoteTechID?: string | null,\n remoteTechMatchState?: RemoteTechMatchState | null,\n allocatedRemoteTechID?: string | null,\n coordinatorID: string,\n partnerOrganization?: PartnerOrganization | null,\n postReviewType?: PostReviewType | null,\n serviceRegionName?: string | null,\n geographicalState?: string | null,\n timezone: string,\n avoidTechIDs?: Array< string > | null,\n lastBookedAt?: number | null,\n statusUpdatedAt?: number | null,\n stripeCustomerID?: string | null,\n // For patient-paid appointments, the amount the patient will be charged for this appointment (in cents).\n stripePriceToCharge?: number | null,\n hasPetsAtLocation?: boolean | null,\n // Comments about logistics like door codes, directions, etc.\n commentsFromCoordinatorAboutAppointment?: string | null,\n // Comments about logistics like door codes, directions, etc. (but from techs)\n commentsFromTechAboutAppointment?: string | null,\n // Comments about app feedback, bugs, feature requests, etc.\n commentsFromTechAboutSystem?: string | null,\n // Comments about why an appointment was put into a failed state\n commentsFromTechAboutAppointmentFailure?: string | null,\n // Comments about why the appointment failed to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutAppointmentFailure?: string | null,\n // Comments about why the appointment was canceled to be shown publicly (e.g., to CSRs)\n commentsFromSchedulerAboutCancellation?: string | null,\n partnerOrganizationBookingURL?: string | null,\n overrideMode?: AppointmentOverrideMode | null,\n // Represents the priority for a shared-slot appointment, if it is a shared-slot. Lower value means higher priority.\n // The default value is 0.5.\n sharedSlotRank?: number | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n // Represents how long the appointment should take based on product types\n estimatedServiceDurationSeconds: number,\n // For invoiced partners, the invoice line items associated with this appointment.\n stripeInvoiceLineItemIDs?: Array< string | null > | null,\n // For patient-paid appointments, any payment attempts associated with this appointment.\n stripePaymentIntentIDs?: Array< string | null > | null,\n // Whether the appointment has been confirmed or if the patient requested a change\n // When undefined or null, it means that the confirmation is still pending\n hasPatientConfirmed?: boolean | null,\n // Whether or not the appointment was booked in an unauthenticated flow\n isGuestBooked?: boolean | null,\n // Referral information from which the appointment was created (optional)\n referralID?: string | null,\n referral?: {\n __typename: \"Referral\",\n id: string,\n patientID: string,\n partnerOrganization: PartnerOrganization,\n requisitionUploadS3ObjectIDs?: Array< string > | null,\n serviceTypes: Array< ServiceType >,\n isBooked?: boolean | null,\n isExpired?: boolean | null,\n ttl?: number | null,\n createdAt: string,\n updatedAt: string,\n } | null,\n // The history of past events that happened to this appointment and its encounters/patients, serialized as JSON.\n historyJSON?: string | null,\n // An external ID associated with the appointment, such as a job ID from MPX\n externalID?: string | null,\n // The id of the appointment that this appointment is cloned from. Cloning includes information\n // such as location, patients, and requisitions that are carried over from the original.\n clonedFromAppointmentID?: string | null,\n // The type of qualification a remote tech needs to have for this appointment.\n // For example, this will be NURSE_PRACTITIONER if the appointment includes an AWV.\n // Not present if the appointment has no remote component.\n remoteTechQualificationTypeRequired?: QualificationType | null,\n // Appointment date/time added to \"queue\"\n // This timestamp is used to determine the ordering of when remoteTech should be assigned\n markedReadyForRemoteTechAt?: string | null,\n childDocumentURL?: {\n __typename: \"ChildDocumentURLResponse\",\n url?: string | null,\n } | null,\n visitType: VisitType,\n remoteConnectionMethod?: RemoteConnectionMethod | null,\n // A list of results sorted by insertion time (oldest to newest) from running automated\n // post review on this appointment. Each entry indicates a new time the automated post\n // review process has run on the appointment and can be used to find the remaining faults\n // as manual post review is completed.\n automatedPostReviewResults?: Array< {\n __typename: \"AutomatedPostReviewResults\",\n timestamp: number,\n } > | null,\n createdAt: string,\n updatedAt: string,\n } > | null,\n};\n\nexport type GenerateClaimsBillingTemplateQueryVariables = {\n input: GenerateClaimsBillingTemplateInput,\n};\n\nexport type GenerateClaimsBillingTemplateQuery = {\n generateClaimsBillingTemplate?: {\n __typename: \"GenerateClaimsBillingTemplateResponse\",\n billingCSV: string,\n } | null,\n};\n\nexport type CalculateSpecimenContainerTypeQuantitiesQueryVariables = {\n input: CalculateSpecimenContainerTypeQuantitiesInput,\n};\n\nexport type CalculateSpecimenContainerTypeQuantitiesQuery = {\n calculateSpecimenContainerTypeQuantities?: {\n __typename: \"CalculateSpecimenContainerTypeQuantitiesResponse\",\n specimenContainerTypeQuantities?: Array< {\n __typename: \"SpecimenContainerTypeQuantity\",\n containerName: string,\n quantity: number,\n } > | null,\n } | null,\n};\n\nexport type GetContainerSpecimenVolumesQueryVariables = {\n input: GetContainerSpecimenVolumesInput,\n};\n\nexport type GetContainerSpecimenVolumesQuery = {\n getContainerSpecimenVolumes?: Array< {\n __typename: \"GetContainerSpecimenVolumesResponse\",\n containerOverrideID?: string | null,\n containerCategory?: SpecimenContainerCategory | null,\n minimumMilliliters?: number | null,\n preferredMilliliters?: number | null,\n isCombinable: boolean,\n minimumContainerCount?: number | null,\n specimenTestTypes?: Array< SpecimenTestType | null > | null,\n containerName?: string | null,\n } | null > | null,\n};\n\nexport type GetAllContainersQueryVariables = {\n};\n\nexport type GetAllContainersQuery = {\n getAllContainers?: Array< {\n __typename: \"GetAllContainersResponse\",\n id: string,\n name: string,\n category: SpecimenContainerCategory,\n capacityMilliliters: number,\n } | null > | null,\n};\n\nexport type ValidatePartnerUserInviteQueryVariables = {\n input?: ValidatePartnerUserInviteInput | null,\n};\n\nexport type ValidatePartnerUserInviteQuery = {\n validatePartnerUserInvite?: {\n __typename: \"ValidatePartnerUserInviteResponse\",\n isValid: boolean,\n } | null,\n};\n\nexport type ValidateUnsubscribeFromEmailNotificationsQueryVariables = {\n input?: ValidateUnsubscribeFromEmailNotificationsInput | null,\n};\n\nexport type ValidateUnsubscribeFromEmailNotificationsQuery = {\n validateUnsubscribeFromEmailNotifications?: {\n __typename: \"ValidateUnsubscribeFromEmailNotificationsResponse\",\n isValid: boolean,\n } | null,\n};\n\nexport type ListMatchmadeDropOffsQueryVariables = {\n input?: ListMatchmadeDropOffsInput | null,\n};\n\nexport type ListMatchmadeDropOffsQuery = {\n listMatchmadeDropOffs?: Array< {\n __typename: \"ListMatchmadeDropOffsResponseItem\",\n estimatedDriveTimeToDropOffSeconds: number,\n estimatedDriveTimeFromDropOffToNextRouteStopSeconds: number,\n dropOff: {\n __typename: \"DropOff\",\n id: string,\n organization: DropOffOrganization,\n name: string,\n phone?: string | null,\n email?: string | null,\n // Timezone generated based on the lat/long location of this dropoff\n timezone?: string | null,\n hasParking?: boolean | null,\n hasDropBox?: boolean | null,\n commentsFromScheduler?: string | null,\n googleMapsPlaceID?: string | null,\n metroName: string,\n isActive: boolean,\n createdAt: string,\n updatedAt: string,\n },\n } | null > | null,\n};\n\nexport type ExportMonthlyPatientsWithAppointmentStatusQueryVariables = {\n input?: ExportMonthlyPatientsListWithAppointmentStatusInput | null,\n};\n\nexport type ExportMonthlyPatientsWithAppointmentStatusQuery = {\n exportMonthlyPatientsWithAppointmentStatus?: {\n __typename: \"ExportMonthlyPatientsListWithAppointmentStatusResponse\",\n patientListCSV: string,\n } | null,\n};\n\nexport type SendTestNotificationQueryVariables = {\n input?: SendTestNotificationInput | null,\n};\n\nexport type SendTestNotificationQuery = {\n sendTestNotification?: {\n __typename: \"SendTestNotificationResponse\",\n result: string,\n } | null,\n};\n\nexport type GetReferralByPatientInfoQueryVariables = {\n input: GetReferralByPatientInfoInput,\n};\n\nexport type GetReferralByPatientInfoQuery = {\n getReferralByPatientInfo?: {\n __typename: \"GetReferralByPatientInfoResponse\",\n referral?: {\n __typename: \"CustomAuthPartialReferral\",\n id: string,\n serviceTypes: Array< ServiceType >,\n } | null,\n appointment?: {\n __typename: \"CustomAuthPartialAppointment\",\n id: string,\n serviceTypes: Array< ServiceType >,\n productTypes: Array< ProductType >,\n start: string,\n end: string,\n timezone: string,\n referralID?: string | null,\n status: AppointmentStatus,\n patientEncounterSummaryPresignedURL?: string | null,\n commentsFromCoordinatorAboutAppointment?: string | null,\n visitType: VisitType,\n } | null,\n patient?: {\n __typename: \"CustomAuthPartialPatient\",\n phone?: string | null,\n email?: string | null,\n brandCode?: string | null,\n id?: string | null,\n partnerOrganization: PartnerOrganization,\n birthdate?: string | null,\n responsiblePractitionerPhone?: string | null,\n sex?: Sex | null,\n gender?: Gender | null,\n } | null,\n guestJWT?: string | null,\n availabilityEndDateTime?: string | null,\n } | null,\n};\n\nexport type GetOutreachSMSCopyQueryVariables = {\n input: GetOutreachSMSCopyInput,\n};\n\nexport type GetOutreachSMSCopyQuery = {\n getOutreachSMSCopy?: {\n __typename: \"GetOutreachSMSCopyResponse\",\n smsTypesWithCopy: Array< {\n __typename: \"OutreachSMSesWithCopy\",\n copy: Array< Array< string | null > | null >,\n smsType: SMSType,\n } | null >,\n } | null,\n};\n\nexport type GetCMSContentTemplatesByVersionQueryVariables = {\n googleSheetsURL: string,\n};\n\nexport type GetCMSContentTemplatesByVersionQuery = {\n getCMSContentTemplatesByVersion: {\n __typename: \"CMSContentTemplatesByVersion\",\n draft: Array< {\n __typename: \"CMSContentTemplate\",\n translationKey: string,\n content: string,\n campaignName: CampaignName,\n } >,\n live: Array< {\n __typename: \"CMSContentTemplate\",\n translationKey: string,\n content: string,\n campaignName: CampaignName,\n } >,\n errorsJSON: string,\n },\n};\n\nexport type ExportAppointmentsListForBillingQueryVariables = {\n input: ExportAppointmentsListForBillingInput,\n};\n\nexport type ExportAppointmentsListForBillingQuery = {\n exportAppointmentsListForBilling?: {\n __typename: \"ExportAppointmentsListForBillingResponse\",\n listAppointmentsForBillingCSV: string,\n } | null,\n};\n\nexport type GetCampaignMetricsURLQueryVariables = {\n date?: string | null,\n};\n\nexport type GetCampaignMetricsURLQuery = {\n getCampaignMetricsURL?: string | null,\n};\n\nexport type GetStatsigIDQueryVariables = {\n tableName: StatsigIDTableName,\n id: string,\n};\n\nexport type GetStatsigIDQuery = {\n getStatsigID?: {\n __typename: \"GetStatsigIDResponse\",\n id: string,\n } | null,\n};\n\nexport type ExportServiceRegionCumulativeAvailabilityQueryVariables = {\n};\n\nexport type ExportServiceRegionCumulativeAvailabilityQuery = {\n exportServiceRegionCumulativeAvailability?: {\n __typename: \"ExportServiceRegionCumulativeAvailabilityResponse\",\n result: string,\n } | null,\n};\n\nexport type GetPUTS3ObjectPresignedURLQueryVariables = {\n accessLevel: string,\n key: string,\n identityID: string,\n contentType: string,\n parentID?: string | null,\n parentType?: S3ObjectParentType | null,\n};\n\nexport type GetPUTS3ObjectPresignedURLQuery = {\n getPUTS3ObjectPresignedURL: {\n __typename: \"GetPUTS3ObjectPresignedURLResponse\",\n url: string,\n s3ObjectID?: string | null,\n },\n};\n\nexport type GetHistoricalAvailabilityForTechQueryVariables = {\n input: GetHistoricalAvailabilityForTechInput,\n};\n\nexport type GetHistoricalAvailabilityForTechQuery = {\n getHistoricalAvailabilityForTech: {\n __typename: \"GetHistoricalAvailabilityForTechResponse\",\n techAvailabilityRules: Array< {\n __typename: \"TimeRangeRule\",\n // The unique ID for the time range.\n id: string,\n // Whether the time range represents an addition or subtraction when considering multiple ranges.\n inclusion: TimeRangeRuleInclusion,\n // The time of day each recurrence starts (inclusive).\n start: string,\n // The time of day each recurrence ends (exclusive). Use '24:00:00' for the end of the day.\n end: string,\n // The first date that the recurrence is valid (inclusive).\n recurrenceStart: string,\n // The last date that the recurrence is valid (inclusive). If not set, the range extends indefinitely.\n recurrenceEnd?: string | null,\n // The number of periods between each recurrence. For example, with a multiple of N and period of DAY, the time range will recur every N days.\n recurrenceMultiple: number,\n // The unit of recurrence. For example, with a period of WEEK and multiple of 2, the time range will recur every other week.\n recurrencePeriod: TimeRangeRulePeriod,\n // An optional reason for the time range rule, used with time-off unavailability rules (lunch breaks, PTO, etc.)\n unavailabilityReason?: TimeRangeRuleUnavailabilityReason | null,\n // Additional notes about the time range rule.\n notes?: string | null,\n // The date and time that the rule was last updated.\n updatedAt?: string | null,\n // The user who last updated the rule.\n updatedBy?: string | null,\n } >,\n serviceRegionsAvailabilityRules: Array< {\n __typename: \"ServiceRegionAvailabilityRules\",\n serviceRegionName: string,\n } >,\n partialAppointmentsForTeamAvailabilityJSON: string,\n },\n};\n\nexport type GetTimezoneForCoordinatesQueryVariables = {\n latitude: number,\n longitude: number,\n};\n\nexport type GetTimezoneForCoordinatesQuery = {\n getTimezoneForCoordinates: Array< string >,\n};\n\nexport type GetPatientPreviewMetricsQueryVariables = {\n patientCampaignStateIDs?: Array< string > | null,\n tagQL?: string | null,\n aggregationPresets?: Array< PatientAggregationsPresetName > | null,\n};\n\nexport type GetPatientPreviewMetricsQuery = {\n getPatientPreviewMetrics: {\n __typename: \"GetPatientPreviewMetricsResponse\",\n aggregatedMetrics: Array< {\n __typename: \"PatientAggregatedMetrics\",\n aggregationPreset: PatientAggregationsPresetName,\n bucketNames: Array< string >,\n metricNames: Array< string >,\n errorReason?: string | null,\n } >,\n },\n};\n","import KHPalette from './KHPalette';\nimport {\n ColorActionTaskActiveType,\n ColorBackgroundDefault,\n ColorBackgroundPaper,\n ColorBrandTertiaryDarkest,\n ColorButtonPrimaryActive,\n ColorCaptionFillCritical,\n ColorCaptionFillHighlight,\n ColorCaptionFillNeutral,\n ColorCaptionFillWarning,\n ColorCaptionFontCritical,\n ColorCaptionFontHighlight,\n ColorCaptionFontNeutral,\n ColorCaptionFontWarning,\n ColorCloseButton,\n ColorCriticalDark,\n ColorCriticalDarker,\n ColorCriticalDarkest,\n ColorCriticalLight,\n ColorCriticalLighter,\n ColorCriticalLightest,\n ColorFilterButtonV2BackgroundSelected,\n ColorFilterFillDefault,\n ColorFilterFillDisabled,\n ColorFilterFillHover,\n ColorFilterFillSelected,\n ColorFilterFontDefault,\n ColorFilterFontDisabled,\n ColorFilterFontHover,\n ColorFilterFontSelected,\n ColorFilterStrokeDefault,\n ColorFilterStrokeDisabled,\n ColorFilterStrokeHover,\n ColorFilterStrokeSelected,\n ColorHighlightDarker,\n ColorHighlightDarkest,\n ColorHighlightLight,\n ColorHighlightLightest,\n ColorLightPine,\n ColorNeutralDark,\n ColorNeutralDarkest,\n ColorNeutralLighter,\n ColorNeutralLightest,\n ColorNeutralMain,\n ColorPine,\n ColorPrimaryDark,\n ColorPrimaryDarker,\n ColorPrimaryFillDefault,\n ColorPrimaryFillDefaultSubtle,\n ColorPrimaryFillDisabled,\n ColorPrimaryFillDisabledSubtle,\n ColorPrimaryFillHover,\n ColorPrimaryFillHoverSubtle,\n ColorPrimaryFillSelected,\n ColorPrimaryFillSelectedSubtle,\n ColorPrimaryFontDefault,\n ColorPrimaryFontDefaultSubtle,\n ColorPrimaryFontDisabled,\n ColorPrimaryFontDisabledSubtle,\n ColorPrimaryFontHover,\n ColorPrimaryFontHoverSubtle,\n ColorPrimaryFontSelected,\n ColorPrimaryFontSelectedSubtle,\n ColorPrimaryLightest,\n ColorPrimaryStrokeDefault,\n ColorPrimaryStrokeDefaultSubtle,\n ColorPrimaryStrokeDisabled,\n ColorPrimaryStrokeDisabledSubtle,\n ColorPrimaryStrokeHover,\n ColorPrimaryStrokeHoverSubtle,\n ColorPrimaryStrokeSelected,\n ColorPrimaryStrokeSelectedSubtle,\n ColorSecondaryDark,\n ColorSecondaryDarker,\n ColorSecondaryDarkest,\n ColorSecondaryFillDefault,\n ColorSecondaryFillDefaultSubtle,\n ColorSecondaryFillDisabled,\n ColorSecondaryFillDisabledSubtle,\n ColorSecondaryFillHover,\n ColorSecondaryFillHoverSubtle,\n ColorSecondaryFillSelected,\n ColorSecondaryFillSelectedSubtle,\n ColorSecondaryFontDefault,\n ColorSecondaryFontDefaultSubtle,\n ColorSecondaryFontDisabled,\n ColorSecondaryFontDisabledSubtle,\n ColorSecondaryFontHover,\n ColorSecondaryFontHoverSubtle,\n ColorSecondaryFontSelected,\n ColorSecondaryFontSelectedSubtle,\n ColorSecondaryLight,\n ColorSecondaryLighter,\n ColorSecondaryLightest,\n ColorSecondaryMain,\n ColorSecondaryStrokeDefault,\n ColorSecondaryStrokeDefaultSubtle,\n ColorSecondaryStrokeDisabled,\n ColorSecondaryStrokeDisabledSubtle,\n ColorSecondaryStrokeHover,\n ColorSecondaryStrokeHoverSubtle,\n ColorSecondaryStrokeSelected,\n ColorSecondaryStrokeSelectedSubtle,\n ColorTabsTextActive,\n ColorTaskFontSelected,\n ColorTertiaryFillDefault,\n ColorTertiaryFillDefaultSubtle,\n ColorTertiaryFillDisabled,\n ColorTertiaryFillDisabledSubtle,\n ColorTertiaryFillHover,\n ColorTertiaryFillHoverSubtle,\n ColorTertiaryFillSelected,\n ColorTertiaryFillSelectedSubtle,\n ColorTertiaryFontDefault,\n ColorTertiaryFontDefaultSubtle,\n ColorTertiaryFontDisabled,\n ColorTertiaryFontDisabledSubtle,\n ColorTertiaryFontHover,\n ColorTertiaryFontHoverSubtle,\n ColorTertiaryFontSelected,\n ColorTertiaryFontSelectedSubtle,\n ColorTertiaryStrokeDefault,\n ColorTertiaryStrokeDefaultSubtle,\n ColorTertiaryStrokeDisabled,\n ColorTertiaryStrokeDisabledSubtle,\n ColorTertiaryStrokeHover,\n ColorTertiaryStrokeHoverSubtle,\n ColorTertiaryStrokeSelected,\n ColorTertiaryStrokeSelectedSubtle,\n ColorTextInputFontFocus,\n ColorTextInputStrokeDefault,\n ColorTextInputStrokeFocus,\n ColorTextLinkNew,\n ColorToastFill,\n ColorToastFont,\n ColorToastStroke,\n ColorTypeDark,\n ColorTypeDarker,\n ColorTypeDarkest,\n ColorTypeInverse,\n ColorWarningDark,\n ColorWarningDarker,\n ColorWarningDarkest,\n ColorWarningLight,\n ColorWarningLighter,\n ColorWarningLightest,\n RainbowBilobaDarker,\n} from './KHTokens';\n\n// Please keep sorted.\nexport default {\n appBar: KHPalette.white,\n appointmentNeedsRequisitionText: KHPalette.pantone,\n appointmentStatusCriticalText: ColorCriticalDark,\n appointmentStatusNeutralText: ColorNeutralDarkest,\n appointmentStatusWarningText: ColorWarningDark,\n appointmentCardChevron: ColorPrimaryFillDefault,\n appointmentCardDimmedBackgroundColor: ColorBackgroundDefault,\n appointmentCardLockingTextColor: ColorTypeDarker,\n appointmentCardIconColor: ColorTypeDark,\n appointmentCardPatientAgeTextColor: ColorTypeDark,\n appointmentCardSharedSlotBackgroundColor: ColorHighlightLightest,\n appointmentCardSharedSlotFontColor: ColorCaptionFontHighlight,\n appointmentCardTimeLabelColor: ColorTypeDarkest,\n faxConfirmationStatusIncorrect: KHPalette.gray80,\n faxConfirmationStatusPending: KHPalette.orange100,\n faxConfirmationStatusUnattempted: KHPalette.pantone,\n faxConfirmationStatusConfirmed: KHPalette.green100,\n background: KHPalette.gray10,\n backgroundAccent: KHPalette.cyan130,\n backgroundAlternatingRow: KHPalette.gray5,\n backgroundContrast: KHPalette.white,\n backgroundInformation: KHPalette.purple5,\n backgroundLight: KHPalette.gray5,\n backgroundLightPurple: KHPalette.purple20,\n backgroundPrimary: KHPalette.purple100,\n backgroundPrimaryLight: KHPalette.purple30,\n backgroundPrimaryDark: KHPalette.purple130,\n backgroundSecondary: KHPalette.indigo70,\n backgroundSecondaryDark: KHPalette.indigo90,\n backgroundSecondaryGray: KHPalette.gray20,\n backgroundSecondaryDarkGray: KHPalette.newGray80,\n backgroundSideBar: KHPalette.white,\n backgroundSubNavBar: KHPalette.purple10,\n backgroundWarning: KHPalette.yellow10,\n backgroundFinished: KHPalette.referralBackground,\n boneDensityScanIcon: KHPalette.blueGray80,\n topicalFluorideIcon: KHPalette.blueGray80,\n borderPrimary: KHPalette.newPurple10,\n bottomNavigation: KHPalette.gray40,\n bottomNavigationBackground: KHPalette.white,\n bottomNavigationSelected: KHPalette.purple100,\n bookWarning: KHPalette.newRed,\n bookWithRiskText: KHPalette.bookWithRiskTextRed,\n borderContrast: KHPalette.white,\n buttonDefault: KHPalette.gray20,\n buttonDisabled: KHPalette.gray10,\n buttonDisabledLabel: KHPalette.gray70,\n buttonHighlight: `${KHPalette.purple100}33`,\n buttonLabel: KHPalette.white,\n buttonOutlinePrimary: KHPalette.purple100,\n buttonPrimary: KHPalette.purple100,\n\n card: KHPalette.white,\n cardBackgroundInvalid: KHPalette.red20,\n cardBackgroundAttentionStatus: KHPalette.newBrown,\n cardBackgroundNormalStatus: KHPalette.white,\n cardBackgroundPreStatus: KHPalette.newYellow40,\n cardTextAttentionStatus: KHPalette.newYellow10,\n cardTextDetail: KHPalette.newPurple10,\n cardTextNormalStatus: KHPalette.newGray10,\n cardTextPreStatus: KHPalette.newOrange,\n checkbox: KHPalette.gray50,\n checkboxContrast: KHPalette.white,\n checkboxDisabled: KHPalette.gray70,\n checkboxLabel: KHPalette.black,\n checkboxLabelDisabled: KHPalette.gray70,\n checkboxSelected: KHPalette.purple100,\n checklistItemHeaderBackground: ColorBackgroundPaper,\n checklistItemHeaderBottomBorder: ColorSecondaryLight,\n checklistItemHeaderTitle: ColorSecondaryDarker,\n checklistItemHeaderCaption: ColorNeutralMain,\n checklistItemSectionDone: KHPalette.green100,\n legacyChecklistItemHeaderCheckboxBackground: KHPalette.white,\n legacyChecklistItemHeaderActiveIndicator: KHPalette.purple100,\n legacyChecklistItemHeaderBackgroundDone: KHPalette.gray70,\n legacyChecklistItemHeaderBackgroundDoneDesktop: KHPalette.purple100,\n legacyChecklistItemHeaderBackgroundDefault: '#8B64D2',\n legacyChecklistItemHeaderIconDone: KHPalette.white,\n legacyChecklistItemHeaderTitle: KHPalette.white,\n checklistSectionBackgroundDone: KHPalette.white,\n chipBackgroundSelected: KHPalette.purple10,\n chipBackgroundSelectedDisabled: KHPalette.gray10,\n chipBorder: KHPalette.gray20,\n chipBorderDisabled: KHPalette.gray50,\n chipBorderSelected: KHPalette.purple100,\n chipBorderSelectedDisabled: KHPalette.gray40,\n chipIconSelected: KHPalette.purple100,\n chipLabelDisabled: KHPalette.gray50,\n chipLabelSelected: KHPalette.purple100,\n chipLabelSelectedDisabled: KHPalette.gray70,\n criticalWarning: KHPalette.newRed,\n criticalBackground: KHPalette.red20,\n dialogBackground: KHPalette.white,\n dropOffResult: KHPalette.navy,\n dropdownBackgroundDisabled: KHPalette.gray10,\n dropDownHovered: KHPalette.gray10,\n dropOffHovered: KHPalette.gray10,\n darkRed: KHPalette.red140,\n emailBackgroundWhite: KHPalette.white,\n emailBackgroundWhiteGray: KHPalette.emailBackgroundWhiteGray,\n emailBackgroundWhiteGrayDark: KHPalette.emailBackgroundWhiteGrayDark,\n emailBackgroundWhitePurple: KHPalette.emailBackgroundWhitePurple,\n emailPartnerButton: KHPalette.newPurple80,\n emailPatientButton: KHPalette.newPurple85,\n emailTextBlueGray: KHPalette.emailTextBlueGray,\n emailTextDarkGray: KHPalette.emailTextDarkGray,\n emailTextGray: KHPalette.emailTextGray,\n emailTextLightGray: KHPalette.emailTextLightGray,\n emailTextNavyBlue: KHPalette.referralPurple,\n emailTextPurple: KHPalette.newPurple75,\n emailCalloutTableBackground: KHPalette.referralBackground,\n emailCalloutTableSeparator: KHPalette.purple30,\n emailTitleWarningText: KHPalette.deepOrange140,\n emailTitleWarningBackground: KHPalette.red10,\n hovered: KHPalette.gray10,\n icon: KHPalette.black,\n iconDisabled: KHPalette.gray80,\n iconDisabledContrast: KHPalette.gray30,\n iconInformation: KHPalette.purple130,\n iconPrimary: KHPalette.purple100,\n iconPrimaryDark: KHPalette.newPurple90,\n iconPrimaryLight: KHPalette.purple70,\n iconSecondary: KHPalette.gray60,\n iconSecondaryLight: KHPalette.newGray80,\n iconWarning: KHPalette.yellow100,\n iconContrast: KHPalette.white,\n iconSpecialtyLab: KHPalette.deepOrange60,\n languageSelectDropDownBackground: KHPalette.white,\n languageSelectDropDownBorder: KHPalette.purple20,\n languageSelectDropDownButtonActive: KHPalette.purple20,\n languageSelectDropDownShadow: KHPalette.black,\n languageSelectIconColor: KHPalette.newPurple80,\n labelBloodSpecimensFieldInput: KHPalette.blue130,\n listItemSelected: KHPalette.gray80,\n link: KHPalette.blue110,\n logoPlus: KHPalette.newGray90,\n lookupHovered: KHPalette.gray10,\n mapMarker: KHPalette.gray80,\n mapMarkerDark: KHPalette.navy,\n mapMarkerContrast: KHPalette.newPurple10,\n monofilamentTestHasSensationBackground: KHPalette.pantone,\n monofilamentTestHasSensationPrimary: KHPalette.neonGreen,\n monofilamentTestHasWoundBackground: KHPalette.red110,\n monofilamentTestHasWoundOrMissingPrimary: KHPalette.white,\n monofilamentTestMissingBackground: KHPalette.newGray80,\n monofilamentTestNoSensationPrimary: KHPalette.lightbrown,\n monofilamentTestNoSensationBackground: KHPalette.tan,\n navBarBackground: KHPalette.navy,\n navBarSelected: KHPalette.purple10,\n overlayBackground: `${KHPalette.black}33`,\n onboardTechButtonBackground: KHPalette.navy,\n painScreeningIcon: KHPalette.red110,\n patientHighlight: KHPalette.purple20,\n phoneBorder: KHPalette.gray150,\n productTypeCardiacAuscultationIcon: KHPalette.gray50,\n productTypeDiabeticFootScreeningIcon: KHPalette.brown80,\n productTypeDiabeticRetinaScanIcon: KHPalette.green100,\n productTypeECGIcon: KHPalette.lightBlue100,\n productTypeFitKitPickupIcon: KHPalette.orange110,\n productTypeLabTestIcon: KHPalette.red120,\n productTypeRapidCovidTestIcon: KHPalette.green110,\n productTypeVitalsIcon: KHPalette.blueGray80,\n productTypeXrayIcon: KHPalette.gray50,\n productTypeCareNavigationDropInIcon: KHPalette.blueGray80,\n productTypeQuestionnaires: KHPalette.blueGray80,\n productTypeSDoHResourceGuidanceIcon: KHPalette.blueGray80,\n productTypeKitDeliveryAndEducation: KHPalette.blueGray80,\n productTypeKitDelivery: KHPalette.blueGray80,\n productTypeDEXAScanCareNavigationBookingIcon: KHPalette.newGray80,\n productTypeDEXAScanCareNavigationConfirmationIcon: KHPalette.newGray80,\n productTypeMammogramCareNavigationBookingIcon: KHPalette.newGray80,\n productTypeMammogramCareNavigationConfirmationIcon: KHPalette.newGray80,\n productTypePCPVisitCareNavigationBookingIcon: KHPalette.newGray80,\n productTypePCPVisitCareNavigationConfirmationIcon: KHPalette.newGray80,\n productTypeHeightAndWeightCollectionIcon: KHPalette.cyan110,\n productTypeAnnualWellnessVisitProviderCallIcon: KHPalette.pink100,\n productTypeStatinAdherenceAssessmentIcon: KHPalette.red130,\n productTypeWeightCounselingForChildrenIcon: KHPalette.newGray80,\n progressBar: KHPalette.purple100,\n progressBarTrack: KHPalette.gray5,\n progressBarInactive: KHPalette.gray40,\n referralBookingButton: KHPalette.newPurple80,\n referralBookingContactText: KHPalette.newPurple80,\n referralBookingTitle: KHPalette.indigo150,\n referralDisabledButton: KHPalette.referralDisabled,\n referralDoctorInfoHeaderText: ColorNeutralDark,\n referralIcon: KHPalette.newPurple85,\n referralOutline: KHPalette.gray20,\n referralPrimaryColor: KHPalette.indigo150,\n referralPurple: KHPalette.referralPurple,\n referralRebookButton: KHPalette.newPurple85,\n referralSeparatorBar: KHPalette.newGray20,\n referralSeparatorCompletedText: KHPalette.newPurple85,\n referralSeparatorPendingText: KHPalette.newGray20,\n referralServicesBackground: KHPalette.referralBackground,\n referralText: KHPalette.referralText,\n referralVisitBackground: KHPalette.referralNewYellow,\n routePrimary: KHPalette.newPurple90,\n sectionHeaderBackground: KHPalette.white,\n selectedRow: KHPalette.gray5,\n separator: KHPalette.gray20,\n sideBarSelected: KHPalette.purple100,\n searchBackground: KHPalette.white,\n suggestedSlotsBackground: ColorHighlightLightest,\n suggestedSlotsText: ColorHighlightDarker,\n discouragedSlotsBackground: ColorWarningLightest,\n discouragedSlotsText: ColorWarningDarker,\n riskSlotsBackground: ColorCriticalLightest,\n riskSlotsText: ColorCriticalDarker,\n tabButtonTextV2: ColorTabsTextActive,\n tabButtonTextSelected: KHPalette.purple100,\n tabButtonTextSelectedV2: ColorSecondaryDark,\n tabButtonUnderline: KHPalette.gray20,\n tabButtonUnderlineSelected: KHPalette.purple100,\n tagSeverityNeutralBackground: ColorNeutralLightest,\n tagSeverityNeutralText: ColorTypeDarkest,\n tagSeverityHighlightBackground: ColorHighlightLightest,\n tagSeverityHighlightText: ColorHighlightDarkest,\n tagSeverityWarningBackground: ColorWarningLightest,\n tagSeverityWarningText: ColorWarningDarkest,\n tagSeverityCriticalBackground: ColorCriticalLightest,\n tagSeverityCriticalText: ColorCriticalDarkest,\n text: KHPalette.gray130,\n textAccent: KHPalette.purple100,\n textAccentNew: KHPalette.newPurple10,\n textBrown: KHPalette.brown90,\n textChecklistTitle: KHPalette.black,\n textDark: KHPalette.black,\n textContrast: KHPalette.white,\n textContrastNeonGreen: KHPalette.neonGreen,\n textError: KHPalette.red110,\n textInformation: KHPalette.purple130,\n textInputBackgroundV2: KHPalette.white,\n textInputBackgroundDisabled: KHPalette.gray10,\n textInputLabelV2: KHPalette.referralText,\n textInputCaptionV2: KHPalette.referralTextCaption,\n textInputOutline: KHPalette.gray40,\n textInputOutlineError: KHPalette.red100,\n textInputOutlineFocused: KHPalette.gray80,\n textInputTextV2: KHPalette.navy,\n textInputTextDisabled: KHPalette.gray80,\n textInputTextContrast: KHPalette.white,\n textNavy: KHPalette.navy,\n textPlaceholder: KHPalette.gray40,\n textSecondary: KHPalette.gray80,\n textSecondaryLight: KHPalette.gray30,\n textSecondaryMedium: KHPalette.gray60,\n textSecondaryDark: KHPalette.gray100,\n textSuccess: KHPalette.green100,\n textWarning: KHPalette.yellow160,\n textWarningWithoutBackground: KHPalette.newDarkOrange,\n timeLine: KHPalette.orange100,\n toastBackground: KHPalette.blue20,\n toastBackgroundError: KHPalette.red20,\n toastLabel: KHPalette.blue110,\n verticalSeparator: KHPalette.gray40,\n warning: KHPalette.orange80,\n escalationReportAbnormalText: KHPalette.orange80,\n escalationReportCriticalText: KHPalette.newRed,\n escalationOutstandingText: KHPalette.newRed,\n escalationResolvedText: KHPalette.gray80,\n rainbowPalette: [\n '#18a3a5',\n '#dd7927',\n '#615fdd',\n '#d2649f',\n '#9348ad',\n '#1d87da',\n '#517c2a',\n '#a13978',\n '#e5ad06',\n '#62d644',\n '#e27867',\n '#19c2d8',\n '#dd4981',\n '#8bc34a',\n '#5e82d2',\n '#f5554a',\n '#4ccaa2',\n '#607d8b',\n '#449d48',\n '#86665a',\n ],\n designSystem: {\n grays: {\n black: '#2A2A4A',\n },\n action: {\n main: '#502997',\n },\n primary: {\n main: '#554494',\n },\n },\n success: ColorPine,\n successBackground: ColorLightPine,\n\n tagHighlightColorText: ColorHighlightDarkest,\n tagHighlightColorBackground: ColorHighlightLightest,\n tagWarningColorText: ColorWarningDarkest,\n tagWarningColorBackground: ColorWarningLightest,\n\n alertHighlightColorText: ColorHighlightDarkest,\n alertHighlightColorBackground: ColorHighlightLightest,\n alertHighlightColorStroke: ColorHighlightLight,\n alertWarningColorText: ColorWarningDarkest,\n alertWarningColorBackground: ColorWarningLightest,\n alertWarningColorStroke: ColorWarningLight,\n alertCriticalColorText: ColorCriticalDarker,\n alertCriticalColorBackground: ColorCriticalLightest,\n alertCriticalColorStroke: ColorCriticalLight,\n\n chipBackgroundColorSecondaryStrokeSelected: ColorSecondaryStrokeSelected,\n\n teamAvailabilityPageBackground: ColorBackgroundDefault,\n teamAvailabilityChartBackground: ColorBackgroundPaper,\n teamAvailabilityHeaderText: ColorTypeDarker,\n teamAvailabilityDottedLine: ColorSecondaryMain,\n teamAvailabilityChartBorder: ColorSecondaryDark,\n teamAvailabilityChartDayBorder: ColorSecondaryLightest,\n teamAvailabilitySprinterNameText: ColorActionTaskActiveType,\n teamAvailabilityServiceRegionNameText: ColorTypeDarker,\n teamAvailabilityCalendarHeaderDateText: ColorTypeDarker,\n teamAvailabilityCalendarHeaderMonthText: ColorTypeDarker,\n teamAvailabilityCalendarHeaderWeekText: ColorNeutralDark,\n teamAvailabilityChartAppointment: ColorNeutralDark,\n teamAvailabilityChartConflict: ColorCriticalDark,\n teamAvailabilityChartPreviewAvailable: ColorPrimaryLightest,\n teamAvailabilityChartPreviewBorder: ColorPrimaryDarker,\n teamAvailabilitySearchInputText: ColorTypeInverse,\n teamAvailabilityCalendarBottomBorder: ColorSecondaryMain,\n teamAvailabilityCurrentDayIndicatorBackground: ColorPrimaryDark,\n teamAvailabilityCurrentDayIndicatorText: ColorTypeInverse,\n teamAvailabilityWeekSeparator: ColorSecondaryLight,\n teamAvailabilityDrawerBackground: ColorBackgroundPaper,\n teamAvailabilityDrawerHeaderText: ColorTypeDarker,\n teamAvailabilityDrawerHeaderSeparator: ColorSecondaryLightest,\n teamAvailabilityDrawerDeleteEntryButton: ColorCloseButton,\n teamAvailabilityDrawerEditedFormButtonsBackground: ColorBackgroundDefault,\n teamAvailabilityDrawerEditedFormButtonsTopBorder: ColorSecondaryLight,\n teamAvailabilityDrawerImpactedAppointmentCountText: ColorCriticalDarker,\n\n teamAvailabilityNavBarItemSelected: ColorBackgroundDefault,\n teamAvailabilityNavBarItemSelectedIcon: ColorSecondaryDark,\n teamAvailabilityTitleBarBackground: ColorSecondaryMain,\n teamAvailabilityTitleBarTitleShadow: ColorTypeDarker,\n teamAvailabilityFilterButtonBackgroundSelected: ColorFilterButtonV2BackgroundSelected,\n teamAvailabilityFilterButtonShadow: ColorNeutralDarkest,\n teamAvailabilityFilterButtonAvatarBorder: ColorSecondaryLighter,\n teamAvailabilityTitleBarIconButtonBackgroundHover: ColorButtonPrimaryActive,\n teamAvailabilitySearchBarBorder: ColorSecondaryMain,\n teamAvailabilityIconColorNonInverted: ColorTypeDark,\n teamAvailabilitySwitchLabel: ColorTypeDarker,\n teamAvailabilitySwitchBorder: ColorTypeDark,\n teamAvailabilitySwitchBackgroundActiveOff: ColorNeutralLightest,\n teamAvailabilitySwitchBackgroundDisabledOff: ColorNeutralLighter,\n teamAvailabilitySwitchBackgroundActiveOn: ColorSecondaryDark,\n teamAvailabilitySwitchBackgroundDisabledOn: ColorNeutralMain,\n teamAvailabilityAvatarDefaultBackground: ColorSecondaryDark,\n teamAvailabilityInputText: ColorTypeDarker,\n teamAvailabilityCreateSprinterButton: ColorButtonPrimaryActive,\n\n filterButtonBackgroundColor: ColorFilterFillDefault,\n filterButtonBackgroundColorHover: ColorFilterFillHover,\n filterButtonBackgroundColorSelected: ColorFilterFillSelected,\n filterButtonBackgroundColorDisabled: ColorFilterFillDisabled,\n filterButtonBorderColor: ColorFilterStrokeDefault,\n filterButtonBorderColorHover: ColorFilterStrokeHover,\n filterButtonBorderColorSelected: ColorFilterStrokeSelected,\n filterButtonBorderColorDisabled: ColorFilterStrokeDisabled,\n filterButtonTextColor: ColorFilterFontDefault,\n filterButtonTextColorHover: ColorFilterFontHover,\n filterButtonTextColorSelected: ColorFilterFontSelected,\n filterButtonTextColorDisabled: ColorFilterFontDisabled,\n\n iconButtonPrimaryBackgroundDefault: ColorPrimaryFillDefault,\n iconButtonPrimaryIconDefault: ColorPrimaryFontDefault,\n iconButtonPrimaryBorderDefault: ColorPrimaryStrokeDefault,\n iconButtonSecondaryBackgroundDefault: ColorSecondaryFillDefault,\n iconButtonSecondaryIconDefault: ColorSecondaryFontDefault,\n iconButtonSecondaryBorderDefault: ColorSecondaryStrokeDefault,\n iconButtonTertiaryBackgroundDefault: ColorTertiaryFillDefault,\n iconButtonTertiaryIconDefault: ColorTertiaryFontDefault,\n iconButtonTertiaryBorderDefault: ColorTertiaryStrokeDefault,\n iconButtonPrimaryBackgroundHover: ColorPrimaryFillHover,\n iconButtonPrimaryIconHover: ColorPrimaryFontHover,\n iconButtonPrimaryBorderHover: ColorPrimaryStrokeHover,\n iconButtonSecondaryBackgroundHover: ColorSecondaryFillHover,\n iconButtonSecondaryIconHover: ColorSecondaryFontHover,\n iconButtonSecondaryBorderHover: ColorSecondaryStrokeHover,\n iconButtonTertiaryBackgroundHover: ColorTertiaryFillHover,\n iconButtonTertiaryIconHover: ColorTertiaryFontHover,\n iconButtonTertiaryBorderHover: ColorTertiaryStrokeHover,\n iconButtonPrimaryBackgroundSelected: ColorPrimaryFillSelected,\n iconButtonPrimaryIconSelected: ColorPrimaryFontSelected,\n iconButtonPrimaryBorderSelected: ColorPrimaryStrokeSelected,\n iconButtonSecondaryBackgroundSelected: ColorSecondaryFillSelected,\n iconButtonSecondaryIconSelected: ColorSecondaryFontSelected,\n iconButtonSecondaryBorderSelected: ColorSecondaryStrokeSelected,\n iconButtonTertiaryBackgroundSelected: ColorTertiaryFillSelected,\n iconButtonTertiaryIconSelected: ColorTertiaryFontSelected,\n iconButtonTertiaryBorderSelected: ColorTertiaryStrokeSelected,\n iconButtonPrimaryBackgroundDisabled: ColorPrimaryFillDisabled,\n iconButtonPrimaryIconDisabled: ColorPrimaryFontDisabled,\n iconButtonPrimaryBorderDisabled: ColorPrimaryStrokeDisabled,\n iconButtonSecondaryBackgroundDisabled: ColorSecondaryFillDisabled,\n iconButtonSecondaryIconDisabled: ColorSecondaryFontDisabled,\n iconButtonSecondaryBorderDisabled: ColorSecondaryStrokeDisabled,\n iconButtonTertiaryBackgroundDisabled: ColorTertiaryFillDisabled,\n iconButtonTertiaryIconDisabled: ColorTertiaryFontDisabled,\n iconButtonTertiaryBorderDisabled: ColorTertiaryStrokeDisabled,\n\n iconButtonPrimaryBackgroundDefaultSubtle: ColorPrimaryFillDefaultSubtle,\n iconButtonPrimaryIconDefaultSubtle: ColorPrimaryFontDefaultSubtle,\n iconButtonPrimaryBorderDefaultSubtle: ColorPrimaryStrokeDefaultSubtle,\n iconButtonSecondaryBackgroundDefaultSubtle: ColorSecondaryFillDefaultSubtle,\n iconButtonSecondaryIconDefaultSubtle: ColorSecondaryFontDefaultSubtle,\n iconButtonSecondaryBorderDefaultSubtle: ColorSecondaryStrokeDefaultSubtle,\n iconButtonTertiaryBackgroundDefaultSubtle: ColorTertiaryFillDefaultSubtle,\n iconButtonTertiaryIconDefaultSubtle: ColorTertiaryFontDefaultSubtle,\n iconButtonTertiaryBorderDefaultSubtle: ColorTertiaryStrokeDefaultSubtle,\n iconButtonPrimaryBackgroundHoverSubtle: ColorPrimaryFillHoverSubtle,\n iconButtonPrimaryIconHoverSubtle: ColorPrimaryFontHoverSubtle,\n iconButtonPrimaryBorderHoverSubtle: ColorPrimaryStrokeHoverSubtle,\n iconButtonSecondaryBackgroundHoverSubtle: ColorSecondaryFillHoverSubtle,\n iconButtonSecondaryIconHoverSubtle: ColorSecondaryFontHoverSubtle,\n iconButtonSecondaryBorderHoverSubtle: ColorSecondaryStrokeHoverSubtle,\n iconButtonTertiaryBackgroundHoverSubtle: ColorTertiaryFillHoverSubtle,\n iconButtonTertiaryIconHoverSubtle: ColorTertiaryFontHoverSubtle,\n iconButtonTertiaryBorderHoverSubtle: ColorTertiaryStrokeHoverSubtle,\n iconButtonPrimaryBackgroundSelectedSubtle: ColorPrimaryFillSelectedSubtle,\n iconButtonPrimaryIconSelectedSubtle: ColorPrimaryFontSelectedSubtle,\n iconButtonPrimaryBorderSelectedSubtle: ColorPrimaryStrokeSelectedSubtle,\n iconButtonSecondaryBackgroundSelectedSubtle: ColorSecondaryFillSelectedSubtle,\n iconButtonSecondaryIconSelectedSubtle: ColorSecondaryFontSelectedSubtle,\n iconButtonSecondaryBorderSelectedSubtle: ColorSecondaryStrokeSelectedSubtle,\n iconButtonTertiaryBackgroundSelectedSubtle: ColorTertiaryFillSelectedSubtle,\n iconButtonTertiaryIconSelectedSubtle: ColorTertiaryFontSelectedSubtle,\n iconButtonTertiaryBorderSelectedSubtle: ColorTertiaryStrokeSelectedSubtle,\n iconButtonPrimaryBackgroundDisabledSubtle: ColorPrimaryFillDisabledSubtle,\n iconButtonPrimaryIconDisabledSubtle: ColorPrimaryFontDisabledSubtle,\n iconButtonPrimaryBorderDisabledSubtle: ColorPrimaryStrokeDisabledSubtle,\n iconButtonSecondaryBackgroundDisabledSubtle: ColorSecondaryFillDisabledSubtle,\n iconButtonSecondaryIconDisabledSubtle: ColorSecondaryFontDisabledSubtle,\n iconButtonSecondaryBorderDisabledSubtle: ColorSecondaryStrokeDisabledSubtle,\n iconButtonTertiaryBackgroundDisabledSubtle: ColorTertiaryFillDisabledSubtle,\n iconButtonTertiaryIconDisabledSubtle: ColorTertiaryFontDisabledSubtle,\n iconButtonTertiaryBorderDisabledSubtle: ColorTertiaryStrokeDisabledSubtle,\n iconButtonCriticalBorder: ColorCriticalDark,\n iconButtonCriticalColor: ColorCriticalDarker,\n iconButtonCriticalFill: ColorCriticalLighter,\n iconButtonWarningBorder: ColorWarningDark,\n iconButtonWarningColor: ColorWarningDarker,\n iconButtonWarningFill: ColorWarningLighter,\n iconButtonCriticalHoveredBorder: ColorCriticalDarker,\n iconButtonCriticalHoveredColor: ColorCriticalDarkest,\n iconButtonCriticalHoveredFill: ColorCriticalLight,\n iconButtonWarningHoveredBorder: ColorWarningDarker,\n iconButtonWarningHoveredColor: ColorWarningDarkest,\n iconButtonWarningHoveredFill: ColorWarningLight,\n\n nextButtonSuccessButtonBackground: ColorHighlightLightest,\n nextButtonSuccessButtonColor: ColorHighlightDarkest,\n nextButtonFailureMenuBackground: ColorSecondaryLightest,\n nextButtonFailureMenuBorder: ColorSecondaryLighter,\n nextButtonFailureMenuButtonBackground: ColorBackgroundPaper,\n nextButtonFailureMenuLabelColor: ColorTextInputStrokeDefault,\n\n searchInputIcon: ColorSecondaryDarker,\n searchInputBorder: ColorTextInputStrokeDefault,\n searchInputBackgroundDefault: ColorBackgroundPaper,\n searchInputBackgroundDefaultInverted: ColorSecondaryLighter,\n searchInputBackgroundFocus: ColorBackgroundPaper,\n searchInputBorderFocus: ColorTextInputStrokeFocus,\n searchInputTextColorFocus: ColorTextInputFontFocus,\n\n captionColorNeutral: ColorCaptionFontNeutral,\n captionBackgroundNeutral: ColorCaptionFillNeutral,\n captionColorHighlight: ColorCaptionFontHighlight,\n captionBackgroundHighlight: ColorCaptionFillHighlight,\n captionColorWarning: ColorCaptionFontWarning,\n captionBackgroundWarning: ColorCaptionFillWarning,\n captionColorCritical: ColorCaptionFontCritical,\n captionBackgroundCritical: ColorCaptionFillCritical,\n\n linkColor: ColorTextLinkNew,\n\n toastBorderDS24: ColorToastStroke,\n toastBackgroundDS24: ColorToastFill,\n toastFontDS24: ColorToastFont,\n\n taskMenuBackground: ColorSecondaryLighter,\n taskButtonActiveText: ColorTabsTextActive,\n taskButtonSelectedText: ColorTaskFontSelected,\n taskButtonDisabledText: ColorNeutralDark,\n taskButtonActiveBackground: ColorSecondaryLighter,\n taskButtonHoveredBackground: ColorPrimaryLightest,\n\n patientEncounterSummarySectionHeaderText: ColorPrimaryDark,\n patientEncounterSummarySectionHeaderTextRight: ColorTypeDarker,\n patientEncounterSummarySectionHeaderUnderline: ColorSecondaryLighter,\n patientEncounterSummaryRowHeaderText: ColorTypeDarker,\n patientEncounterSummaryContentText: ColorNeutralDarkest,\n patientEncounterSummaryVitalsTableText: ColorTypeDarker,\n patientEncounterSummaryCriticalText: ColorCriticalDarker,\n patientEncounterSummaryCriticalBackground: ColorCriticalLightest,\n patientEncounterSummaryAbnormalText: ColorWarningDarker,\n patientEncounterSummaryAbnormalBackground: ColorWarningLightest,\n patientEncounterSummaryNormalText: ColorHighlightDarkest,\n patientEncounterSummaryNormalBackground: ColorHighlightLightest,\n patientEncounterSummaryStatusPillText: ColorNeutralDarkest,\n patientEncounterSummaryStatusPillIcon: ColorTypeDarker,\n patientEncounterSummaryStatusPillBackground: ColorNeutralLightest,\n patientEncounterSummaryStatusPillTextEmphasized: ColorPrimaryDarker,\n patientEncounterSummaryStatusPillBackgroundEmphasized: ColorPrimaryLightest,\n patientEncounterSummaryLogoPlusIcon: ColorTypeDarker,\n patientEncounterSummaryLinkText: ColorPrimaryDarker,\n patientEncounterSummaryPainScreeningHeaderText: ColorButtonPrimaryActive,\n patientEncounterSummaryPainScreeningEmergencyRoomHeader: ColorCriticalDarker,\n patientEncounterSummaryPainScreeningUrgentCareHeader: ColorWarningDark,\n patientEncounterSummaryPainScreeningTableHeaderText: ColorPrimaryDarker,\n patientEncounterSummaryPainScreeningPainValueText: ColorPrimaryDarker,\n patientEncounterSummaryPainScreeningPainValueDescriptionText: ColorTypeDarker,\n\n patientEncounterSummaryHeaderHorizontalDividerColor: ColorNeutralMain,\n patientEncounterSummaryBoneDensityScanImageLabelColor: ColorBrandTertiaryDarkest,\n\n postReviewQueueBackgroundColor: ColorBackgroundDefault,\n\n labelQuote: ColorTypeDark,\n labelText: ColorTypeDarker,\n\n visitTypeIconColor: RainbowBilobaDarker,\n verticalDividerColor: ColorSecondaryDarkest,\n\n radioButtonFillSelected: ColorPrimaryFillSelected,\n radioButtonFillUnselected: ColorBackgroundPaper,\n radioButtonBorder: ColorTypeDarker,\n radioButtonFillDisabled: ColorTypeDark,\n radioButtonFontColor: ColorCaptionFontNeutral,\n};\n","/* eslint-disable prettier/prettier */\n/* Do not edit! Autogenerated by 'yarn build-palette' */\nexport default {\n purple5: '#f7f6fc',\n purple10: '#f0edfa',\n purple20: '#e1dbf5',\n purple30: '#d2caf0',\n purple40: '#c3b8ec',\n purple50: '#b4a7e7',\n purple60: '#a595e2',\n purple70: '#9683de',\n purple80: '#8772d9',\n purple90: '#7860d4',\n purple100: '#694fd0',\n purple110: '#5e47bb',\n purple120: '#543fa6',\n purple130: '#493791',\n purple140: '#3f2f7c',\n purple150: '#342768',\n purple160: '#2a1f53',\n purple170: '#1f173e',\n purple180: '#150f29',\n purple190: '#0a0714',\n pink5: '#fbf5fe',\n pink10: '#f7ecfd',\n pink20: '#f0dafb',\n pink30: '#e8c8f9',\n pink40: '#e1b6f7',\n pink50: '#daa4f6',\n pink60: '#d291f4',\n pink70: '#cb7ff2',\n pink80: '#c36df0',\n pink90: '#bc5bee',\n pink100: '#b549ed',\n pink110: '#a241d5',\n pink120: '#903abd',\n pink130: '#7e33a5',\n pink140: '#6c2b8e',\n pink150: '#5a2476',\n pink160: '#481d5e',\n pink170: '#361547',\n pink180: '#240e2f',\n pink190: '#120717',\n red5: '#fef5f4',\n red10: '#fdecea',\n red20: '#fcd9d6',\n red30: '#fbc6c2',\n red40: '#fab3ae',\n red50: '#f9a19a',\n red60: '#f88e86',\n red70: '#f77b72',\n red80: '#f6685e',\n red90: '#f5554a',\n red100: '#f44336',\n red110: '#db3c30',\n red120: '#c3352b',\n red130: '#aa2e25',\n red140: '#922820',\n red150: '#7a211b',\n red160: '#611a15',\n red170: '#491410',\n red180: '#300d0a',\n red190: '#180605',\n deepPurple5: '#f7f5fb',\n deepPurple10: '#efebf7',\n deepPurple20: '#e0d7f0',\n deepPurple30: '#d1c3e9',\n deepPurple40: '#c2b0e2',\n deepPurple50: '#b39cdb',\n deepPurple60: '#a388d3',\n deepPurple70: '#9475cc',\n deepPurple80: '#8561c5',\n deepPurple90: '#764dbe',\n deepPurple100: '#673ab7',\n deepPurple110: '#5c34a4',\n deepPurple120: '#522e92',\n deepPurple130: '#482880',\n deepPurple140: '#3d226d',\n deepPurple150: '#331d5b',\n deepPurple160: '#291749',\n deepPurple170: '#1e1136',\n deepPurple180: '#140b24',\n deepPurple190: '#0a0512',\n indigo5: '#f5f6fb',\n indigo10: '#ebedf7',\n indigo20: '#d8dcf0',\n indigo30: '#c5cae8',\n indigo40: '#b2b9e1',\n indigo50: '#9fa8da',\n indigo60: '#8b96d2',\n indigo70: '#7885cb',\n indigo80: '#6573c3',\n indigo90: '#5262bc',\n indigo100: '#3f51b5',\n indigo110: '#3848a2',\n indigo120: '#324090',\n indigo130: '#2c387e',\n indigo140: '#25306c',\n indigo150: '#1f285a',\n indigo160: '#192048',\n indigo170: '#121836',\n indigo180: '#0c1024',\n indigo190: '#060812',\n blue5: '#f3f9fe',\n blue10: '#e8f4fd',\n blue20: '#d2eafc',\n blue30: '#bcdffb',\n blue40: '#a6d5fa',\n blue50: '#90caf9',\n blue60: '#79c0f7',\n blue70: '#63b5f6',\n blue80: '#4dabf5',\n blue90: '#37a0f4',\n blue100: '#2196f3',\n blue110: '#1d87da',\n blue120: '#1a78c2',\n blue130: '#1769aa',\n blue140: '#135a91',\n blue150: '#104b79',\n blue160: '#0d3c61',\n blue170: '#092d48',\n blue180: '#061e30',\n blue190: '#030f18',\n lightBlue5: '#f2fafe',\n lightBlue10: '#e5f6fd',\n lightBlue20: '#ccedfc',\n lightBlue30: '#b3e5fb',\n lightBlue40: '#9adcfa',\n lightBlue50: '#81d4f9',\n lightBlue60: '#67cbf8',\n lightBlue70: '#4ec2f7',\n lightBlue80: '#35baf6',\n lightBlue90: '#1cb1f5',\n lightBlue100: '#03a9f4',\n lightBlue110: '#0298db',\n lightBlue120: '#0287c3',\n lightBlue130: '#0276aa',\n lightBlue140: '#016592',\n lightBlue150: '#01547a',\n lightBlue160: '#014361',\n lightBlue170: '#003249',\n lightBlue180: '#002130',\n lightBlue190: '#001018',\n cyan5: '#f2fbfc',\n cyan10: '#e5f8fa',\n cyan20: '#ccf1f6',\n cyan30: '#b2eaf2',\n cyan40: '#99e4ed',\n cyan50: '#7fdde9',\n cyan60: '#66d6e5',\n cyan70: '#4cd0e0',\n cyan80: '#33c9dc',\n cyan90: '#19c2d8',\n cyan100: '#00bcd4',\n cyan110: '#00a9be',\n cyan120: '#0096a9',\n cyan130: '#008394',\n cyan140: '#00707f',\n cyan150: '#005e6a',\n cyan160: '#004b54',\n cyan170: '#00383f',\n cyan180: '#00252a',\n cyan190: '#001215',\n teal5: '#f2f9f9',\n teal10: '#e5f4f3',\n teal20: '#cceae7',\n teal30: '#b2dfdb',\n teal40: '#99d5cf',\n teal50: '#7fcac3',\n teal60: '#66c0b7',\n teal70: '#4cb5ab',\n teal80: '#33ab9f',\n teal90: '#19a093',\n teal100: '#009688',\n teal110: '#00877a',\n teal120: '#00786c',\n teal130: '#00695f',\n teal140: '#005a51',\n teal150: '#004b44',\n teal160: '#003c36',\n teal170: '#002d28',\n teal180: '#001e1b',\n teal190: '#000f0d',\n green5: '#f6fbf6',\n green10: '#edf7ed',\n green20: '#dbefdc',\n green30: '#c9e7ca',\n green40: '#b7dfb9',\n green50: '#a5d7a7',\n green60: '#93cf96',\n green70: '#81c784',\n green80: '#6fbf73',\n green90: '#5db761',\n green100: '#4caf50',\n green110: '#449d48',\n green120: '#3c8c40',\n green130: '#357a38',\n green140: '#2d6930',\n green150: '#265728',\n green160: '#1e4620',\n green170: '#163418',\n green180: '#0f2310',\n green190: '#071108',\n lightGreen5: '#f9fcf5',\n lightGreen10: '#f3f9ec',\n lightGreen20: '#e7f3da',\n lightGreen30: '#dcedc8',\n lightGreen40: '#d0e7b6',\n lightGreen50: '#c5e1a4',\n lightGreen60: '#b9db92',\n lightGreen70: '#add580',\n lightGreen80: '#a2cf6e',\n lightGreen90: '#96c95c',\n lightGreen100: '#8bc34a',\n lightGreen110: '#7daf42',\n lightGreen120: '#6f9c3b',\n lightGreen130: '#618833',\n lightGreen140: '#53752c',\n lightGreen150: '#456125',\n lightGreen160: '#374e1d',\n lightGreen170: '#293a16',\n lightGreen180: '#1b270e',\n lightGreen190: '#0d1307',\n lime5: '#fcfdf5',\n lime10: '#fafbeb',\n lime20: '#f5f8d7',\n lime30: '#f0f4c3',\n lime40: '#ebf1af',\n lime50: '#e6ed9c',\n lime60: '#e1ea88',\n lime70: '#dce674',\n lime80: '#d7e360',\n lime90: '#d2df4c',\n lime100: '#cddc39',\n lime110: '#b8c633',\n lime120: '#a4b02d',\n lime130: '#8f9a27',\n lime140: '#7b8422',\n lime150: '#666e1c',\n lime160: '#525816',\n lime170: '#3d4211',\n lime180: '#292c0b',\n lime190: '#141605',\n yellow5: '#fdfcf4',\n yellow10: '#fcf9ea',\n yellow20: '#faf3d6',\n yellow30: '#f8edc2',\n yellow40: '#f6e7ae',\n yellow50: '#f4e19a',\n yellow60: '#f2db85',\n yellow70: '#f0d571',\n yellow80: '#eecf5d',\n yellow90: '#ecc949',\n yellow100: '#eac435',\n yellow110: '#d2b02f',\n yellow120: '#bb9c2a',\n yellow130: '#a38925',\n yellow140: '#8c751f',\n yellow150: '#75621a',\n yellow160: '#5d4e15',\n yellow170: '#463a0f',\n yellow180: '#2e270a',\n yellow190: '#171305',\n amber5: '#fffbf2',\n amber10: '#fff8e6',\n amber20: '#fff2cd',\n amber30: '#ffecb4',\n amber40: '#ffe69b',\n amber50: '#ffe083',\n amber60: '#ffd96a',\n amber70: '#ffd351',\n amber80: '#ffcd38',\n amber90: '#ffc71f',\n amber100: '#ffc107',\n amber110: '#e5ad06',\n amber120: '#cc9a05',\n amber130: '#b28704',\n amber140: '#997304',\n amber150: '#7f6003',\n amber160: '#664d02',\n amber170: '#4c3902',\n amber180: '#332601',\n amber190: '#191300',\n orange5: '#fff9f2',\n orange10: '#fff4e5',\n orange20: '#ffeacc',\n orange30: '#ffe0b2',\n orange40: '#ffd599',\n orange50: '#ffcb7f',\n orange60: '#ffc166',\n orange70: '#ffb64c',\n orange80: '#ffac33',\n orange90: '#ffa219',\n orange100: '#ff9800',\n orange110: '#e58800',\n orange120: '#cc7900',\n orange130: '#b26a00',\n orange140: '#995b00',\n orange150: '#7f4c00',\n orange160: '#663c00',\n orange170: '#4c2d00',\n orange180: '#331e00',\n orange190: '#190f00',\n deepOrange5: '#fff6f3',\n deepOrange10: '#ffeee8',\n deepOrange20: '#ffddd2',\n deepOrange30: '#ffccbc',\n deepOrange40: '#ffbba6',\n deepOrange50: '#ffab90',\n deepOrange60: '#ff9a7a',\n deepOrange70: '#ff8964',\n deepOrange80: '#ff784e',\n deepOrange90: '#ff6738',\n deepOrange100: '#ff5722',\n deepOrange110: '#e54e1e',\n deepOrange120: '#cc451b',\n deepOrange130: '#b23c17',\n deepOrange140: '#993414',\n deepOrange150: '#7f2b11',\n deepOrange160: '#66220d',\n deepOrange170: '#4c1a0a',\n deepOrange180: '#331106',\n deepOrange190: '#190803',\n brown5: '#f8f6f5',\n brown10: '#f1eeec',\n brown20: '#e4ddda',\n brown30: '#d6ccc8',\n brown40: '#c9bbb5',\n brown50: '#bcaaa3',\n brown60: '#ae9991',\n brown70: '#a1887e',\n brown80: '#93776c',\n brown90: '#86665a',\n brown100: '#795548',\n brown110: '#6c4c40',\n brown120: '#604439',\n brown130: '#543b32',\n brown140: '#48332b',\n brown150: '#3c2a24',\n brown160: '#30221c',\n brown170: '#241915',\n brown180: '#18110e',\n brown190: '#0c0807',\n blueGray5: '#f7f8f9',\n blueGray10: '#eff2f3',\n blueGray20: '#dfe5e7',\n blueGray30: '#cfd8dc',\n blueGray40: '#bfcbd0',\n blueGray50: '#afbec5',\n blueGray60: '#9fb1b9',\n blueGray70: '#8fa4ad',\n blueGray80: '#7f97a2',\n blueGray90: '#6f8a96',\n blueGray100: '#607d8b',\n blueGray110: '#56707d',\n blueGray120: '#4c646f',\n blueGray130: '#435761',\n blueGray140: '#394b53',\n blueGray150: '#303e45',\n blueGray160: '#263237',\n blueGray170: '#1c2529',\n blueGray180: '#13191b',\n blueGray190: '#090c0d',\n gray5: '#f4f4f4',\n gray10: '#eaeaea',\n gray20: '#d5d5d5',\n gray30: '#c0c0c0',\n gray40: '#acacac',\n gray50: '#979797',\n gray60: '#828282',\n gray70: '#6e6e6e',\n gray80: '#595959',\n gray90: '#444444',\n gray100: '#303030',\n gray110: '#2b2b2b',\n gray120: '#262626',\n gray130: '#212121',\n gray140: '#1c1c1c',\n gray150: '#181818',\n gray160: '#131313',\n gray170: '#0e0e0e',\n gray180: '#090909',\n gray190: '#040404',\n newBrown: '#A76963',\n newYellow40: '#FEF9E4',\n newYellow10: '#FEF9EE',\n newOrange: '#E98670',\n newDarkOrange: '#AB6610',\n newGray10: '#E5E9E6',\n newGray20: '#BBBBC9',\n newGray80: '#6E7591',\n newGray90: '#757582',\n newPurple90: '#441887',\n newPurple85: '#594494',\n newPurple80: '#543B9A',\n newPurple75: '#502997',\n newPurple10: '#8B64D2',\n newBlueGray: '#ECF0FB',\n newRed: '#CF7272',\n navy: '#2a2a4a',\n black: '#000000',\n white: '#FFFFFF',\n neonGreen: '#D1F37B',\n pantone: '#8D5A54',\n lightbrown: '#764B47',\n tan: '#FFC677',\n newYellow: '#F8f4e4',\n referralPurple: '#272564',\n referralBackground: '#EBEAFF',\n referralText: '#434848',\n referralDisabled: '#cac9d2',\n referralNewYellow: '#F0F3E3',\n referralTextCaption: '#737387',\n emailBackgroundWhiteGray: '#F8F8F8',\n emailBackgroundWhiteGrayDark: '#ECECEC',\n emailBackgroundWhitePurple: '#DED8F0',\n emailTextBlueGray: '#616C83',\n emailTextDarkGray: '#202020',\n emailTextGray: '#333333',\n emailTextLightGray: '#414141',\n bookWithRiskTextRed: '#60071B',\n};\n","// currently these values were manually added as needed\n// in the future this file will be autogenerated based on an export from figma\n\nexport const ColorSecondaryDarkest = '#2C4556';\nexport const ColorSecondaryDarker = '#3B5E72';\nexport const ColorSecondaryDark = '#7393a5';\nexport const ColorSecondaryMain = '#93b0c0';\nexport const ColorSecondaryLight = '#b0cad9';\nexport const ColorSecondaryLighter = '#d8e3e9';\nexport const ColorSecondaryLightest = '#e9eef0';\nexport const ColorNeutralDarkest = '#1e1e1e';\nexport const ColorNeutralDark = '#7e849d';\nexport const ColorNeutralMain = '#a5a9bb';\nexport const ColorNeutralLighter = '#d9dadd';\nexport const ColorNeutralLightest = '#f3f4f5';\nexport const ColorTypeDarkest = '#1e1e1e';\nexport const ColorTypeDarker = '#5c677e';\nexport const ColorTypeDark = '#7e849d';\nexport const ColorTypeInverse = '#ffffff';\nexport const ColorBackgroundPaper = '#ffffff';\nexport const ColorBackgroundDefault = '#f5f5f5';\nexport const ColorActionTaskActiveType = '#425365';\nexport const ColorButtonPrimaryActive = '#502997';\nexport const ColorPrimaryDarker = '#5d4b9f';\nexport const ColorPrimaryDark = '#806ad1';\nexport const ColorPrimaryLightest = '#f7f1ff';\nexport const ColorCriticalDarkest = '#83220c';\nexport const ColorCriticalDarker = '#9b2c13';\nexport const ColorCriticalDark = '#d43e1c';\nexport const ColorCriticalMain = '#f68179';\nexport const ColorCriticalLight = '#efb6b6';\nexport const ColorCriticalLighter = '#ffd1d1';\nexport const ColorCriticalLightest = '#ffe8e8';\nexport const ColorWarningDarkest = '#664010';\nexport const ColorWarningDarker = '#714918';\nexport const ColorWarningDark = '#af6d09';\nexport const ColorWarningMain = '#cfa05a';\nexport const ColorWarningLight = '#f5bc67';\nexport const ColorWarningLighter = '#ffd594';\nexport const ColorWarningLightest = '#ffefc5';\nexport const ColorHighlightDarkest = '#42512a';\nexport const ColorHighlightDarker = '#69724B';\nexport const ColorHighlightMain = '#9ab46f';\nexport const ColorHighlightLight = '#B9CB9B';\nexport const ColorHighlightLightest = '#e8f0ca';\nexport const ColorTabsTextActive = '#3b5e72';\nexport const ColorCloseButton = '#605f78';\n\nexport const ColorTextLinkNew = '#543B9A';\n\nexport const ColorPrimaryFillDefault = '#502997';\nexport const ColorPrimaryStrokeDefault = '#502997';\nexport const ColorPrimaryFontDefault = '#FFFFFF';\nexport const ColorPrimaryFillHover = '#9257FE';\nexport const ColorPrimaryStrokeHover = '#9257FE';\nexport const ColorPrimaryFontHover = '#FFFFFF';\nexport const ColorPrimaryFillSelected = '#7393A5';\nexport const ColorPrimaryStrokeSelected = '#7393A5';\nexport const ColorPrimaryFontSelected = '#FFFFFF';\n\nexport const ColorSecondaryFillDefault = 'transparent';\nexport const ColorSecondaryStrokeDefault = '#502997';\nexport const ColorSecondaryFontDefault = '#502997';\nexport const ColorSecondaryFillHover = 'transparent';\nexport const ColorSecondaryStrokeHover = '#9257FE';\nexport const ColorSecondaryFontHover = '#9257FE';\nexport const ColorSecondaryFillSelected = 'transparent';\nexport const ColorSecondaryStrokeSelected = '#7393A5';\nexport const ColorSecondaryFontSelected = '#7393A5';\nexport const ColorTertiaryFillDefault = 'transparent';\nexport const ColorTertiaryStrokeDefault = 'transparent';\nexport const ColorTertiaryFontDefault = '#502997';\nexport const ColorTertiaryFillHover = 'transparent';\nexport const ColorTertiaryStrokeHover = 'transparent';\nexport const ColorTertiaryFontHover = '#9257FE';\nexport const ColorTertiaryFillSelected = 'transparent';\nexport const ColorTertiaryStrokeSelected = 'transparent';\nexport const ColorTertiaryFontSelected = '#7393A5';\nexport const ColorPrimaryFontDisabled = '#7E849D';\nexport const ColorPrimaryFillDisabled = '#FAFAFA';\nexport const ColorPrimaryStrokeDisabled = '#C0C4CC';\nexport const ColorSecondaryFontDisabled = '#7E849D';\nexport const ColorSecondaryFillDisabled = 'transparent';\nexport const ColorSecondaryStrokeDisabled = '#C0C4CC';\nexport const ColorTertiaryFontDisabled = '#7E849D';\nexport const ColorTertiaryFillDisabled = 'transparent';\nexport const ColorTertiaryStrokeDisabled = 'transparent';\n\nexport const ColorPrimaryFillDefaultSubtle = '#93B0C0';\nexport const ColorPrimaryStrokeDefaultSubtle = '#93B0C0';\nexport const ColorPrimaryFontDefaultSubtle = '#FFFFFF';\nexport const ColorPrimaryFillHoverSubtle = '#9257FE';\nexport const ColorPrimaryStrokeHoverSubtle = '#9257FE';\nexport const ColorPrimaryFontHoverSubtle = '#FFFFFF';\nexport const ColorPrimaryFillSelectedSubtle = '#7393A5';\nexport const ColorPrimaryStrokeSelectedSubtle = '#7393A5';\nexport const ColorPrimaryFontSelectedSubtle = '#FFFFFF';\nexport const ColorSecondaryFillDefaultSubtle = 'transparent';\nexport const ColorSecondaryStrokeDefaultSubtle = '#93B0C0';\nexport const ColorSecondaryFontDefaultSubtle = '#3B5E72';\nexport const ColorSecondaryFillHoverSubtle = 'transparent';\nexport const ColorSecondaryStrokeHoverSubtle = '#9257FE';\nexport const ColorSecondaryFontHoverSubtle = '#9257FE';\nexport const ColorSecondaryFillSelectedSubtle = 'transparent';\nexport const ColorSecondaryStrokeSelectedSubtle = '#7393A5';\nexport const ColorSecondaryFontSelectedSubtle = '#7393A5';\nexport const ColorTertiaryFillDefaultSubtle = 'transparent';\nexport const ColorTertiaryStrokeDefaultSubtle = 'transparent';\nexport const ColorTertiaryFontDefaultSubtle = '#3B5E72';\nexport const ColorTertiaryFillHoverSubtle = 'transparent';\nexport const ColorTertiaryStrokeHoverSubtle = 'transparent';\nexport const ColorTertiaryFontHoverSubtle = '#9257FE';\nexport const ColorTertiaryFillSelectedSubtle = 'transparent';\nexport const ColorTertiaryStrokeSelectedSubtle = 'transparent';\nexport const ColorTertiaryFontSelectedSubtle = '#7393A5';\nexport const ColorPrimaryFontDisabledSubtle = '#7E849D';\nexport const ColorPrimaryFillDisabledSubtle = '#FAFAFA';\nexport const ColorPrimaryStrokeDisabledSubtle = '#C0C4CC';\nexport const ColorSecondaryFontDisabledSubtle = '#7E849D';\nexport const ColorSecondaryFillDisabledSubtle = 'transparent';\nexport const ColorSecondaryStrokeDisabledSubtle = '#C0C4CC';\nexport const ColorTertiaryFontDisabledSubtle = '#7E849D';\nexport const ColorTertiaryFillDisabledSubtle = 'transparent';\nexport const ColorTertiaryStrokeDisabledSubtle = 'transparent';\n\nexport const ColorFilterStrokeDefault = '#3b5e72';\nexport const ColorFilterStrokeHover = '#D8E3E9';\nexport const ColorFilterStrokeSelected = '#D8E3E9';\nexport const ColorFilterStrokeDisabled = '#C0C4CC';\nexport const ColorFilterFontDefault = '#3b5e72';\nexport const ColorFilterFontHover = '#FFFFFF';\nexport const ColorFilterFontSelected = '#FFFFFF';\nexport const ColorFilterFontDisabled = '#5C677E';\nexport const ColorFilterFillDefault = '#D8E3E9';\nexport const ColorFilterFillHover = '#9E7FE8';\nexport const ColorFilterFillSelected = '#7393A5';\nexport const ColorFilterFillDisabled = '#D8E3E9';\n\nexport const ColorCaptionFontNeutral = '#1E1E1E';\nexport const ColorCaptionFillNeutral = 'transparent';\nexport const ColorCaptionFontHighlight = '#42512a';\nexport const ColorCaptionFillHighlight = '#E8F0CA';\nexport const ColorCaptionFontWarning = '#664010';\nexport const ColorCaptionFillWarning = '#FFEFC5';\nexport const ColorCaptionFontCritical = '#83220C';\nexport const ColorCaptionFillCritical = '#FFE8E8';\n\nexport const ColorFilterButtonV2BackgroundHover = '#9257fe';\nexport const ColorFilterButtonV2BackgroundSelected = '#3b5e72';\nexport const ColorTaskFontSelected = '#2c4556';\n\nexport const ColorToastStroke = '#5C677E';\nexport const ColorToastFill = '#7E849D';\nexport const ColorToastFont = '#FFFFFF';\n\nexport const ColorTextInputStrokeFocus = '#9257FE';\nexport const ColorTextInputStrokeDefault = '#5C677E';\nexport const ColorTextInputFontFocus = '#1E1E1E';\n\nexport const ColorLightPine = '#D4DBBC';\nexport const ColorPine = '#69724B';\nexport const ColorBrandTertiaryDarkest = '#663E1A';\n\nexport const RainbowBilobaDarker = '#7663a8';\n\nexport const Rainbow = {\n sienna: { lighter: '#ffd5ba', dark: '#CC6324', darker: '#b04e13', darkest: '#7E3103' },\n apricot: { lighter: '#ffcab1', dark: '#E7593C', darker: '#be3014', darkest: '#8A1801' },\n brandy: { lighter: '#e9cac8', dark: '#B67973', darker: '#99554e', darkest: '#683F3B' },\n orchid: { lighter: '#f7c0dd', dark: '#BA76AB', darker: '#985789', darkest: '#6B365F' },\n biloba: { lighter: '#dbd0f9', dark: '#9682C9', darker: '#7663a8', darkest: '#50407A' },\n portage: { lighter: '#c6cdef', dark: '#7687DA', darker: '#4d64d3', darkest: '#2D409E' },\n danube: { lighter: '#b2d5ef', dark: '#4980AA', darker: '#315b7b', darkest: '#18496E' },\n glacier: { lighter: '#a6d4f7', dark: '#5F90B6', darker: '#37709c', darkest: '#144B74' },\n neptune: { lighter: '#aedae8', dark: '#7AAEBE', darker: '#387386', darkest: '#0E495B' },\n gulf: { lighter: '#b6ecec', dark: '#7FB4B4', darker: '#4b7070', darkest: '#305050' },\n bay: { lighter: '#c0d7cc', dark: '#75B492', darker: '#0d703f', darkest: '#05542D' },\n tea: { lighter: '#c0d7ae', dark: '#709A4C', darker: '#57773b', darkest: '#3C5228' },\n chelsea: { lighter: '#d9e9a9', dark: '#849358', darker: '#636e43', darkest: '#434932' },\n husk: { lighter: '#d9da9b', dark: '#84860C', darker: '#6e7004', darkest: '#4D4E1D' },\n mongoose: { lighter: '#ece19e', dark: '#938D5F', darker: '#71692a', darkest: '#524800' },\n jasmine: { lighter: '#f8df8c', dark: '#AD8504', darker: '#7f6204', darkest: '#5B4706' },\n gold: { lighter: '#fada94', dark: '#BD8204', darker: '#916403', darkest: '#624300' },\n twine: { lighter: '#f5d6ab', dark: '#BF7C2A', darker: '#a05d0a', darkest: '#6B3B00' },\n zorba: { lighter: '#e5d1c3', dark: '#917056', darker: '#745c48', darkest: '#584638' },\n pearl: { lighter: '#d9dadd', dark: '#7E849D', darker: '#5c677e', darkest: '#1E1E1E' },\n};\n\n// colors for each sprinter on the team availability page\nexport const SprinterColors = [\n { lighter: Rainbow.sienna.lighter, darker: Rainbow.sienna.darker },\n { lighter: Rainbow.orchid.lighter, darker: Rainbow.orchid.darker },\n { lighter: Rainbow.danube.lighter, darker: Rainbow.danube.darker },\n { lighter: Rainbow.gulf.lighter, darker: Rainbow.gulf.darker },\n { lighter: Rainbow.chelsea.lighter, darker: Rainbow.chelsea.darker },\n { lighter: Rainbow.jasmine.lighter, darker: Rainbow.jasmine.darker },\n { lighter: Rainbow.zorba.lighter, darker: Rainbow.zorba.darker },\n { lighter: Rainbow.apricot.lighter, darker: Rainbow.apricot.darker },\n { lighter: Rainbow.biloba.lighter, darker: Rainbow.biloba.darker },\n { lighter: Rainbow.glacier.lighter, darker: Rainbow.glacier.darker },\n { lighter: Rainbow.bay.lighter, darker: Rainbow.bay.darker },\n { lighter: Rainbow.husk.lighter, darker: Rainbow.husk.darker },\n { lighter: Rainbow.gold.lighter, darker: Rainbow.gold.darker },\n { lighter: Rainbow.pearl.lighter, darker: Rainbow.pearl.darker },\n { lighter: Rainbow.brandy.lighter, darker: Rainbow.brandy.darker },\n { lighter: Rainbow.portage.lighter, darker: Rainbow.portage.darker },\n { lighter: Rainbow.neptune.lighter, darker: Rainbow.neptune.darker },\n { lighter: Rainbow.tea.lighter, darker: Rainbow.tea.darker },\n { lighter: Rainbow.mongoose.lighter, darker: Rainbow.mongoose.darker },\n { lighter: Rainbow.twine.lighter, darker: Rainbow.twine.darker },\n];\n","export default function assertExhaustiveSwitch(arg: never): never {\n throw new Error(\n `Value ${arg as string} was not accounted for in expected exhaustive switch statement.`,\n );\n}\n","export function hasSchedulerGroup(groups: string[] | null | undefined): boolean {\n if (!groups) return false;\n return groups.includes('Schedulers');\n}\n\nexport function hasPartnerGroup(groups: string[] | null | undefined): boolean {\n if (!groups) return false;\n return groups.includes('Partners');\n}\n\nexport function hasTechGroup(groups: string[] | null | undefined): boolean {\n if (!groups) return false;\n return groups.includes('Techs');\n}\n\nexport function hasRemoteTechGroup(groups: string[] | null | undefined): boolean {\n if (!groups) return false;\n return groups.includes('RemoteTechs');\n}\n\nexport function hasCoordinatorGroup(groups: string[] | null | undefined): boolean {\n if (!groups) return false;\n return groups.includes('Coordinators');\n}\n\nexport function hasPatientEngagementCSRGroup(groups: string[] | null | undefined): boolean {\n if (!groups) return false;\n return groups.includes('PatientEngagementCSRs');\n}\n\nexport function hasTrickleManagerGroup(groups: string[] | null | undefined): boolean {\n if (!groups) return false;\n return groups.includes('TrickleManagers');\n}\n\nexport function hasCaseManagerGroup(groups: string[] | null | undefined): boolean {\n if (!groups) return false;\n return groups.includes('CaseManagers');\n}\n\nexport function hasCMSManagerGroup(groups: string[] | null | undefined): boolean {\n if (!groups) return false;\n return groups.includes('CMSManagers');\n}\n","import { DateTime } from 'luxon';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { AddressInput, ServiceType, TimeRangeRuleInclusion, TimeRangeRulePeriod } from './API';\nimport { TimezoneID } from './formatters/formatTimezone';\nimport TECH_MATCHMAKING_CONFIG from './metadata/statsig/TECH_MATCHMAKING_CONFIG.json';\nimport { AgeEligibilityRequirements } from './types/AgeEligibilityRequirements';\n\n// All phones should be in E.164 format\nexport const CUSTOMER_SUPPORT_PHONE = '+12096777468';\nexport const ENGAGEMENT_CUSTOMER_SUPPORT_PHONE = '+18004608393';\n\n// Clinical managers\nexport const ANDREA_MOORE_PHONE = '+14155946780';\nexport const ANDREA_JAGODZINSKI_PHONE = '+16508856109';\nexport const SARAH_PHONE = '+14249776071';\nexport const ABBY_PHONE = '+18577778327';\nexport const KIM_PHONE = '+18019183260';\nexport const SHAREECE_PHONE = '+13135126624';\n\n// Operations staff\nexport const ARIANA_PHONE = '+16507143294';\nexport const FORREST_PHONE = '+12066615457';\n\nexport const EMERGENCY_NUMBER = '911';\nexport const SPRINTER_HEALTH_WESTFAX_PHONE = '+18886754006';\nexport const SPRINTER_HEALTH_WESTFAX_PHONE_TEST = '+12029648470';\nexport const SPRINTER_HEALTH_SMS_PHONE_PROD = '+18335941488';\n\nexport const OPS_TECHNICAL_SUPPORT_PHONE = '+16509550665';\nexport const CARE_COORDINATION_PHONE = '+12096770060';\n\n// Staff Doctors\nexport const DR_ARUN_VILLIVALAM_PHONE_NUMBER = '+17733988185';\nexport const DR_ARUN_VILLIVALAM_NPI = '1639355944';\nexport const DR_RICKY_PHONE_NUMBER = '+12072329669';\n\nexport const SUPPORT_EMAIL = 'support@sprinterhealth.com';\nexport const PARTNER_SUPPORT_EMAIL = 'partnersupport@sprinterhealth.com';\nexport const SUPPORT_EMAIL_SHORT = 'help@sprinterhealth.com';\nexport const INTERNAL_ONLY_SPRINTER_HEALTH_EMAIL = 'test@sprinterhealth.com';\nexport const INTERNAL_ONLY_REROUTE_FAILURE_EMAIL = 'test+failures@sprinterhealth.com';\nexport const CLINICAL_MANAGER_EMAIL_GROUP = 'clinical-managers@sprinterhealth.com';\nexport const CANCELLATION_POLICY_URL = 'https://www.sprinterhealth.com/cancellation-policy';\nexport const HOME_PAGE_URL = 'https://app.sprinterhealth.com';\nexport const TESTNET_PAGE_URL = 'https://testnet.d1j7gv4p0wvp5e.amplifyapp.com';\nexport const LOCALHOST_URL = 'http://localhost:3000';\n\n/**\n * The latest we allow patients to book a new appointment ahead of its scheduled start.\n */\nexport const MINIMUM_APPOINTMENT_NEW_BOOKING_LEAD_TIME_HOURS = 10;\n\n/**\n * The latest we allow anyone besides Ops to edit an appointment's patients, services, or\n * requisition uploads ahead the appointment's scheduled start.\n */\nexport const MINIMUM_APPOINTMENT_EDIT_LEAD_TIME_HOURS = 10;\n\n/**\n * The latest we allow techs conducting confirmation calls to edit an appointment's time, location,\n * or comments ahead of its scheduled start.\n */\nexport const MINIMUM_APPOINTMENT_EDIT_LEAD_TIME_HOURS_FOR_TECHS = 10;\n\n/**\n * The latest we allow anyone besides Ops to reschedule an appointment ahead of its current\n * scheduled start.\n */\n\nexport const MINIMUM_APPOINTMENT_RESCHEDULE_LEAD_TIME_HOURS = 10;\n/**\n * The latest ahead of its scheduled start we allow anyone besides Ops to book or reschedule an\n * appointment without providing all required requisition uploads. This affects partners who either:\n *\n * 1. Are the ordering provider and we've allowed to defer uploads until after booking due to\n * workflow constraints on their side (e.g. BMC, UCI, and some former partners like Intermountain\n * and Stanford), or\n * 2. Rely on us to order the tests post-booking using an Electronic Data Interchange (EDI) like\n * ChangeHealthcare, which can sometimes fail, leaving appointments without requisition uploads\n * (e.g. all health plans doing gap closure)\n */\nexport const MINIMUM_DEFERRED_REQUISITION_UPLOAD_LEAD_TIME_HOURS = 36;\n\nexport const MINIMUM_APPOINTMENT_CANCELLATION_ALLOWED_HOURS = 24;\nexport const GRACE_CANCELLATION_TIME_HOURS = 1;\nexport const PARTNER_LATE_CANCELLATION_FEE_USD = 49;\nexport const FAILED_APPOINTMENT_FEE_USD = 49;\n\nexport const MILE_IN_METERS = 1609.344;\nexport const MINUTE_IN_SECONDS = 60;\nexport const MINUTE_IN_MILLISECONDS = MINUTE_IN_SECONDS * 1000;\nexport const SECOND_IN_MILLISECONDS = 1000;\nexport const HOUR_IN_MINUTES = 60;\nexport const HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS;\nexport const HOUR_IN_MILLISECONDS = 60 * 60 * 1000;\nexport const MONTHS_IN_YEAR = 12;\nexport const DAY_IN_MINUTES = 24 * HOUR_IN_MINUTES;\nexport const DOLLAR_IN_CENTS = 100;\nexport const POUND_IN_KILOGRAMS = 0.453592;\nexport const INCHES_IN_METRES = 0.0254;\n\nexport const DEFAULT_TIMEZONE_PT: TimezoneID = 'America/Los_Angeles';\nexport const DATETIME_FORMAT_ISOLIKE_WITH_TIMEZONE_AND_NO_SECONDS = 'yyyy-MM-dd HH:mm ZZZZ';\n\nexport const MAXIMUM_TIMEOUT_TIME_IN_MILLISECONDS = 24 * HOUR_IN_MILLISECONDS;\n\nexport const MIN_DATE_TIME = DateTime.fromISO('1970-01-01T00:00:00Z');\nexport const MAX_DATE_TIME = DateTime.fromISO('2100-01-01T00:00:00Z');\n\nexport const UNIVERSAL_INCLUSION_RULE = {\n id: uuidv4(),\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '00:00',\n end: '23:59:59.999',\n recurrenceStart: '2022-01-01',\n recurrenceEnd: null,\n recurrencePeriod: TimeRangeRulePeriod.DAY,\n recurrenceMultiple: 1,\n};\n\nexport const sentryFrontEndDSN =\n 'https://2267b9cdf8f54634ba7b492a5d93758a@o1070873.ingest.sentry.io/6067269';\nexport const sentryBackEndDSN =\n 'https://fb7006c21d784adcae53a46f33caf880@o1070873.ingest.sentry.io/6095678';\nexport const sentryTransactionSampleRate = 0.1;\nexport const sentryLowTransactionSampleRate = 0.01;\nexport const sentryErrorSampleRate = 1.0;\n\nexport const DEFAULT_SHARED_SLOT_RANK = 0.5;\n\nexport const isSlotShared = (sharedSlotRank: number): boolean =>\n sharedSlotRank < DEFAULT_SHARED_SLOT_RANK || sharedSlotRank > DEFAULT_SHARED_SLOT_RANK;\n\n// The fixed time costs of an appointment (e.g. patient introduction, identification, situating, wrapping up)\nexport const APPOINTMENT_FIXED_TIME_COST_SECONDS = 10 * MINUTE_IN_SECONDS;\n\nexport const PERIOD_TO_DAYS = {\n [TimeRangeRulePeriod.DAY]: 1,\n [TimeRangeRulePeriod.WEEK]: 7,\n};\n\nexport const MAX_DISTANCE_BETWEEN_SHARED_SLOT_APPOINTMENTS_METERS_DEFAULT =\n TECH_MATCHMAKING_CONFIG.maxDistanceDefaultThresholds.betweenSharedSlotAppointmentsMiles *\n MILE_IN_METERS;\n\nexport const MAX_DISTANCE_BETWEEN_CONSECUTIVE_SHARED_SLOT_SLOTS_METERS_DEFAULT =\n TECH_MATCHMAKING_CONFIG.maxDistanceDefaultThresholds.betweenConsecutiveSharedSlotSlotsMiles *\n MILE_IN_METERS;\n\nexport const MAX_DISTANCE_BETWEEN_NON_SHARED_SLOT_APPOINTMENTS_METERS_DEFAULT =\n TECH_MATCHMAKING_CONFIG.maxDistanceDefaultThresholds.betweenNonSharedSlotAppointmentsMiles *\n MILE_IN_METERS;\n\nexport const MAX_DISTANCE_BETWEEN_SHARED_SLOT_APPOINTMENT_NON_SHARED_SLOT_APPOINTMENT_METERS_DEFAULT =\n TECH_MATCHMAKING_CONFIG.maxDistanceDefaultThresholds\n .betweenSharedSlotAppointmentAndNonSharedSlotAppointmentMiles * MILE_IN_METERS;\n\nexport const MIN_DISTANCE_BETWEEN_HOME_AND_APPOINTMENT_TO_BE_PARACHUTE_DAY_METERS =\n TECH_MATCHMAKING_CONFIG.maxDistanceDefaultThresholds\n .betweenHomeAndAppointmentToBeParachuteDayMiles * MILE_IN_METERS;\n\n// We are phasing out matchmaking distance thresholds.\n// As a gradual process of phasing them out, we are multiplying existing thresholds by these constants across the board.\nexport const MATCHMAKING_DISTANCE_THRESHOLD_MULTIPLIER_NON_SHARED_SLOT = 1.2;\nexport const MATCHMAKING_DISTANCE_THRESHOLD_MULTIPLIER_SHARED_SLOT = 1.5;\n\nexport const ESTIMATED_METERS_PER_HOUR_DRIVING_SPEED =\n TECH_MATCHMAKING_CONFIG.estimatedDrivingSpeedMilesPerHour * MILE_IN_METERS;\n\n// Maximum allowed patients in an appointment for speciality labs.\nexport const MAX_PATIENTS_PER_APPOINTMENT_SPECIALITY_LABS = 3;\n\n// Maximum allowed patients in an appointment for all other partners.\nexport const MAX_PATIENTS_PER_APPOINTMENT = 2;\n\n// Maximum allowed patients in an appointment for D2C.\nexport const MAX_PATIENTS_PER_APPOINTMENT_D2C = 10;\n\n// polling interval to auto fetch tech appointments on tech appointments screen\nexport const TECH_APPOINTMENTS_POLLING_INTERVAL_MS = 60000;\n\n// Used for demo partners\nexport const STRIPE_INVALID_CUSTOMER_ID = 'cus_INVALID';\n\n// Minimum amount we can charge for an appointment (0.50 USD per https://stripe.com/docs/api/charges/object#charge_object-amount)\nexport const MIN_APPOINTMENT_CHARGE_CENTS = 0.5 * DOLLAR_IN_CENTS;\n\n// Maximum amount we can charge for an appointment (1,000 USD)\nexport const MAX_APPOINTMENT_CHARGE_CENTS = 1000 * DOLLAR_IN_CENTS;\n\n// https://terminology.hl7.org/CodeSystem-icd10.html\nexport const ICD_10_CODE_SYSTEM_URL = 'http://hl7.org/fhir/sid/icd-10';\nexport const LOINC_CODE_SYSTEM_URL = 'http://loinc.org';\nexport const CPT_CODE_SYSTEM_URL = 'http://www.ama-assn.org/go/cpt';\nexport const CPTII_CODE_SYSTEM_URL =\n 'https://www.ama-assn.org/practice-management/cpt/category-ii-codes';\nexport const HCPCS_CODE_SYSTEM_URL = 'https://www.cms.gov/Medicare/Coding/HCPCSReleaseCodeSets';\n\nexport const REQUIRE_CAREGIVER_CONSENT_MAX_AGE_YEARS = 18;\n\nexport const BEST_SLOT_SCORE = -1000000;\n\nexport const WORST_SLOT_SCORE = 1000000;\n\n// Multiplier to scale direct distance/time between adjacent appointments to convert to incremental distance/time\n// if slot only has one adjacent appointment, slotScore = dist(self, adjacent) * multiplier\n// multiplier is set to 1 after running simulations and understanding that\n// the difference between expected and actual has a rough distribution of one\nexport const SUGGESTED_SLOTS_MULTIPLIER = 1;\n\nexport const DISCOURAGED_SLOTS_THRESHOLD_INCREMENTAL_DRIVING_TIME_SECONDS = 25 * MINUTE_IN_SECONDS;\n\nexport const RETINA_VUE_PROD_URL = 'https://www.retinavue.net/RN_CustomerPortal/default.aspx';\n\nexport const RETINA_VUE_SANDBOX_URL =\n 'https://sandbox.retinavue.net/RN_CustomerPortal/default.aspx';\n\n// if no services provided during booking in partner portal, add blood and urine as default service types\nexport const LAB_SERVICE_TYPES_ADD_BY_DEFAULT_DURING_BOOKING = [\n ServiceType.BLOOD,\n ServiceType.URINE,\n];\n\nexport const SLACK_APP_DEEP_LINK = 'slack://';\nexport const SLACK_APPLE_STORE_REF = 'https://apps.apple.com/us/app/slack/id618783545';\nexport const SLACK_TEAM_ID = 'T033SV8CDD0';\n// #phi-awv-issues channel ID. To get channel ID in slack: right click on channel -> View channel details -> scroll to bottom\nexport const SLACK_AWV_CHANNEL_ID = 'C06VA5T84BZ';\n// #discuss-engineering channel ID\nexport const SLACK_DEV_AWV_CHANNEL_ID = 'C03P89ME21W';\n// #phi-updates-trickle-schedule channel ID\nexport const SLACK_TRICKLE_SCHEDULE_CHANNEL_ID = 'C073FN72QBG';\n// #phi-test-channel-slack-bot\nexport const SLACK_TEST_CHANNEL_SLACK_BOT_CHANNEL_ID = 'C06BHQK8BAB';\n\nexport const OLDEST_BOOKABLE_AGE_IN_YEARS = 125;\n// youngest bookable age is 9 months\nexport const YOUNGEST_BOOKABLE_AGE_IN_YEARS = 9 / 12;\n\n// For partners using these standards, we will trust them to give us the eligible children (not adults)\nexport const STANDARD_LEAD_SCREENING_AGE_REQUIREMENTS: AgeEligibilityRequirements[] = [\n {\n lowerLimitMonths: YOUNGEST_BOOKABLE_AGE_IN_YEARS * MONTHS_IN_YEAR,\n upperLimitMonths: REQUIRE_CAREGIVER_CONSENT_MAX_AGE_YEARS * MONTHS_IN_YEAR,\n },\n];\n\nexport const HEDIS_LEAD_SCREENING_AGE_REQUIREMENTS: AgeEligibilityRequirements[] = [\n { lowerLimitMonths: 9, upperLimitMonths: 24 },\n];\n\n/**\n * Per CDPH, if a child has not ever received a lead screening, even after the\n * 24-month guideline, they are mandated to get catch-up testing if they are\n * 24-72 months old (ages 2-6)\n * https://www.cdph.ca.gov/Programs/CCDPHP/DEODC/CLPPB/Pages/screen_regs_3.aspx\n */\nexport const CALIFORNIA_LEAD_SCREENING_AGE_REQUIREMENTS: AgeEligibilityRequirements[] = [\n { lowerLimitMonths: 9, upperLimitMonths: 6 * MONTHS_IN_YEAR },\n];\n\nexport const TOPICAL_FLUORIDE_AGE_REQUIREMENTS: AgeEligibilityRequirements = {\n upperLimitMonths: 21 * MONTHS_IN_YEAR,\n lowerLimitMonths: 1 * MONTHS_IN_YEAR,\n};\n\nexport const APM_AGE_REQUIREMENTS: AgeEligibilityRequirements = {\n upperLimitMonths: 17 * MONTHS_IN_YEAR,\n lowerLimitMonths: 7 * MONTHS_IN_YEAR,\n};\n\n// TODO(wendy): update areas of the code to use these constants\nexport const CONSENT_TO_CONTACT_FOR_MARKETING_BY_SMS_VERSION = 0;\nexport const CONSENT_TO_CONTACT_FOR_MARKETING_BY_EMAIL_VERSION = 0;\nexport const CONSENT_TO_CONTACT_FOR_MARKETING_BY_PHONE_VERSION = 0;\n\nexport const SPRINTER_HEALTH_OFFICE_ADDRESS: AddressInput = {\n lines: ['4600 Bohannon Dr'],\n subunit: 'Ste 100',\n city: 'Menlo Park',\n state: 'CA',\n postalCode: '94025',\n};\n\n// The increment of time into the hour that we allow remote appointments to be booked at.\n// A value of 30 means we can book intervals starting at 9, 9:30, 10, 10:30, etc.\n// A value of 15 means we can book intervals starting at 9, 9:15, 9:30, 9:45, 10, 10:15, etc.\nexport const STANDARD_REMOTE_APPOINTMENT_START_INCREMENT_MINUTES = 30;\n\n// The number of minutes after the start time that a remote appointment will fail if it has not been started\nexport const STANDARD_REMOTE_APPOINTMENT_FAILURE_THRESHOLD_MINUTES = 15;\n\n// The number of hours before the start time that a remote tech may be matched to an in-home appointment\nexport const IN_HOME_REMOTE_TECH_EARLY_MATCH_HOURS = 6;\n\n/* The number of days after an appointment ends during which a tech can update the appointment checklist */\nexport const TECH_CHECKLIST_UPDATE_WINDOW_BUSINESS_DAYS = 1;\n","import { Brand, make } from 'ts-brand';\n\nexport type Dollar = Brand;\nexport const makeDollar = make();\nexport const ZERO_DOLLARS = makeDollar(0);\n\nexport type Cent = Brand;\nexport const makeCent = make();\nexport const ZERO_CENTS = makeCent(0);\n","import PartnerOrganizationGroup from './PartnerOrganizationGroup';\n\nexport type PartnerGroupConfig = {\n displayName: string;\n areInvoiceEmailsConsolidated?: boolean;\n};\n\nexport const PARTNER_GROUP_CONFIGS: {\n [partnerOrganizationGroup in PartnerOrganizationGroup]: PartnerGroupConfig;\n} = {\n A1HOMEHEALTHANDHOSPICE: {\n displayName: 'A1 Home Health',\n },\n ABLHEALTHCARE: {\n displayName: 'ABL Health Care',\n },\n ACCOMPANYHEALTH: {\n displayName: 'Accompany Health',\n },\n AFFORDABLEPATERNITY: {\n displayName: 'Affordable Paternity',\n },\n ALPHACARE: {\n displayName: 'AlphaCare',\n },\n AMOREHOMEHEALTH: {\n displayName: 'Amore Home Health',\n },\n APOLLOHOMEHEALTH: {\n displayName: 'Apollo',\n },\n ASIANNETWORKPACIFICHOMECARE: {\n displayName: 'Asian Network Pacific Home Care',\n },\n ASSISTONCALL: {\n displayName: 'Assist On Call',\n },\n BESTHOMEHEALTH: {\n displayName: 'Best Home Health',\n },\n CAPITOLHEALTHCARE: {\n displayName: 'Capitol Healthcare',\n },\n CAREINTOUCHHOMEHEALTHAGENCY: {\n displayName: 'Care In Touch Home Health Agency',\n },\n CAREMUST: {\n displayName: 'Care Must',\n },\n CEDARSSINAI: {\n displayName: 'Cedars-Sinai',\n },\n COMFORTHOMEHEALTHCARE: {\n displayName: 'Comfort Home Health Care',\n },\n CONCIERGEMDLA: {\n displayName: 'Concierge MD LA',\n },\n DEMOLAB: {\n displayName: 'Widget Labs',\n },\n DEMOPROVIDER: {\n displayName: 'Widget MD',\n },\n DISCOVERHEALTH: {\n displayName: 'Discover Health MD',\n },\n DRIPHYDRATION: {\n displayName: 'Drip Hydration',\n },\n DRVILLIVALAM: {\n displayName: 'Dr. Villivalam',\n },\n ELDERCAREMANAGEMENT: {\n displayName: 'Elder Care Management',\n },\n EMMANUELHEALTHCAREINC: {\n displayName: 'Emmanuel Healthcare',\n },\n ESSENTIALSHOMEHEALTH: {\n displayName: 'Essentials Home Health',\n },\n FOUNDATIONMEDICINE: {\n displayName: 'Foundation Medicine',\n },\n FIRSTCHOICEHOMEHEALTH: {\n displayName: '1st Choice Home Health & Hospice',\n },\n EXACTSCIENCES: {\n displayName: 'Exact Sciences',\n },\n GEORGIAHANDSHOULDERELBOW: {\n displayName: 'Georgia Hand, Shoulder & Elbow',\n },\n GRAIL: {\n displayName: 'GRAIL',\n },\n GUARDANT: {\n displayName: 'Guardant',\n },\n GUARDIANANGELHOMECARE: {\n displayName: 'Guardian Angel Home Care',\n },\n HARMONYHH: {\n displayName: 'Harmony Home Health',\n },\n HOMEHEALTHBAYAREAINC: {\n displayName: 'Home Health Bay Area',\n },\n HEALTHFLEX: {\n displayName: 'HealthFlex',\n },\n JOHNMUIRHEALTH: {\n displayName: 'John Muir Health',\n },\n KANEHEALTH: {\n displayName: 'Kane Health',\n },\n KRISTARAMONASMD: {\n displayName: 'Krista Ramonas, MD',\n },\n INTOUCHHOMECARE: {\n displayName: 'InTouch Home Care',\n },\n LEBAE: {\n displayName: 'Lebae',\n },\n MARSHALLMEDICALCENTER: {\n displayName: 'Marshall Medical Center',\n },\n NATERA: {\n displayName: 'Natera',\n },\n PINNACLEHOMEHEALTH: {\n displayName: 'Pinnacle Home Health',\n },\n RUPAHEALTH: {\n displayName: 'Rupa Health',\n },\n SEHAJHOMEHEALTH: {\n displayName: 'Sehaj Home Health',\n },\n SILVERADOBELMONTMEMORYCARE: {\n displayName: 'Silverado Belmont Memory Care',\n },\n STPATRICKHOMEHEALTH: {\n displayName: 'St. Patrick Home Health Providers',\n },\n AAHCKINDRED: {\n displayName: 'Asian American Home Care',\n },\n HALESPORTS: {\n displayName: 'HALE Sports',\n },\n LONETREEPOSTACUTE: {\n displayName: 'Lone Tree Post Acute',\n },\n MERIDIANHOMEHEALTH: {\n displayName: 'Meridian Home Health',\n },\n MYDOCTORMEDICALGROUP: {\n displayName: 'My Doctor Medical Group',\n },\n NAVERIS: {\n displayName: 'Naveris',\n },\n NORTHBAYPRIVATEMEDICINE: {\n displayName: 'North Bay Private Medicine',\n },\n NURSINGANDREHABATHOME: {\n displayName: 'Nursing and Rehab at Home',\n },\n OPOHEALTH: {\n displayName: 'Opo Health',\n },\n FIREFLYHEALTH: {\n displayName: 'Firefly',\n },\n OSCAR: {\n displayName: 'Oscar',\n },\n OSCARDEMO: {\n displayName: 'Generic Demo',\n },\n PENINSULADOCTOR: {\n displayName: 'Peninsula Doctor',\n },\n PERPETUALCAREHOMEHEALTH: {\n displayName: 'Perpetual Care Home Health',\n },\n PRIMELIVINGHOMEHEALTH: {\n displayName: 'Primeliving Home Health',\n },\n PULSEDEMO: {\n displayName: 'Pulse Demo',\n },\n READY2NURSE: {\n displayName: 'Ready2Nurse',\n },\n SILVERLINESTAFF: {\n displayName: 'Silverline Staff',\n },\n SOCOLMD: {\n displayName: 'SocolMD',\n },\n SONDERHEALTHCARE: {\n displayName: 'Sonder Healthcare',\n },\n STANFORDCANCERCENTER: {\n displayName: 'Stanford Cancer Center',\n },\n SUNCRESTHOSPICE: {\n displayName: 'Suncrest Home Health & Hospice',\n },\n ALLIANCEHOMEHEALTH: {\n displayName: 'Alliance Home Health',\n },\n TRUEMED: {\n displayName: 'TrueMed',\n },\n UCSF: {\n displayName: 'UCSF',\n },\n VNHOMEHEALTHCARE: {\n displayName: 'VN Home Health Care',\n },\n YOURCHOICEHOMEHEALTH: {\n displayName: 'Your Choice Home Health',\n },\n BMCDEMO: {\n displayName: 'BMC Demo',\n },\n BOSTONMEDICALCENTER: {\n displayName: 'Boston Medical Center',\n areInvoiceEmailsConsolidated: true,\n },\n WELLSENSE: {\n displayName: 'WellSense',\n },\n BRADFORDRABINMDANDHIROYUHATANOMD: {\n displayName: 'Bradford Rabin MD and Hiroyu Hatano MD',\n },\n THEBODYWRX: {\n displayName: 'The Body WRX',\n },\n D2C: {\n displayName: 'D2C',\n },\n HOMEHEALTHRESOURCEGROUP: {\n displayName: 'Home Health Resource Group',\n },\n STORYHEALTH: {\n displayName: 'Story Health',\n },\n STANFORDRESEARCH: {\n displayName: 'Stanford Research',\n },\n TRAININGPARTNER: {\n displayName: 'Training Partner',\n },\n INTERMOUNTAINCANCERCENTER: {\n displayName: 'Intermountain Cancer Center',\n },\n ALIGNMENTHEALTH: {\n displayName: 'Alignment Health',\n },\n MOLINA: {\n displayName: 'Molina',\n },\n WELLSENSENH: {\n displayName: 'WellSense NH',\n },\n UCI: {\n displayName: 'UCI',\n },\n UCLA: {\n displayName: 'UCLA',\n },\n ELEVANCEHEALTH: {\n displayName: 'Elevance Health',\n },\n CENTENE: {\n displayName: 'Centene',\n },\n UHC: {\n displayName: 'UnitedHealthcare',\n },\n HUMANA: {\n displayName: 'Humana',\n },\n DEVOTEDHEALTH: {\n displayName: 'Devoted Health',\n },\n CENTRALCALIFORNIAALLIANCEFORHEALTH: {\n displayName: 'Central California Alliance for Health',\n },\n UCSD: {\n displayName: 'UCSD',\n },\n AETNA: {\n displayName: 'Aetna',\n },\n};\n\nexport default function getPartnerGroupConfig(\n partnerOrganizationGroup: PartnerOrganizationGroup,\n): PartnerGroupConfig {\n return PARTNER_GROUP_CONFIGS[partnerOrganizationGroup];\n}\n","import getPartnerGroupConfig from './metadata/getPartnerGroupConfig';\nimport PartnerOrganizationGroup from './metadata/PartnerOrganizationGroup';\n\nexport default function formatPartnerOrganizationGroup(\n partnerOrganizationGroup: PartnerOrganizationGroup | undefined | null,\n format: 'displayName',\n): string {\n if (partnerOrganizationGroup == null) return '';\n\n const config = getPartnerGroupConfig(partnerOrganizationGroup);\n switch (format) {\n case 'displayName':\n return config.displayName;\n default:\n return '';\n }\n}\n","const phoneRegex = /[+]?[1]?([0-9]{0,3})([0-9]{0,3})([0-9]{0,4})/;\n\n/**\n * This is using terminology from https://linkedphone.com/blog/what-are-the-different-parts-of-a-phone-number-called/\n */\ntype PhoneFormatTypes = 'text' | 'uri' | 'numbersOnly' | 'areaCode' | 'prefixAndLineNumber';\n\nfunction formatPhone(phone: string, format?: PhoneFormatTypes): string;\nfunction formatPhone(phone: null | undefined, format?: PhoneFormatTypes): null;\nfunction formatPhone(phone: string | null | undefined, format?: PhoneFormatTypes): string | null;\nfunction formatPhone(phone: string | null | undefined, format?: PhoneFormatTypes): string | null {\n if (!phone) return null;\n\n if (format === 'uri') return `tel:${phone}`;\n\n // Adding a check for if the phone number starts with a + but does not continue with a \"1\".\n // This will account for the phone numbers in our config files.\n if (phone?.[0] === '+' && phone?.[1] !== '1') return phone;\n\n const parts = phoneRegex.exec(phone);\n\n // In the case when for some reason, no parts are generated, or if there are not enough parts to\n // process, then return the input value.\n if (\n !parts ||\n parts.length < 3 ||\n parts[1].length !== 3 ||\n parts[2].length !== 3 ||\n parts[3].length !== 4\n ) {\n return phone;\n }\n\n if (format === 'areaCode') {\n return parts[1];\n }\n\n if (format === 'prefixAndLineNumber') {\n return `${parts[2]}${parts[3]}`;\n }\n\n return format === 'numbersOnly'\n ? `${parts[1]}${parts[2]}${parts[3]}`\n : `(${parts[1]}) ${parts[2]}-${parts[3]}`;\n}\n\nexport default formatPhone;\n\n/**\n * Phone numbers with an area code or central office code of 555 are assumed to be fictitious and ignored: https://en.wikipedia.org/wiki/555_(telephone_number)\n * This explicitly does not filter out Toll-Free numbers as some of our partners utilize them.\n * @param phone\n * @returns {boolean} A boolean representing if the phone number is a \"555 number\".\n */\nexport function isPhoneNumber555AreaOrCentralOfficeCode(phone: string): boolean {\n const parts = phoneRegex.exec(phone);\n if (!parts || parts.length < 1 || !parts[1]) return false;\n\n return parts[1] === '555' || (parts.length > 2 && parts[2] === '555');\n}\n","import { PartnerOrganization } from '../API';\nimport formatPhone from '../formatPhone';\nimport getPartnerConfig from '../metadata/getPartnerConfig';\n\nexport default function formatPartnerOrganization(\n partnerOrganization: PartnerOrganization | undefined | null,\n format:\n | 'displayName'\n | 'fullPartnerDisplayNameForMessaging'\n | 'shortPartnerDisplayNameForMessaging'\n | 'email'\n | 'mailto'\n | 'phone'\n | 'tel'\n | 'zendeskTag'\n | 'fullContactDetails',\n overrideWithBrandName?: string | null,\n): string {\n if (partnerOrganization == null) return '';\n\n const config = getPartnerConfig(partnerOrganization);\n switch (format) {\n case 'displayName':\n return overrideWithBrandName ?? config.displayName;\n case 'fullPartnerDisplayNameForMessaging':\n return (\n overrideWithBrandName ?? config.fullPartnerDisplayNameForMessaging ?? config.displayName\n );\n case 'shortPartnerDisplayNameForMessaging':\n return (\n overrideWithBrandName ??\n config.shortPartnerDisplayNameForMessaging ??\n formatPartnerOrganization(partnerOrganization, 'fullPartnerDisplayNameForMessaging')\n );\n case 'email':\n return config.patientSupportEmail ?? '';\n case 'mailto':\n return `mailto:${config.patientSupportEmail ?? ''}`;\n case 'phone':\n return formatPhone(config.patientSupportPhoneE164) ?? '';\n case 'tel':\n return `tel:${config.patientSupportPhoneE164 ?? ''}`;\n case 'zendeskTag':\n return `partner_${partnerOrganization.toLowerCase()}`;\n case 'fullContactDetails': {\n const formattedDisplayName =\n overrideWithBrandName != null\n ? overrideWithBrandName\n : config.displayName\n ? `${config.displayName} at `\n : '';\n\n const email = config.patientSupportEmail;\n const phone = formatPhone(config.patientSupportPhoneE164);\n if (email && phone) {\n return `${formattedDisplayName}${email} or ${phone}`;\n }\n if (email || phone) {\n return `${formattedDisplayName}${email || phone || ''}`; // The final || '' must be there to remove a lint error\n }\n return overrideWithBrandName ?? config.displayName;\n }\n default:\n return '';\n }\n}\n","/** Returns the number of seconds since epoch (UTC), a.k.a \"Unix time\".\n *\n * @returns Number of seconds (rounded) since epoch.\n */\nexport default function getAWSTimestampNow(): number {\n return Math.round(Date.now() / 1000);\n}\n","interface ErrorLoggingFields {\n errorMessage?: string;\n errorName?: string;\n}\n\n/**\n * Parses the message and name of an error, if it exists.\n *\n * Important! Make sure to spread this call or else Kibana will drop the event.\n *\n * @example\n *\n * logger.error({eventName:\"signInError\", ...getErrorLoggingFields(e)})\n *\n */\nexport default function getErrorLoggingFields(\n error: string | { message: string } | Error | unknown | undefined | null,\n): ErrorLoggingFields {\n if (error == null) return {};\n\n if (typeof error === 'string') {\n return { errorMessage: error };\n }\n\n if (error instanceof Error) {\n return { errorMessage: error.message, errorName: error.name };\n }\n\n return { errorMessage: 'Unknown error detected' };\n}\n","import { ProductType, ServiceType } from './API';\nimport { PRODUCT_TYPE_CONFIGS } from './metadata/getProductTypeConfig';\n\nexport default function getServiceTypesFromProductTypes(\n productTypes?: ProductType[] | null,\n): ServiceType[] {\n if (productTypes == null) return [];\n return productTypes.flatMap((productType) => PRODUCT_TYPE_CONFIGS[productType].serviceType);\n}\n","// Disabling this since TypeScript is able to handle cyclical dependencies that only involve types / constants.\n// Resolving this would make the separation of i18nConstants and i18nTypes inconsistent.\n// eslint-disable-next-line import/no-cycle\nimport { FullKeyMappingByNamespaceByLocale } from './i18nTypes';\nimport cms_outreach_keys_from_codebase_en from './locales/en/cmsOutreachKeysFromCodebase.json';\nimport cms_outreach_sms_en from './locales/en/cmsOutreachSms.json';\nimport outreach_email_en from './locales/en/outreachEmail.json';\nimport outreach_sms_en from './locales/en/outreachSms.json';\nimport referrals_flow_en from './locales/en/referralsFlow.json';\nimport transactional_email_en from './locales/en/transactionalEmail.json';\nimport transactional_sms_en from './locales/en/transactionalSms.json';\nimport cms_outreach_keys_from_codebase_es from './locales/es/cmsOutreachKeysFromCodebase.json';\nimport cms_outreach_sms_es from './locales/es/cmsOutreachSms.json';\nimport outreach_email_es from './locales/es/outreachEmail.json';\nimport outreach_sms_es from './locales/es/outreachSms.json';\nimport referrals_flow_es from './locales/es/referralsFlow.json';\nimport transactional_email_es from './locales/es/transactionalEmail.json';\nimport transactional_sms_es from './locales/es/transactionalSms.json';\n\nexport const BCP47_LANGUAGE_EN = 'en';\nexport const BCP47_LANGUAGE_ES = 'es';\nexport const I18N_FALLBACK_LNG = BCP47_LANGUAGE_EN;\n\nexport const I18N_SUPPORTED_LNGS_BACKEND: string[] = [BCP47_LANGUAGE_EN, BCP47_LANGUAGE_ES];\nexport const I18N_SUPPORTED_LNGS_FRONTEND: string[] = [BCP47_LANGUAGE_EN, BCP47_LANGUAGE_ES];\n\nexport const I18N_ALL_SUPPORTED_LNGS: string[] = [\n ...new Set([...I18N_SUPPORTED_LNGS_FRONTEND, ...I18N_SUPPORTED_LNGS_BACKEND]),\n];\n\nexport const I18N_SUPPORTED_NAMESPACES_BACKEND: string[] = [\n 'cmsOutreachSms',\n 'cmsOutreachKeysFromCodebase',\n 'outreachEmail',\n 'transactionalEmail',\n 'outreachSms',\n 'transactionalSms',\n];\nexport const I18N_SUPPORTED_NAMESPACES_FRONTEND: string[] = ['referralsFlow', 'cmsOutreachSms'];\n\nexport const I18N_ALL_SUPPORTED_NAMESPACES: string[] = [\n ...new Set([...I18N_SUPPORTED_NAMESPACES_FRONTEND, ...I18N_SUPPORTED_NAMESPACES_BACKEND]),\n];\nexport const I18N_ALL_SUPPORTED_NAMESPACE_FILENAMES: string[] = I18N_ALL_SUPPORTED_NAMESPACES.map(\n (namespace) => `${namespace}.json`,\n);\n\nexport const CMS_OUTREACH_KEYS_BY_LANGUAGE_BY_FILENAME: FullKeyMappingByNamespaceByLocale = {\n [BCP47_LANGUAGE_EN]: {\n 'cmsOutreachSms.json': cms_outreach_sms_en,\n },\n [BCP47_LANGUAGE_ES]: {\n 'cmsOutreachSms.json': cms_outreach_sms_es,\n },\n};\n\nexport const CMS_OUTREACH_NAMESPACES_FILENAMES_WITH_JSON_EXTENSION = Object.keys(\n CMS_OUTREACH_KEYS_BY_LANGUAGE_BY_FILENAME.en,\n);\n\nexport const I18N_FRONTEND_NAMESPACE_JSON_OBJECTS_BY_LANGUAGE: Record<\n string,\n Record>\n> = {\n [BCP47_LANGUAGE_EN]: {\n referralsFlow: referrals_flow_en,\n cmsOutreachSms: cms_outreach_sms_en,\n cmsOutreachKeysFromCodebase: cms_outreach_keys_from_codebase_en,\n },\n [BCP47_LANGUAGE_ES]: {\n referralsFlow: referrals_flow_es,\n cmsOutreachSms: cms_outreach_sms_es,\n cmsOutreachKeysFromCodebase: cms_outreach_keys_from_codebase_es,\n },\n};\n\nexport const I18N_BACKEND_NAMESPACE_JSON_OBJECTS_BY_LANGUAGE: Record<\n string,\n Record>\n> = {\n [BCP47_LANGUAGE_EN]: {\n cmsOutreachSms: cms_outreach_sms_en,\n outreachSms: outreach_sms_en,\n transactionalSms: transactional_sms_en,\n outreachEmail: outreach_email_en,\n transactionalEmail: transactional_email_en,\n cmsOutreachKeysFromCodebase: cms_outreach_keys_from_codebase_en,\n },\n [BCP47_LANGUAGE_ES]: {\n cmsOutreachSms: cms_outreach_sms_es,\n outreachSms: outreach_sms_es,\n transactionalSms: transactional_sms_es,\n outreachEmail: outreach_email_es,\n transactionalEmail: transactional_email_es,\n cmsOutreachKeysFromCodebase: cms_outreach_keys_from_codebase_es,\n },\n};\n\nexport const getAllNamespaceJsonObjectsByLanguage = (): Record<\n string,\n Record>\n> => {\n const allNamespaceJsonObjectsByLanguage: Record<\n string,\n Record>\n > = {};\n for (const lng of I18N_ALL_SUPPORTED_LNGS) {\n allNamespaceJsonObjectsByLanguage[lng] = {\n ...I18N_FRONTEND_NAMESPACE_JSON_OBJECTS_BY_LANGUAGE[lng],\n ...I18N_BACKEND_NAMESPACE_JSON_OBJECTS_BY_LANGUAGE[lng],\n };\n }\n return allNamespaceJsonObjectsByLanguage;\n};\n\nexport const LOKALISE_DEV_PROJECT_ID = '3460092864a87400d01623.47375839';\nexport const LOKALISE_PROD_PROJECT_ID = '9028054764af3a84674431.19892128';\n\nexport const LOKALISE_KEY_LIST_MAX_NUM_OF_KEYS_PER_RESPONSE = 500;\n\n// Rate limit is 6 requests per second, but we are being conservative and waiting 1/3 of a second between requests\n// Since it's possible developers or our cron may be using the Lokalise API at the same time\nexport const LOKALISE_RATE_LIMIT_WAIT_TIME_IN_MILLISECONDS = 1000 / 3;\n","export default function isNotNullish(value: T): value is NonNullable {\n return value != null;\n}\n","import { DropOffOrganization, LabOrganization } from '../API';\n\ntype LabOrganizationConfig = {\n displayName: string;\n labType: 'reference' | 'specialty' | 'other';\n dropOffOrganizations: DropOffOrganization[];\n hideInPreReview?: boolean;\n hasServicesSuppliesMap?: boolean;\n requestedVolumeScheme?: 'minimum' | 'preferred';\n requestedVolumeCapacityType?: 'whole' | 'serum';\n isAutofillingRequisitionsAllowed?: boolean;\n // /** for standard labs we order lab organization tests,\n // for referenced labs we order referenced service request from another lab\n // f.e. for SPRINTER_HEALTH INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION -\n // we order the service request type from QUEST 1120 */\n placeLabOrderType?: 'standard' | 'referenced';\n};\n\n// Please try to keep this sorted.\nconst LAB_CONFIGS: {\n [labOrganization in LabOrganization]: LabOrganizationConfig;\n} = {\n [LabOrganization.AFFORDABLE_PATERNITY]: {\n displayName: 'Affordable Paternity',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.FEDEX],\n hideInPreReview: true,\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.BIO_REFERENCE]: {\n displayName: 'BioReference Laboratories',\n labType: 'reference',\n dropOffOrganizations: [DropOffOrganization.BIO_REFERENCE],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.CYREX]: {\n displayName: 'Cyrex Labs',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.FEDEX],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.DEMO_LAB]: {\n displayName: 'Widget Labs',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.FEDEX],\n requestedVolumeScheme: 'minimum',\n hideInPreReview: true,\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.EXACT_SCIENCES]: {\n displayName: 'Exact Sciences',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.FEDEX],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.FOUNDATION_MEDICINE]: {\n displayName: 'Foundation Medicine',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.FEDEX],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.GRAIL]: {\n displayName: 'GRAIL',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.FEDEX],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.GUARDANT]: {\n displayName: 'Guardant',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.FEDEX],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.LABCORP]: {\n displayName: 'Labcorp',\n labType: 'reference',\n dropOffOrganizations: [DropOffOrganization.LABCORP],\n hasServicesSuppliesMap: true,\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.LETS_GET_CHECKED_LAB]: {\n displayName: 'LetsGetChecked',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.USPS],\n },\n [LabOrganization.MARSHALL_LABORATORY]: {\n displayName: 'Marshall Laboratory',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.MARSHALL_LABORATORY],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.MUIRLAB]: {\n displayName: 'MuirLab',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.MUIRLAB],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.NATERA]: {\n displayName: 'Natera',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.FEDEX],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.NAVERIS]: {\n displayName: 'Naveris',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.FEDEX],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.PULSE_DEMO]: {\n displayName: 'Pulse Demo Labs',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.FEDEX],\n requestedVolumeScheme: 'minimum',\n hideInPreReview: true,\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.QUEST]: {\n displayName: 'Quest Labs',\n labType: 'reference',\n hasServicesSuppliesMap: true,\n dropOffOrganizations: [DropOffOrganization.QUEST],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n isAutofillingRequisitionsAllowed: true,\n placeLabOrderType: 'standard',\n },\n [LabOrganization.RUPA_HEALTH]: {\n displayName: 'Rupa Health',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.FEDEX],\n hideInPreReview: true,\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.SPRINTER_HEALTH]: {\n displayName: 'Sprinter Health',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.SPRINTER_HEALTH],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n placeLabOrderType: 'referenced',\n },\n [LabOrganization.STANFORD_CHILDRENS_HOSPITAL]: {\n displayName: \"Stanford Children's Hospital\",\n labType: 'reference',\n dropOffOrganizations: [DropOffOrganization.STANFORD],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.STANFORD]: {\n displayName: 'Stanford',\n labType: 'reference',\n dropOffOrganizations: [DropOffOrganization.STANFORD],\n requestedVolumeScheme: 'preferred',\n hasServicesSuppliesMap: true,\n requestedVolumeCapacityType: 'whole',\n },\n [LabOrganization.STANFORD_CANCER_CENTER]: {\n displayName: 'Stanford Cancer Center',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.STANFORD_CANCER_CENTER],\n requestedVolumeScheme: 'preferred',\n hasServicesSuppliesMap: true,\n requestedVolumeCapacityType: 'whole',\n },\n [LabOrganization.STANFORD_RESEARCH]: {\n displayName: 'Stanford Research',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.STANFORD_RESEARCH],\n hasServicesSuppliesMap: true,\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.UCSF_BLOOD_DRAW_LAB]: {\n displayName: 'UCSF Blood Draw Lab',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.UCSF_BLOOD_DRAW_LAB],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.WEST_PAC]: {\n displayName: 'WestPac Labs',\n labType: 'reference',\n dropOffOrganizations: [DropOffOrganization.WEST_PAC],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.DOTHOUSE_LAB]: {\n displayName: 'DotHouse Lab',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.DOTHOUSE_LAB],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.CODMAN_LAB]: {\n displayName: 'Codman Lab',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.CODMAN_LAB],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.BMC_LAB]: {\n displayName: 'BMC Lab',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.BMC_LAB],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'whole',\n hasServicesSuppliesMap: true,\n },\n [LabOrganization.ROSLINDALE_LAB]: {\n displayName: 'Roslindale Lab',\n labType: 'specialty',\n dropOffOrganizations: [DropOffOrganization.ROSLINDALE_LAB],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.KAISER]: {\n displayName: 'Kaiser',\n labType: 'reference',\n dropOffOrganizations: [DropOffOrganization.KAISER],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.INTERMOUNTAIN]: {\n displayName: 'Intermountain',\n labType: 'reference',\n dropOffOrganizations: [DropOffOrganization.INTERMOUNTAIN],\n hasServicesSuppliesMap: true,\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'whole',\n },\n [LabOrganization.OTHER]: {\n displayName: 'Other',\n labType: 'other',\n dropOffOrganizations: [],\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'serum',\n },\n [LabOrganization.INTERMOUNTAIN_CANCER_CENTER]: {\n displayName: 'Intermountain Cancer Center',\n labType: 'reference',\n dropOffOrganizations: [DropOffOrganization.INTERMOUNTAIN_CANCER_CENTER],\n hasServicesSuppliesMap: true,\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'whole',\n isAutofillingRequisitionsAllowed: true,\n },\n [LabOrganization.TRAINING_PARTNER_LAB]: {\n displayName: 'Training Partner Lab',\n labType: 'reference',\n dropOffOrganizations: [DropOffOrganization.TRAINING_PARTNER],\n hasServicesSuppliesMap: false,\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'whole',\n },\n [LabOrganization.UCI_LAB]: {\n displayName: 'UCI Lab',\n labType: 'reference',\n dropOffOrganizations: [DropOffOrganization.UCI_LAB],\n hasServicesSuppliesMap: true,\n requestedVolumeScheme: 'minimum',\n requestedVolumeCapacityType: 'whole',\n },\n};\n\nexport const STANDARD_REFERENCE_LAB_ORGANIZATIONS = Object.values(LabOrganization).filter(\n (l) => LAB_CONFIGS[l].labType === 'reference',\n);\n\nexport const STANDARD_REFERENCE_LAB_ORGANIZATION = LabOrganization.BIO_REFERENCE;\n\nexport default LAB_CONFIGS;\n","enum PartnerOrganizationGroup {\n 'A1HOMEHEALTHANDHOSPICE' = 'A1HOMEHEALTHANDHOSPICE',\n 'ABLHEALTHCARE' = 'ABLHEALTHCARE',\n 'AFFORDABLEPATERNITY' = 'AFFORDABLEPATERNITY',\n 'ALPHACARE' = 'ALPHACARE',\n 'AMOREHOMEHEALTH' = 'AMOREHOMEHEALTH',\n 'ASIANNETWORKPACIFICHOMECARE' = 'ASIANNETWORKPACIFICHOMECARE',\n 'ASSISTONCALL' = 'ASSISTONCALL',\n 'BESTHOMEHEALTH' = 'BESTHOMEHEALTH',\n 'CAPITOLHEALTHCARE' = 'CAPITOLHEALTHCARE',\n 'CAREINTOUCHHOMEHEALTHAGENCY' = 'CAREINTOUCHHOMEHEALTHAGENCY',\n 'CAREMUST' = 'CAREMUST',\n 'CEDARSSINAI' = 'CEDARSSINAI',\n 'COMFORTHOMEHEALTHCARE' = 'COMFORTHOMEHEALTHCARE',\n 'CONCIERGEMDLA' = 'CONCIERGEMDLA',\n 'DEMOLAB' = 'DEMOLAB',\n 'DEMOPROVIDER' = 'DEMOPROVIDER',\n 'DISCOVERHEALTH' = 'DISCOVERHEALTH',\n 'DRIPHYDRATION' = 'DRIPHYDRATION',\n 'DRVILLIVALAM' = 'DRVILLIVALAM',\n 'ELDERCAREMANAGEMENT' = 'ELDERCAREMANAGEMENT',\n 'EMMANUELHEALTHCAREINC' = 'EMMANUELHEALTHCAREINC',\n 'ESSENTIALSHOMEHEALTH' = 'ESSENTIALSHOMEHEALTH',\n 'FOUNDATIONMEDICINE' = 'FOUNDATIONMEDICINE',\n 'FIRSTCHOICEHOMEHEALTH' = 'FIRSTCHOICEHOMEHEALTH',\n 'EXACTSCIENCES' = 'EXACTSCIENCES',\n 'GEORGIAHANDSHOULDERELBOW' = 'GEORGIAHANDSHOULDERELBOW',\n 'GRAIL' = 'GRAIL',\n 'GUARDANT' = 'GUARDANT',\n 'GUARDIANANGELHOMECARE' = 'GUARDIANANGELHOMECARE',\n 'HARMONYHH' = 'HARMONYHH',\n 'HOMEHEALTHBAYAREAINC' = 'HOMEHEALTHBAYAREAINC',\n 'HEALTHFLEX' = 'HEALTHFLEX',\n 'JOHNMUIRHEALTH' = 'JOHNMUIRHEALTH',\n 'KANEHEALTH' = 'KANEHEALTH',\n 'KRISTARAMONASMD' = 'KRISTARAMONASMD',\n 'INTOUCHHOMECARE' = 'INTOUCHHOMECARE',\n 'LEBAE' = 'LEBAE',\n 'MARSHALLMEDICALCENTER' = 'MARSHALLMEDICALCENTER',\n 'NATERA' = 'NATERA',\n 'PINNACLEHOMEHEALTH' = 'PINNACLEHOMEHEALTH',\n 'RUPAHEALTH' = 'RUPAHEALTH',\n 'SEHAJHOMEHEALTH' = 'SEHAJHOMEHEALTH',\n 'SILVERADOBELMONTMEMORYCARE' = 'SILVERADOBELMONTMEMORYCARE',\n 'STPATRICKHOMEHEALTH' = 'STPATRICKHOMEHEALTH',\n 'AAHCKINDRED' = 'AAHCKINDRED',\n 'HALESPORTS' = 'HALESPORTS',\n 'LONETREEPOSTACUTE' = 'LONETREEPOSTACUTE',\n 'MERIDIANHOMEHEALTH' = 'MERIDIANHOMEHEALTH',\n 'MYDOCTORMEDICALGROUP' = 'MYDOCTORMEDICALGROUP',\n 'NAVERIS' = 'NAVERIS',\n 'NORTHBAYPRIVATEMEDICINE' = 'NORTHBAYPRIVATEMEDICINE',\n 'NURSINGANDREHABATHOME' = 'NURSINGANDREHABATHOME',\n 'OPOHEALTH' = 'OPOHEALTH',\n 'FIREFLYHEALTH' = 'FIREFLYHEALTH',\n 'OSCAR' = 'OSCAR',\n 'OSCARDEMO' = 'OSCARDEMO',\n 'PENINSULADOCTOR' = 'PENINSULADOCTOR',\n 'PERPETUALCAREHOMEHEALTH' = 'PERPETUALCAREHOMEHEALTH',\n 'PRIMELIVINGHOMEHEALTH' = 'PRIMELIVINGHOMEHEALTH',\n 'PULSEDEMO' = 'PULSEDEMO',\n 'READY2NURSE' = 'READY2NURSE',\n 'SILVERLINESTAFF' = 'SILVERLINESTAFF',\n 'SOCOLMD' = 'SOCOLMD',\n 'SONDERHEALTHCARE' = 'SONDERHEALTHCARE',\n 'SUNCRESTHOSPICE' = 'SUNCRESTHOSPICE',\n 'ALLIANCEHOMEHEALTH' = 'ALLIANCEHOMEHEALTH',\n 'TRUEMED' = 'TRUEMED',\n 'UCSF' = 'UCSF',\n 'VNHOMEHEALTHCARE' = 'VNHOMEHEALTHCARE',\n 'YOURCHOICEHOMEHEALTH' = 'YOURCHOICEHOMEHEALTH',\n 'BMCDEMO' = 'BMCDEMO',\n 'BOSTONMEDICALCENTER' = 'BOSTONMEDICALCENTER',\n 'D2C' = 'D2C',\n 'APOLLOHOMEHEALTH' = 'APOLLOHOMEHEALTH',\n 'STANFORDCANCERCENTER' = 'STANFORDCANCERCENTER',\n 'WELLSENSE' = 'WELLSENSE',\n 'BRADFORDRABINMDANDHIROYUHATANOMD' = 'BRADFORDRABINMDANDHIROYUHATANOMD',\n 'THEBODYWRX' = 'THEBODYWRX',\n 'HOMEHEALTHRESOURCEGROUP' = 'HOMEHEALTHRESOURCEGROUP',\n 'STANFORDRESEARCH' = 'STANFORDRESEARCH',\n 'STORYHEALTH' = 'STORYHEALTH',\n 'INTERMOUNTAINCANCERCENTER' = 'INTERMOUNTAINCANCERCENTER',\n 'TRAININGPARTNER' = 'TRAININGPARTNER',\n 'ALIGNMENTHEALTH' = 'ALIGNMENTHEALTH',\n 'MOLINA' = 'MOLINA',\n 'WELLSENSENH' = 'WELLSENSENH',\n 'UCI' = 'UCI',\n 'ELEVANCEHEALTH' = 'ELEVANCEHEALTH',\n 'CENTENE' = 'CENTENE',\n 'UHC' = 'UHC',\n 'HUMANA' = 'HUMANA',\n 'ACCOMPANYHEALTH' = 'ACCOMPANYHEALTH',\n 'UCLA' = 'UCLA',\n 'DEVOTEDHEALTH' = 'DEVOTEDHEALTH',\n 'CENTRALCALIFORNIAALLIANCEFORHEALTH' = 'CENTRALCALIFORNIAALLIANCEFORHEALTH',\n 'UCSD' = 'UCSD',\n 'AETNA' = 'AETNA',\n}\n\nexport default PartnerOrganizationGroup;\n","import { TimeRangeRuleInclusion, TimeRangeRuleInput, TimeRangeRulePeriod } from '../API';\n\n// Returns time range rules that include between `startTime` and `endTime` on weekdays.\nexport default function createWeekdaysTimeRangeRules(\n uuid: string,\n startTime: string,\n endTime: string,\n): TimeRangeRuleInput[] {\n return [\n {\n id: `weekday1${uuid.slice(8)}`,\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: startTime,\n end: endTime,\n recurrenceStart: '2021-01-04', // Monday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: `weekday2${uuid.slice(8)}`,\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: startTime,\n end: endTime,\n recurrenceStart: '2021-01-05', // Tuesday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: `weekday3${uuid.slice(8)}`,\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: startTime,\n end: endTime,\n recurrenceStart: '2021-01-06', // Wednesday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: `weekday4${uuid.slice(8)}`,\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: startTime,\n end: endTime,\n recurrenceStart: '2021-01-07', // Thursday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: `weekday5${uuid.slice(8)}`,\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: startTime,\n end: endTime,\n recurrenceStart: '2021-01-01', // Friday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n ];\n}\n","// If you are trying to change or add a service region, you've come to the right place.\n\nimport { Duration } from 'luxon';\n\nimport { DropOffOrganization, LocationPositionInput, TimeRangeRuleInput } from '../API';\nimport { MILE_IN_METERS } from '../constants';\nimport { TimezoneID } from '../formatters/formatTimezone';\nimport { AgeEligibilityRequirements } from '../types/AgeEligibilityRequirements';\nimport createWeekdaysTimeRangeRules from './createWeekdaysTimeRangeRules';\n\n// note: the screening number is the index of the AgeEligibilityRequirements list\nconst leadScreeningEligibilityByStateInitials: {\n [geographicalState: string]: AgeEligibilityRequirements[];\n} = {\n UT: [\n { lowerLimitMonths: 12, upperLimitMonths: 72 },\n { lowerLimitMonths: 24, upperLimitMonths: 72 },\n ],\n MA: [\n { lowerLimitMonths: 9, upperLimitMonths: 36 },\n { lowerLimitMonths: 24, upperLimitMonths: 36 },\n { lowerLimitMonths: 36, upperLimitMonths: Infinity },\n ],\n};\n\nexport const DEFAULT_ETA_PADDING = Duration.fromISOTime('00:05');\n\n// See https://docs.google.com/spreadsheets/d/1bHHZRPNNYxH5wLoLrgHeHTmdwfGvTXszktT0ohFQJWU/edit#gid=887660138\nconst SERVICE_REGION_LOOKUP: {\n [key: string]: {\n isActive: boolean;\n isActiveOnlyForReferrals?: boolean;\n requiresMatchmakingToClaimInMPX: boolean;\n postalCodes: Set;\n timezone: TimezoneID;\n displayName: string;\n etaPadding: Duration;\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: number;\n maxDistanceBetweenSharedSlotAppointmentsMeters: number;\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: number;\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: number;\n leadScreeningElibilityRules?: AgeEligibilityRequirements[];\n dropOffTimeRangeRuleOverrides?: Partial>; // https://docs.google.com/spreadsheets/d/1cSXG9MjBoBy6diNeQY6L4QyclVII7-0ayb4xpS9BQvM/edit#gid=0\n approximateCenter: LocationPositionInput;\n };\n} = {\n 'ca-bay-area-dublin': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Dublin',\n postalCodes: new Set(['94550', '94551', '94566', '94568', '94582', '94583', '94588']),\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n approximateCenter: { longitude: -121.83446374103532, latitude: 37.70933529965743 },\n },\n 'ca-bay-area-fremont': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Fremont',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '94536',\n '94538',\n '94539',\n '94541',\n '94542',\n '94544',\n '94545',\n '94546',\n '94552',\n '94555',\n '94560',\n '94579',\n '94580',\n '94587',\n ]),\n approximateCenter: { longitude: -122.05361254620576, latitude: 37.61702325707019 },\n },\n 'ca-bay-area-marin': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Marin',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '94901',\n '94903',\n '94904',\n '94920',\n '94925',\n '94930',\n '94939',\n '94941',\n '94945',\n '94947',\n '94949',\n '94957',\n '94960',\n '94964',\n '94965',\n ]),\n approximateCenter: { longitude: -122.54504134082134, latitude: 37.975266421878175 },\n },\n 'ca-bay-area-oakland': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Oakland',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '94501',\n '94502',\n '94577',\n '94578',\n '94601',\n '94602',\n '94603',\n '94605',\n '94606',\n '94607',\n '94608',\n '94609',\n '94610',\n '94611',\n '94612',\n '94613',\n '94618',\n '94619',\n '94621',\n '94702',\n '94703',\n '94704',\n '94705',\n '94706',\n '94707',\n '94708',\n '94709',\n '94710',\n '94720',\n ]),\n approximateCenter: { longitude: -122.23795734457678, latitude: 37.816539379285224 },\n },\n 'ca-bay-area-richmond': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Richmond',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set(['94530', '94801', '94803', '94804', '94805', '94806', '94850']),\n approximateCenter: { longitude: -122.32800056408485, latitude: 37.937758222935564 },\n },\n 'ca-bay-area-modesto': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Modesto',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '95307',\n '95326',\n '95328',\n '95350',\n '95351',\n '95354',\n '95355',\n '95356',\n '95357',\n '95358',\n '95361',\n '95367',\n '95368',\n '95380',\n '95382',\n ]),\n approximateCenter: { longitude: -120.94700410282755, latitude: 37.63663429600152 },\n },\n 'ca-bay-area-san-jose-east': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'San Jose (East)',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '95035',\n '95110',\n '95111',\n '95112',\n '95116',\n '95121',\n '95122',\n '95127',\n '95131',\n '95132',\n '95133',\n '95136',\n '95148',\n ]),\n approximateCenter: { longitude: -121.8430475039113, latitude: 37.350287257662416 },\n },\n 'ca-bay-area-stockton-downtown': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Stockton (Downtown)',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '95202',\n '95203',\n '95204',\n '95205',\n '95206',\n '95207',\n '95209',\n '95210',\n '95211',\n '95212',\n '95215',\n '95231',\n '95240',\n '95330',\n '95336',\n ]),\n approximateCenter: { longitude: -121.28243741794186, latitude: 37.964168540388116 },\n },\n 'ca-bay-area-stockton-outer': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Stockton (Outer)',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '95219',\n '95304',\n '95316',\n '95320',\n '95323',\n '95337',\n '95366',\n '95376',\n '95386',\n ]),\n approximateCenter: { longitude: -121.07437601038772, latitude: 37.73275585513039 },\n },\n 'ca-bay-area-peninsula': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Peninsula',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n dropOffTimeRangeRuleOverrides: {\n [DropOffOrganization.LABCORP]: createWeekdaysTimeRangeRules(\n '7f4ab76b-bc35-4b65-a10d-a56b6c3c16d8',\n '07:00',\n '14:00',\n ),\n },\n postalCodes: new Set([\n '94002',\n '94010',\n '94027',\n '94030',\n '94061',\n '94062',\n '94063',\n '94065',\n '94066',\n '94070',\n '94080',\n '94128',\n '94401',\n '94402',\n '94403',\n '94404',\n ]),\n approximateCenter: { longitude: -122.31084487750232, latitude: 37.54135075003698 },\n },\n 'ca-bay-area-palo-alto': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Palo Alto',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n dropOffTimeRangeRuleOverrides: {\n [DropOffOrganization.LABCORP]: createWeekdaysTimeRangeRules(\n 'd73c3000-f803-4608-99b7-a950400ff3e4',\n '07:00',\n '14:00',\n ),\n },\n postalCodes: new Set([\n '94022',\n '94024',\n '94025',\n '94028',\n '94035',\n '94040',\n '94041',\n '94043',\n '94301',\n '94303',\n '94304',\n '94305',\n '94306',\n ]),\n approximateCenter: { longitude: -122.12717189912767, latitude: 37.404936790421516 },\n },\n 'ca-bay-area-san-francisco': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'San Francisco',\n etaPadding: Duration.fromISOTime('00:10'),\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n dropOffTimeRangeRuleOverrides: {\n [DropOffOrganization.LABCORP]: createWeekdaysTimeRangeRules(\n '5ac9e259-7379-426b-aee1-bb3561dccb67',\n '07:00',\n '14:00',\n ),\n },\n postalCodes: new Set([\n '94005',\n '94014',\n '94015',\n '94102',\n '94103',\n '94104',\n '94105',\n '94107',\n '94108',\n '94109',\n '94110',\n '94111',\n '94112',\n '94114',\n '94115',\n '94116',\n '94117',\n '94118',\n '94121',\n '94122',\n '94123',\n '94124',\n '94127',\n '94129',\n '94130',\n '94131',\n '94132',\n '94133',\n '94134',\n '94143',\n '94158',\n ]),\n approximateCenter: { longitude: -122.4321485903041, latitude: 37.76111940754707 },\n },\n 'ca-bay-area-south': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'South Bay',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '94085',\n '94086',\n '94087',\n '94089',\n '95002',\n '95008',\n '95014',\n '95030',\n '95032',\n '95050',\n '95051',\n '95053',\n '95054',\n '95070',\n '95113',\n '95117',\n '95118',\n '95119',\n '95120',\n '95123',\n '95124',\n '95125',\n '95126',\n '95128',\n '95129',\n '95130',\n '95134',\n '95135',\n '95138',\n '95139',\n ]),\n approximateCenter: { longitude: -121.92549926976255, latitude: 37.30360521434154 },\n },\n 'ca-bay-area-walnut-creek': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Walnut Creek',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '94506',\n '94507',\n '94516',\n '94517',\n '94518',\n '94519',\n '94520',\n '94521',\n '94523',\n '94526',\n '94528',\n '94549',\n '94556',\n '94563',\n '94575',\n '94595',\n '94596',\n '94597',\n '94598',\n ]),\n approximateCenter: { longitude: -122.03994526369922, latitude: 37.89047775648403 },\n },\n 'ca-bay-area-napa': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Napa',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '94533',\n '94534',\n '94558',\n '94559',\n '94562',\n '94585',\n '94599',\n '95687',\n '95688',\n ]),\n approximateCenter: { longitude: -122.14288433871191, latitude: 38.32672941573963 },\n },\n 'ca-bay-area-vallejo': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Vallejo',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '94503',\n '94510',\n '94525',\n '94547',\n '94553',\n '94564',\n '94569',\n '94572',\n '94589',\n '94590',\n '94591',\n '94592',\n ]),\n approximateCenter: { longitude: -122.22191012619744, latitude: 38.07067894318017 },\n },\n 'ca-bay-area-antioch': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Antioch',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '94505',\n '94509',\n '94511',\n '94513',\n '94514',\n '94531',\n '94548',\n '94561',\n '94565',\n ]),\n approximateCenter: { longitude: -121.71209591443449, latitude: 37.95281758251127 },\n },\n 'ca-bay-area-sacramento': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Sacramento',\n etaPadding: Duration.fromISOTime('00:10'),\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 7 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 7 * MILE_IN_METERS,\n postalCodes: new Set([\n '95605',\n '95616',\n '95618',\n '95624',\n '95691',\n '95758',\n '95776',\n '95811',\n '95814',\n '95815',\n '95816',\n '95817',\n '95818',\n '95819',\n '95820',\n '95821',\n '95822',\n '95823',\n '95824',\n '95825',\n '95826',\n '95828',\n '95829',\n '95831',\n '95832',\n '95833',\n '95834',\n '95835',\n '95838',\n '95864',\n ]),\n approximateCenter: { longitude: -121.48247358938804, latitude: 38.55953102421519 },\n },\n 'ca-bay-area-east-sacramento': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Sacramento (East)',\n etaPadding: Duration.fromISOTime('00:10'),\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 7 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 7 * MILE_IN_METERS,\n postalCodes: new Set([\n '95608',\n '95610',\n '95621',\n '95628',\n '95630',\n '95655',\n '95660',\n '95661',\n '95662',\n '95670',\n '95677',\n '95678',\n '95746',\n '95747',\n '95765',\n '95827',\n '95841',\n '95842',\n '95843',\n ]),\n approximateCenter: { longitude: -121.28610808606257, latitude: 38.68998601448164 },\n },\n 'ca-bay-area-placerville': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Placerville',\n etaPadding: Duration.fromISOTime('00:10'),\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 7 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 7 * MILE_IN_METERS,\n postalCodes: new Set([\n '95613',\n '95619',\n '95623',\n '95633',\n '95634',\n '95635',\n '95651',\n '95664',\n '95667',\n '95672',\n '95682',\n '95684',\n '95709',\n '95726',\n '95762',\n ]),\n approximateCenter: { longitude: -120.82520778365466, latitude: 38.74839918050259 },\n },\n 'ca-los-angeles-central': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Central LA',\n etaPadding: Duration.fromISOTime('00:10'),\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '90004',\n '90005',\n '90006',\n '90007',\n '90010',\n '90011',\n '90012',\n '90013',\n '90014',\n '90015',\n '90017',\n '90018',\n '90019',\n '90020',\n '90021',\n '90026',\n '90028',\n '90029',\n '90037',\n '90038',\n '90057',\n '90062',\n '90071',\n '90089',\n ]),\n approximateCenter: { longitude: -118.28536331616222, latitude: 34.04993668911317 },\n },\n 'ca-los-angeles-westside': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Westside',\n etaPadding: Duration.fromISOTime('00:10'),\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '90008',\n '90016',\n '90024',\n '90025',\n '90034',\n '90035',\n '90036',\n '90046',\n '90048',\n '90049',\n '90064',\n '90066',\n '90067',\n '90069',\n '90073',\n '90077',\n '90095',\n '90210',\n '90211',\n '90212',\n '90230',\n '90232',\n '90272',\n '90291',\n '90292',\n '90401',\n '90402',\n '90403',\n '90404',\n '90405',\n ]),\n approximateCenter: { longitude: -118.42741469585556, latitude: 34.04754307048275 },\n },\n 'ca-los-angeles-south-bay': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'South Bay',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '90043',\n '90045',\n '90056',\n '90094',\n '90245',\n '90250',\n '90254',\n '90260',\n '90266',\n '90274',\n '90275',\n '90277',\n '90278',\n '90293',\n '90301',\n '90302',\n '90303',\n '90304',\n '90305',\n '90501',\n '90502',\n '90503',\n '90504',\n '90505',\n '90506',\n '90710',\n '90717',\n '90731',\n '90732',\n '90744',\n '90745',\n ]),\n approximateCenter: { longitude: -118.34903977207833, latitude: 33.87254550217576 },\n },\n 'ca-los-angeles-thousand-oaks': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n isActiveOnlyForReferrals: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Thousand Oaks',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '90263',\n '90265',\n '90290',\n '91301',\n '91302',\n '91320',\n '91360',\n '91361',\n '91362',\n '91377',\n ]),\n approximateCenter: { longitude: -118.78936445450559, latitude: 34.1364637203348 },\n },\n 'ca-los-angeles-pasadena': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Pasadena',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '90041',\n '90042',\n '91001',\n '91006',\n '91007',\n '91008',\n '91010',\n '91011',\n '91016',\n '91024',\n '91030',\n '91101',\n '91103',\n '91104',\n '91105',\n '91106',\n '91107',\n '91108',\n '91123',\n '91125',\n '91203',\n '91204',\n '91205',\n '91206',\n '91210',\n '91731',\n '91732',\n '91733',\n '91775',\n '91780',\n ]),\n approximateCenter: { longitude: -118.12163060140387, latitude: 34.13747626050343 },\n },\n 'ca-los-angeles-compton': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Compton',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '90001',\n '90002',\n '90003',\n '90044',\n '90047',\n '90059',\n '90061',\n '90220',\n '90221',\n '90222',\n '90247',\n '90248',\n '90249',\n '90746',\n '90747',\n ]),\n approximateCenter: { longitude: -118.26454899464137, latitude: 33.91439742415158 },\n },\n 'ca-los-angeles-el-monte-cerritos': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'El Monte Cerritos',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '90601',\n '90602',\n '90603',\n '90604',\n '90605',\n '90606',\n '90638',\n '90639',\n '90670',\n '90701',\n '90703',\n '90713',\n '90715',\n '90716',\n ]),\n approximateCenter: { longitude: -118.04629932169846, latitude: 33.91291044378387 },\n },\n 'ca-los-angeles-griffith-park': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Griffith Park',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['90027', '90039', '90065', '90068', '90079', '90090']),\n approximateCenter: { longitude: -118.2693457986506, latitude: 34.09771495586931 },\n },\n 'ca-los-angeles-orange-county-north': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Orange County (North)',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '90620',\n '90621',\n '90623',\n '90630',\n '90631',\n '90680',\n '90720',\n '90740',\n '92646',\n '92647',\n '92648',\n '92649',\n '92655',\n '92683',\n '92703',\n '92706',\n '92708',\n '92801',\n '92802',\n '92804',\n '92805',\n '92806',\n '92807',\n '92808',\n '92821',\n '92823',\n '92831',\n '92832',\n '92833',\n '92835',\n '92840',\n '92841',\n '92843',\n '92844',\n '92845',\n '92861',\n '92862',\n '92865',\n '92866',\n '92867',\n '92868',\n '92870',\n '92886',\n '92887',\n ]),\n approximateCenter: { longitude: -117.92273104987937, latitude: 33.81372917125466 },\n },\n 'ca-los-angeles-orange-county-south': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Orange County (South)',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '92602',\n '92603',\n '92604',\n '92606',\n '92610',\n '92612',\n '92614',\n '92617',\n '92618',\n '92620',\n '92624',\n '92625',\n '92626',\n '92627',\n '92629',\n '92630',\n '92637',\n '92651',\n '92653',\n '92656',\n '92657',\n '92660',\n '92661',\n '92662',\n '92663',\n '92672',\n '92673',\n '92675',\n '92677',\n '92688',\n '92691',\n '92692',\n '92694',\n '92697',\n '92701',\n '92704',\n '92705',\n '92707',\n '92780',\n '92782',\n '92869',\n ]),\n approximateCenter: { longitude: -117.76951292654682, latitude: 33.628998192239294 },\n },\n 'ca-los-angeles-west-covina': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'West Covina',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '91702',\n '91706',\n '91722',\n '91723',\n '91724',\n '91740',\n '91741',\n '91744',\n '91745',\n '91746',\n '91748',\n '91773',\n '91789',\n '91790',\n '91791',\n '91792',\n ]),\n approximateCenter: { longitude: -117.89370079727689, latitude: 34.078230204769774 },\n },\n 'ca-los-angeles-long-beach': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Long Beach',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '90712',\n '90755',\n '90802',\n '90803',\n '90804',\n '90806',\n '90807',\n '90808',\n '90810',\n '90813',\n '90814',\n '90815',\n '90822',\n '90840',\n ]),\n approximateCenter: { longitude: -118.15655654193925, latitude: 33.795299460742 },\n },\n 'ca-los-angeles-east': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'East LA',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '90022',\n '90023',\n '90031',\n '90032',\n '90033',\n '90040',\n '90063',\n '90240',\n '90640',\n '90660',\n '91754',\n '91755',\n '91770',\n '91776',\n '91801',\n '91803',\n ]),\n approximateCenter: { longitude: -118.1453375183928, latitude: 34.042705488417454 },\n },\n 'ca-los-angeles-burbank': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Burbank',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '91201',\n '91202',\n '91207',\n '91352',\n '91501',\n '91502',\n '91504',\n '91505',\n '91506',\n '91521',\n '91522',\n '91523',\n '91601',\n '91602',\n '91605',\n '91606',\n '91607',\n '91608',\n ]),\n approximateCenter: { longitude: -118.33514053654307, latitude: 34.175458078650664 },\n },\n 'ca-los-angeles-san-fernando': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'San Fernando',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '91311',\n '91324',\n '91325',\n '91326',\n '91330',\n '91331',\n '91340',\n '91342',\n '91343',\n '91344',\n '91345',\n '91402',\n ]),\n approximateCenter: { longitude: -118.4898380128392, latitude: 34.26499222033042 },\n },\n 'ca-los-angeles-sherman-oaks': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Sherman Oaks',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '91303',\n '91306',\n '91307',\n '91316',\n '91335',\n '91356',\n '91364',\n '91367',\n '91371',\n '91401',\n '91403',\n '91405',\n '91406',\n '91411',\n '91423',\n '91436',\n '91604',\n ]),\n approximateCenter: { longitude: -118.52032757491676, latitude: 34.17550064958255 },\n },\n 'ca-los-angeles-riverside': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Riverside',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 4 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 4 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 4 * MILE_IN_METERS,\n dropOffTimeRangeRuleOverrides: {\n [DropOffOrganization.QUEST]: createWeekdaysTimeRangeRules(\n '732f621f-45d1-41b3-bd5d-bbc8d602719f',\n '07:00',\n '18:00',\n ),\n },\n postalCodes: new Set([\n '91752',\n '92407',\n '92501',\n '92503',\n '92504',\n '92505',\n '92506',\n '92507',\n '92508',\n '92509',\n '92518',\n '92521',\n '92551',\n '92553',\n '92555',\n '92557',\n '92860',\n '92878',\n '92879',\n '92880',\n '92881',\n '92882',\n ]),\n approximateCenter: { longitude: -117.40879630815616, latitude: 33.93741426209396 },\n },\n 'ca-los-angeles-sun-city': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Sun City',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n dropOffTimeRangeRuleOverrides: {\n [DropOffOrganization.QUEST]: createWeekdaysTimeRangeRules(\n 'd6b462cf-231b-4078-ace1-44d834d27b12',\n '07:00',\n '18:00',\n ),\n },\n postalCodes: new Set([\n '92543',\n '92545',\n '92548',\n '92567',\n '92570',\n '92571',\n '92582',\n '92583',\n '92584',\n '92585',\n '92586',\n '92587',\n '92596',\n ]),\n approximateCenter: { longitude: -117.11695889724106, latitude: 33.74778138271584 },\n },\n 'ca-los-angeles-pamona': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Pomona',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '91701',\n '91708',\n '91709',\n '91710',\n '91711',\n '91730',\n '91737',\n '91739',\n '91750',\n '91761',\n '91762',\n '91763',\n '91764',\n '91765',\n '91766',\n '91767',\n '91768',\n '91784',\n '91786',\n ]),\n approximateCenter: { longitude: -117.67293827913296, latitude: 34.073108503314984 },\n },\n 'ga-georgia-atlanta': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Atlanta',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '30002',\n '30021',\n '30030',\n '30032',\n '30033',\n '30079',\n '30084',\n '30303',\n '30305',\n '30306',\n '30307',\n '30308',\n '30309',\n '30310',\n '30312',\n '30313',\n '30314',\n '30315',\n '30316',\n '30317',\n '30318',\n '30322',\n '30324',\n '30326',\n '30327',\n '30329',\n '30332',\n '30334',\n '30339',\n '30340',\n '30345',\n '30363',\n ]),\n approximateCenter: { longitude: -84.3481390316455, latitude: 33.79122766688312 },\n },\n 'ga-georgia-sugar-hill': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Sugar Hill',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '30024',\n '30043',\n '30044',\n '30046',\n '30093',\n '30096',\n '30097',\n '30518',\n '30519',\n ]),\n approximateCenter: { longitude: -84.06629867678043, latitude: 34.00841286149254 },\n },\n 'ga-georgia-marietta': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Marietta',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '30008',\n '30060',\n '30062',\n '30064',\n '30066',\n '30067',\n '30068',\n '30069',\n '30080',\n '30082',\n '30102',\n '30144',\n '30152',\n ]),\n approximateCenter: { longitude: -84.54266245656362, latitude: 33.959912918377306 },\n },\n 'ga-georgia-conyers': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Conyers',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '30012',\n '30013',\n '30034',\n '30035',\n '30038',\n '30058',\n '30072',\n '30083',\n '30088',\n '30094',\n ]),\n approximateCenter: { longitude: -84.13054611086912, latitude: 33.71374239156805 },\n },\n 'ga-georgia-fairburn': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Fairburn',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '30213',\n '30214',\n '30268',\n '30272',\n '30274',\n '30290',\n '30291',\n '30296',\n '30311',\n '30320',\n '30331',\n '30337',\n '30344',\n '30349',\n '30354',\n ]),\n approximateCenter: { longitude: -84.50541899252651, latitude: 33.605732943389576 },\n },\n 'ga-georgia-douglasville': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Douglasville',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '30106',\n '30111',\n '30122',\n '30126',\n '30127',\n '30134',\n '30135',\n '30141',\n '30157',\n '30168',\n '30336',\n ]),\n approximateCenter: { longitude: -84.68096710501175, latitude: 33.803278175577255 },\n },\n 'ny-new-york-midtown': {\n isActive: false,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'New York',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['10022']),\n approximateCenter: { longitude: -73.96793, latitude: 40.75857000000001 },\n },\n 'fl-florida-miami': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Miami',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n dropOffTimeRangeRuleOverrides: {\n [DropOffOrganization.QUEST]: createWeekdaysTimeRangeRules(\n '1d7bfb29-96ee-4eff-88cb-ef074fa00d57',\n '06:00',\n '18:00',\n ),\n },\n postalCodes: new Set([\n '33010',\n '33012',\n '33013',\n '33014',\n '33015',\n '33016',\n '33018',\n '33054',\n '33055',\n '33056',\n '33122',\n '33125',\n '33126',\n '33127',\n '33128',\n '33130',\n '33131',\n '33132',\n '33136',\n '33137',\n '33138',\n '33139',\n '33140',\n '33141',\n '33142',\n '33147',\n '33149',\n '33150',\n '33154',\n '33160',\n '33161',\n '33162',\n '33166',\n '33167',\n '33168',\n '33169',\n '33172',\n '33178',\n '33179',\n '33180',\n '33181',\n '33182',\n '33196',\n ]),\n approximateCenter: { longitude: -80.24301106475188, latitude: 25.848129555675953 },\n },\n 'fl-florida-fort-lauderdale': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Fort Lauderdale',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '33004',\n '33009',\n '33019',\n '33020',\n '33021',\n '33023',\n '33024',\n '33025',\n '33026',\n '33027',\n '33028',\n '33029',\n '33060',\n '33062',\n '33063',\n '33064',\n '33065',\n '33066',\n '33067',\n '33068',\n '33069',\n '33071',\n '33073',\n '33076',\n '33301',\n '33304',\n '33305',\n '33306',\n '33308',\n '33309',\n '33311',\n '33312',\n '33313',\n '33314',\n '33315',\n '33316',\n '33317',\n '33319',\n '33321',\n '33322',\n '33323',\n '33324',\n '33325',\n '33326',\n '33328',\n '33330',\n '33331',\n '33332',\n '33334',\n '33351',\n '33388',\n '33394',\n '33441',\n '33442',\n ]),\n approximateCenter: { longitude: -80.217609655664, latitude: 26.138045258192832 },\n },\n 'fl-florida-palm-beach': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Palm Beach',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '33401',\n '33403',\n '33404',\n '33405',\n '33406',\n '33407',\n '33408',\n '33409',\n '33410',\n '33411',\n '33412',\n '33413',\n '33414',\n '33415',\n '33417',\n '33418',\n '33426',\n '33428',\n '33431',\n '33432',\n '33433',\n '33434',\n '33435',\n '33436',\n '33437',\n '33444',\n '33445',\n '33446',\n '33449',\n '33458',\n '33460',\n '33461',\n '33462',\n '33463',\n '33467',\n '33469',\n '33470',\n '33472',\n '33473',\n '33477',\n '33478',\n '33480',\n '33483',\n '33484',\n '33486',\n '33487',\n '33496',\n '33498',\n ]),\n approximateCenter: { longitude: -80.13246899247267, latitude: 26.614825685292388 },\n },\n 'fl-florida-fort-myers': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Fort Myers',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '33901',\n '33903',\n '33904',\n '33905',\n '33907',\n '33908',\n '33909',\n '33912',\n '33913',\n '33914',\n '33916',\n '33917',\n '33919',\n '33920',\n '33922',\n '33928',\n '33931',\n '33936',\n '33956',\n '33957',\n '33965',\n '33966',\n '33967',\n '33971',\n '33972',\n '33973',\n '33974',\n '33976',\n '33990',\n '33991',\n '33993',\n ]),\n approximateCenter: { longitude: -81.85198311433595, latitude: 26.589343270448545 },\n },\n 'fl-florida-naples': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Naples',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '34102',\n '34103',\n '34104',\n '34105',\n '34108',\n '34109',\n '34110',\n '34112',\n '34113',\n '34114',\n '34116',\n '34117',\n '34119',\n '34120',\n '34134',\n '34135',\n '34145',\n ]),\n approximateCenter: { longitude: -81.72558536707471, latitude: 26.18250788457613 },\n },\n 'ma-massachusetts-boston': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Boston (Central)',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 8 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 2 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 2 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 2 * MILE_IN_METERS,\n leadScreeningElibilityRules: leadScreeningEligibilityByStateInitials.MA,\n postalCodes: new Set([\n '01890',\n '02108',\n '02109',\n '02110',\n '02111',\n '02113',\n '02114',\n '02115',\n '02116',\n '02118',\n '02119',\n '02120',\n '02121',\n '02125',\n '02127',\n '02128',\n '02129',\n '02130',\n '02134',\n '02135',\n '02138',\n '02139',\n '02140',\n '02141',\n '02142',\n '02143',\n '02144',\n '02145',\n '02148',\n '02149',\n '02150',\n '02151',\n '02152',\n '02155',\n '02163',\n '02176',\n '02210',\n '02215',\n '02445',\n '02446',\n '02452',\n '02453',\n '02458',\n '02459',\n '02460',\n '02461',\n '02462',\n '02464',\n '02465',\n '02466',\n '02467',\n '02468',\n '02472',\n '02474',\n '02476',\n '02478',\n '02494',\n ]),\n approximateCenter: { longitude: -71.11813690167558, latitude: 42.36278165771916 },\n },\n 'ma-massachusetts-south-boston': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Boston (South)',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 2 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 2 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n leadScreeningElibilityRules: leadScreeningEligibilityByStateInitials.MA,\n postalCodes: new Set([\n '02021',\n '02026',\n '02062',\n '02072',\n '02090',\n '02122',\n '02124',\n '02126',\n '02131',\n '02132',\n '02136',\n '02169',\n '02170',\n '02171',\n '02184',\n '02186',\n '02188',\n '02189',\n '02190',\n '02191',\n '02301',\n '02302',\n '02303',\n '02322',\n '02343',\n '02351',\n '02368',\n '02382',\n '02492',\n ]),\n approximateCenter: { longitude: -71.05773056726201, latitude: 42.202433395341544 },\n },\n 'ma-massachusetts-fall-river': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Fall River',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n leadScreeningElibilityRules: leadScreeningEligibilityByStateInitials.MA,\n postalCodes: new Set([\n '02032',\n '02035',\n '02048',\n '02067',\n '02071',\n '02081',\n '02324',\n '02356',\n '02375',\n '02379',\n '02702',\n '02703',\n '02715',\n '02718',\n '02719',\n '02720',\n '02721',\n '02723',\n '02724',\n '02725',\n '02726',\n '02740',\n '02743',\n '02744',\n '02745',\n '02746',\n '02747',\n '02748',\n '02760',\n '02762',\n '02763',\n '02764',\n '02766',\n '02767',\n '02769',\n '02771',\n '02777',\n '02779',\n '02780',\n '02790',\n ]),\n approximateCenter: { longitude: -71.12315830317098, latitude: 41.84921336516423 },\n },\n 'ma-massachusetts-southeast-boston': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Boston (Southeast)',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n leadScreeningElibilityRules: leadScreeningEligibilityByStateInitials.MA,\n postalCodes: new Set(['02066', '02338', '02532', '02576', '02649', '02668', '02739']),\n approximateCenter: { longitude: -70.66321952707028, latitude: 41.81787946360325 },\n },\n 'ma-massachusetts-springfield': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Springfield',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n leadScreeningElibilityRules: leadScreeningEligibilityByStateInitials.MA,\n postalCodes: new Set([\n '01001',\n '01013',\n '01020',\n '01022',\n '01028',\n '01030',\n '01033',\n '01036',\n '01040',\n '01056',\n '01057',\n '01069',\n '01071',\n '01073',\n '01075',\n '01077',\n '01085',\n '01089',\n '01095',\n '01103',\n '01104',\n '01105',\n '01106',\n '01107',\n '01108',\n '01109',\n '01118',\n '01119',\n '01128',\n '01129',\n '01151',\n ]),\n approximateCenter: { longitude: -72.5648003577666, latitude: 42.13235803355799 },\n },\n 'ut-utah-st-george': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Denver',\n displayName: 'St. George',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n leadScreeningElibilityRules: leadScreeningEligibilityByStateInitials.UT,\n postalCodes: new Set([\n '84722',\n '84725',\n '84733',\n '84737',\n '84738',\n '84745',\n '84746',\n '84763',\n '84765',\n '84767',\n '84770',\n '84774',\n '84779',\n '84780',\n '84781',\n '84782',\n '84783',\n '84784',\n '84790',\n ]),\n approximateCenter: { longitude: -113.45402796371442, latitude: 37.2453982257753 },\n },\n 'ut-utah-cedar-city': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Denver',\n displayName: 'Cedar City',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n leadScreeningElibilityRules: leadScreeningEligibilityByStateInitials.UT,\n postalCodes: new Set(['84720', '84721', '84757']),\n approximateCenter: { longitude: -113.23184454999952, latitude: 37.60890598552821 },\n },\n 'ut-utah-salt-lake-city': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Denver',\n displayName: 'Salt Lake City',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n leadScreeningElibilityRules: leadScreeningEligibilityByStateInitials.UT,\n postalCodes: new Set([\n '84003',\n '84005',\n '84009',\n '84010',\n '84014',\n '84020',\n '84025',\n '84043',\n '84044',\n '84045',\n '84047',\n '84054',\n '84065',\n '84070',\n '84081',\n '84084',\n '84087',\n '84088',\n '84092',\n '84093',\n '84094',\n '84095',\n '84096',\n '84101',\n '84102',\n '84103',\n '84104',\n '84105',\n '84106',\n '84107',\n '84108',\n '84109',\n '84111',\n '84112',\n '84113',\n '84115',\n '84116',\n '84117',\n '84118',\n '84119',\n '84120',\n '84121',\n '84122',\n '84123',\n '84124',\n '84128',\n '84129',\n '84132',\n '84138',\n '84143',\n '84148',\n '84150',\n ]),\n approximateCenter: { longitude: -111.8979274910917, latitude: 40.67832948330096 },\n },\n 'ut-utah-provo': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Denver',\n displayName: 'Provo',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n\n leadScreeningElibilityRules: leadScreeningEligibilityByStateInitials.UT,\n postalCodes: new Set([\n '84004',\n '84042',\n '84057',\n '84058',\n '84059',\n '84062',\n '84097',\n '84601',\n '84602',\n '84604',\n '84606',\n '84633',\n '84651',\n '84653',\n '84655',\n '84660',\n '84663',\n '84664',\n ]),\n approximateCenter: { longitude: -111.67085345225793, latitude: 40.205735194264754 },\n },\n 'ut-utah-tooele': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Denver',\n displayName: 'Tooele',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n leadScreeningElibilityRules: leadScreeningEligibilityByStateInitials.UT,\n postalCodes: new Set(['84006', '84029', '84074']),\n approximateCenter: { longitude: -112.46026115503966, latitude: 40.58450963690276 },\n },\n 'ut-utah-ogden': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Denver',\n displayName: 'Ogden',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n leadScreeningElibilityRules: leadScreeningEligibilityByStateInitials.UT,\n postalCodes: new Set([\n '84015',\n '84037',\n '84040',\n '84041',\n '84056',\n '84067',\n '84075',\n '84201',\n '84315',\n '84401',\n '84403',\n '84404',\n '84405',\n '84408',\n '84414',\n ]),\n approximateCenter: { longitude: -112.00262814044206, latitude: 41.16302112270982 },\n },\n 'ut-utah-logan': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Denver',\n displayName: 'Logan',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n leadScreeningElibilityRules: leadScreeningEligibilityByStateInitials.UT,\n postalCodes: new Set([\n '84302',\n '84304',\n '84306',\n '84309',\n '84311',\n '84312',\n '84314',\n '84318',\n '84319',\n '84321',\n '84322',\n '84325',\n '84326',\n '84332',\n '84334',\n '84335',\n '84337',\n '84339',\n '84341',\n ]),\n approximateCenter: { longitude: -111.95945347587269, latitude: 41.731336282027605 },\n },\n 'ca-los-angeles-san-diego-south': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'San Diego (South)',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n dropOffTimeRangeRuleOverrides: {\n [DropOffOrganization.QUEST]: createWeekdaysTimeRangeRules(\n 'ecde6328-26f7-47ec-b919-663d77fb0cdf',\n '07:00',\n '18:00',\n ),\n },\n postalCodes: new Set([\n '91902',\n '91910',\n '91911',\n '91913',\n '91914',\n '91915',\n '91932',\n '91945',\n '91950',\n '92101',\n '92102',\n '92103',\n '92104',\n '92105',\n '92106',\n '92107',\n '92110',\n '92113',\n '92114',\n '92115',\n '92116',\n '92118',\n '92134',\n '92135',\n '92136',\n '92139',\n '92140',\n '92152',\n '92154',\n '92173',\n '92182',\n ]),\n approximateCenter: { longitude: -117.10436887722547, latitude: 32.69132912481014 },\n },\n 'ca-los-angeles-oceanside': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Oceanside',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '92007',\n '92008',\n '92009',\n '92010',\n '92011',\n '92024',\n '92025',\n '92026',\n '92027',\n '92029',\n '92054',\n '92056',\n '92057',\n '92058',\n '92067',\n '92069',\n '92075',\n '92078',\n '92081',\n '92083',\n '92084',\n '92091',\n '92096',\n '92127',\n ]),\n approximateCenter: { longitude: -117.21485029020947, latitude: 33.12948334994746 },\n },\n 'ca-los-angeles-calexico': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Calexico',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set(['92227', '92231', '92243', '92249', '92250', '92251', '92281']),\n approximateCenter: { longitude: -115.4909256271646, latitude: 32.8388342158977 },\n },\n 'mi-michigan-harrison': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Harrison',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 25 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '48612',\n '48617',\n '48618',\n '48622',\n '48624',\n '48625',\n '48628',\n '48632',\n '48640',\n '48642',\n '48657',\n '48858',\n '48878',\n '48883',\n ]),\n approximateCenter: { longitude: -84.60639524286273, latitude: 43.77891521631247 },\n },\n 'mi-michigan-pontiac': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Pontiac',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '48009',\n '48083',\n '48084',\n '48085',\n '48098',\n '48301',\n '48302',\n '48304',\n '48307',\n '48309',\n '48310',\n '48314',\n '48320',\n '48322',\n '48323',\n '48324',\n '48326',\n '48327',\n '48328',\n '48329',\n '48340',\n '48341',\n '48342',\n '48359',\n ]),\n approximateCenter: { longitude: -83.25374075940023, latitude: 42.61318383266602 },\n },\n 'mi-michigan-roseville': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Roseville',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n dropOffTimeRangeRuleOverrides: {\n [DropOffOrganization.QUEST]: createWeekdaysTimeRangeRules(\n '5b945558-e503-4d94-8236-323f4c4da60f',\n '07:00',\n '18:00',\n ),\n },\n postalCodes: new Set([\n '48015',\n '48021',\n '48026',\n '48035',\n '48036',\n '48038',\n '48043',\n '48045',\n '48066',\n '48080',\n '48081',\n '48082',\n '48088',\n '48089',\n '48093',\n '48205',\n '48224',\n '48225',\n '48230',\n '48236',\n '48312',\n '48313',\n ]),\n approximateCenter: { longitude: -82.93928045964643, latitude: 42.50761283245141 },\n },\n 'mi-michigan-oak-park': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Oak Park',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '48017',\n '48025',\n '48030',\n '48033',\n '48034',\n '48067',\n '48069',\n '48070',\n '48071',\n '48072',\n '48073',\n '48075',\n '48076',\n '48091',\n '48092',\n '48203',\n '48219',\n '48220',\n '48221',\n '48235',\n '48237',\n '48240',\n '48334',\n '48336',\n ]),\n approximateCenter: { longitude: -83.19152004488842, latitude: 42.475021344917565 },\n },\n 'mi-michigan-detroit': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Detroit',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n dropOffTimeRangeRuleOverrides: {\n [DropOffOrganization.QUEST]: createWeekdaysTimeRangeRules(\n '275df2d2-36e9-4e56-b28f-4f2da721f73b',\n '07:00',\n '18:00',\n ),\n },\n postalCodes: new Set([\n '48120',\n '48126',\n '48201',\n '48202',\n '48204',\n '48206',\n '48207',\n '48208',\n '48209',\n '48210',\n '48211',\n '48212',\n '48213',\n '48214',\n '48215',\n '48216',\n '48223',\n '48226',\n '48227',\n '48228',\n '48234',\n '48238',\n ]),\n approximateCenter: { longitude: -83.09529619757282, latitude: 42.36308723255148 },\n },\n 'mi-michigan-livonia': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Livonia',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '48135',\n '48150',\n '48152',\n '48154',\n '48167',\n '48168',\n '48170',\n '48185',\n '48186',\n '48187',\n '48188',\n '48198',\n '48239',\n ]),\n approximateCenter: { longitude: -83.43555426394707, latitude: 42.355044429668474 },\n },\n 'mi-michigan-taylor': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Taylor',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n dropOffTimeRangeRuleOverrides: {\n [DropOffOrganization.QUEST]: createWeekdaysTimeRangeRules(\n 'b19c680d-d43c-441e-a96a-d672e275ad05',\n '07:00',\n '18:00',\n ),\n },\n postalCodes: new Set([\n '48101',\n '48122',\n '48124',\n '48125',\n '48127',\n '48128',\n '48141',\n '48146',\n '48174',\n '48180',\n '48184',\n '48192',\n '48193',\n '48195',\n '48217',\n '48218',\n '48229',\n '48242',\n ]),\n approximateCenter: { longitude: -83.24231581853404, latitude: 42.25802431941293 },\n },\n 'mi-michigan-flint': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Flint',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n dropOffTimeRangeRuleOverrides: {\n [DropOffOrganization.QUEST]: createWeekdaysTimeRangeRules(\n 'fa6f774e-fb2e-4b85-9322-c704218833c9',\n '07:00',\n '18:00',\n ),\n },\n postalCodes: new Set([\n '48420',\n '48423',\n '48433',\n '48437',\n '48439',\n '48458',\n '48473',\n '48502',\n '48503',\n '48504',\n '48505',\n '48506',\n '48507',\n '48509',\n '48519',\n '48529',\n '48532',\n ]),\n approximateCenter: { longitude: -83.68610695569905, latitude: 43.03292532443438 },\n },\n 'mi-michigan-saginaw': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Saginaw',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n dropOffTimeRangeRuleOverrides: {\n [DropOffOrganization.QUEST]: createWeekdaysTimeRangeRules(\n '273a22cc-aca1-4fd0-b59c-d0c3fb64897b',\n '07:00',\n '18:00',\n ),\n },\n postalCodes: new Set([\n '48415',\n '48417',\n '48601',\n '48602',\n '48603',\n '48604',\n '48607',\n '48609',\n '48638',\n '48706',\n '48708',\n '48710',\n '48722',\n '48724',\n '48732',\n '48734',\n '48747',\n '48757',\n ]),\n approximateCenter: { longitude: -83.89934821928834, latitude: 43.44605976004907 },\n },\n 'mi-michigan-monroe': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Monroe',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '48111',\n '48117',\n '48131',\n '48134',\n '48138',\n '48159',\n '48160',\n '48161',\n '48162',\n '48164',\n '48166',\n '48173',\n '48179',\n '48183',\n '48191',\n ]),\n approximateCenter: { longitude: -83.40645658332323, latitude: 42.059766047751864 },\n },\n 'mi-michigan-milton': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Milton',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '48001',\n '48005',\n '48023',\n '48039',\n '48042',\n '48044',\n '48047',\n '48048',\n '48050',\n '48051',\n '48062',\n '48064',\n '48065',\n '48094',\n '48095',\n '48096',\n '48315',\n '48316',\n '48317',\n ]),\n approximateCenter: { longitude: -82.86127216710942, latitude: 42.72960131169041 },\n },\n 'mi-michigan-wixom': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Wixom',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '48114',\n '48116',\n '48165',\n '48178',\n '48331',\n '48335',\n '48353',\n '48356',\n '48357',\n '48374',\n '48375',\n '48377',\n '48380',\n '48381',\n '48382',\n '48383',\n '48386',\n '48390',\n '48393',\n ]),\n approximateCenter: { longitude: -83.5701421506922, latitude: 42.55252050898632 },\n },\n 'mi-michigan-ann-arbor': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Ann Arbor',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '48103',\n '48104',\n '48105',\n '48108',\n '48109',\n '48118',\n '48130',\n '48139',\n '48158',\n '48176',\n '48189',\n '48197',\n ]),\n approximateCenter: { longitude: -83.81109487609733, latitude: 42.282533430430924 },\n },\n 'mi-michigan-lansing': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Lansing',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '48808',\n '48813',\n '48820',\n '48821',\n '48822',\n '48823',\n '48824',\n '48825',\n '48827',\n '48837',\n '48840',\n '48842',\n '48848',\n '48854',\n '48864',\n '48872',\n '48876',\n '48895',\n '48906',\n '48910',\n '48911',\n '48912',\n '48915',\n '48917',\n '48933',\n ]),\n approximateCenter: { longitude: -84.53992009192322, latitude: 42.720299781801586 },\n },\n 'mi-michigan-holly': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Holly',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '48306',\n '48346',\n '48348',\n '48350',\n '48360',\n '48362',\n '48363',\n '48367',\n '48370',\n '48371',\n '48430',\n '48438',\n '48442',\n '48451',\n '48462',\n ]),\n approximateCenter: { longitude: -83.39152331793507, latitude: 42.79344662349737 },\n },\n 'mi-michigan-grand-rapids': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Grand Rapids',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '49301',\n '49306',\n '49315',\n '49316',\n '49321',\n '49418',\n '49428',\n '49435',\n '49503',\n '49504',\n '49505',\n '49506',\n '49507',\n '49508',\n '49509',\n '49512',\n '49519',\n '49525',\n '49534',\n '49544',\n '49546',\n '49548',\n ]),\n approximateCenter: { longitude: -85.66598110146117, latitude: 42.942379851870385 },\n },\n 'mi-michigan-muskegon': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Muskegon',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '49415',\n '49441',\n '49442',\n '49444',\n '49445',\n '49448',\n '49451',\n '49456',\n '49457',\n ]),\n approximateCenter: { longitude: -86.15790329678482, latitude: 43.19920783666132 },\n },\n 'mi-michigan-holland': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Holland',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '49323',\n '49401',\n '49404',\n '49417',\n '49419',\n '49423',\n '49424',\n '49426',\n '49460',\n '49464',\n ]),\n approximateCenter: { longitude: -86.00715836688256, latitude: 42.86687791866434 },\n },\n 'mi-michigan-cedar-springs': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Cedar Springs',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '48809',\n '48834',\n '48838',\n '48846',\n '48865',\n '48881',\n '48884',\n '48885',\n '49319',\n '49326',\n '49330',\n '49331',\n '49339',\n '49341',\n '49343',\n '49345',\n '49347',\n ]),\n approximateCenter: { longitude: -85.3298131097755, latitude: 43.16172879384077 },\n },\n 'mi-michigan-kalamazoo': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Kalamazoo',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '49001',\n '49002',\n '49004',\n '49006',\n '49007',\n '49008',\n '49009',\n '49010',\n '49012',\n '49014',\n '49015',\n '49017',\n '49024',\n '49034',\n '49037',\n '49046',\n '49048',\n '49053',\n '49060',\n '49070',\n '49078',\n '49080',\n '49083',\n '49088',\n '49328',\n '49344',\n '49348',\n ]),\n approximateCenter: { longitude: -85.50526340231147, latitude: 42.37249967412905 },\n },\n 'nh-new-hampshire-nashua': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Nashua',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '03031',\n '03033',\n '03038',\n '03049',\n '03051',\n '03052',\n '03053',\n '03054',\n '03055',\n '03060',\n '03062',\n '03063',\n '03064',\n '03076',\n '03079',\n '03087',\n '03811',\n '03819',\n '03826',\n '03841',\n '03848',\n '03858',\n '03865',\n '03873',\n ]),\n approximateCenter: { longitude: -71.35073253604317, latitude: 42.82854743609666 },\n },\n 'nh-new-hampshire-manchester': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Manchester',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '03032',\n '03034',\n '03036',\n '03037',\n '03042',\n '03044',\n '03045',\n '03077',\n '03101',\n '03102',\n '03103',\n '03104',\n '03106',\n '03109',\n '03110',\n '03261',\n '03290',\n '03291',\n ]),\n approximateCenter: { longitude: -71.32838958963661, latitude: 43.04150724352742 },\n },\n 'nh-new-hampshire-concord': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Concord',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '03046',\n '03220',\n '03224',\n '03229',\n '03234',\n '03235',\n '03242',\n '03244',\n '03246',\n '03249',\n '03253',\n '03258',\n '03269',\n '03275',\n '03276',\n '03281',\n '03301',\n '03303',\n '03304',\n '03307',\n ]),\n approximateCenter: { longitude: -71.56922822634615, latitude: 43.31517973239664 },\n },\n 'nh-new-hampshire-dover': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Dover',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '03801',\n '03820',\n '03823',\n '03824',\n '03825',\n '03827',\n '03833',\n '03835',\n '03839',\n '03840',\n '03842',\n '03844',\n '03851',\n '03856',\n '03857',\n '03861',\n '03862',\n '03867',\n '03868',\n '03869',\n '03870',\n '03874',\n '03878',\n '03884',\n '03885',\n ]),\n approximateCenter: { longitude: -70.93243175075378, latitude: 43.125189020042434 },\n },\n 'oh-ohio-akron': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Akron',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '44201',\n '44203',\n '44212',\n '44215',\n '44217',\n '44221',\n '44223',\n '44224',\n '44230',\n '44233',\n '44236',\n '44240',\n '44241',\n '44243',\n '44250',\n '44251',\n '44254',\n '44256',\n '44260',\n '44262',\n '44264',\n '44266',\n '44270',\n '44272',\n '44273',\n '44276',\n '44278',\n '44280',\n '44281',\n '44286',\n '44301',\n '44302',\n '44303',\n '44304',\n '44305',\n '44306',\n '44307',\n '44308',\n '44310',\n '44311',\n '44312',\n '44313',\n '44314',\n '44319',\n '44320',\n '44321',\n '44333',\n '44632',\n '44685',\n ]),\n approximateCenter: { longitude: -81.56709471576627, latitude: 41.090411698745136 },\n },\n 'oh-ohio-ashland': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Ashland',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '44028',\n '44044',\n '44050',\n '44074',\n '44090',\n '44214',\n '44235',\n '44253',\n '44275',\n '44287',\n '44805',\n '44807',\n '44818',\n '44825',\n '44837',\n '44844',\n '44851',\n '44854',\n '44855',\n '44859',\n '44865',\n '44866',\n '44867',\n '44875',\n '44878',\n '44880',\n '44882',\n '44887',\n '44890',\n ]),\n approximateCenter: { longitude: -82.47780999832005, latitude: 41.04979658416007 },\n },\n 'oh-ohio-ashtabula': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Ashtabula',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '44003',\n '44004',\n '44010',\n '44023',\n '44024',\n '44026',\n '44030',\n '44032',\n '44041',\n '44047',\n '44048',\n '44057',\n '44060',\n '44064',\n '44072',\n '44077',\n '44081',\n '44082',\n '44084',\n '44085',\n '44086',\n '44093',\n '44094',\n '44095',\n '44202',\n ]),\n approximateCenter: { longitude: -80.99534306693262, latitude: 41.65840900053346 },\n },\n 'oh-ohio-canton': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Canton',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '44216',\n '44449',\n '44601',\n '44606',\n '44608',\n '44612',\n '44613',\n '44614',\n '44618',\n '44620',\n '44621',\n '44622',\n '44624',\n '44626',\n '44627',\n '44634',\n '44640',\n '44641',\n '44643',\n '44644',\n '44645',\n '44646',\n '44647',\n '44652',\n '44653',\n '44656',\n '44657',\n '44659',\n '44662',\n '44663',\n '44666',\n '44667',\n '44669',\n '44670',\n '44671',\n '44672',\n '44675',\n '44677',\n '44678',\n '44680',\n '44683',\n '44688',\n '44689',\n '44691',\n '44702',\n '44703',\n '44704',\n '44705',\n '44706',\n '44707',\n '44708',\n '44709',\n '44710',\n '44714',\n '44718',\n '44720',\n '44721',\n '44730',\n ]),\n approximateCenter: { longitude: -81.42315933584293, latitude: 40.74361956105062 },\n },\n 'oh-ohio-chillicothe': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Chillicothe',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43101',\n '43102',\n '43103',\n '43107',\n '43113',\n '43115',\n '43116',\n '43126',\n '43130',\n '43135',\n '43138',\n '43149',\n '43152',\n '43154',\n '43155',\n '43156',\n '43164',\n '45601',\n '45628',\n '45644',\n '45647',\n '45673',\n ]),\n approximateCenter: { longitude: -82.81586907464401, latitude: 39.53832132995794 },\n },\n 'oh-ohio-cincinnati': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Cincinnati',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 11.5 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3.45 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3.45 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3.45 * MILE_IN_METERS,\n postalCodes: new Set([\n '45001',\n '45002',\n '45014',\n '45030',\n '45033',\n '45040',\n '45041',\n '45052',\n '45069',\n '45102',\n '45103',\n '45111',\n '45140',\n '45150',\n '45160',\n '45174',\n '45202',\n '45203',\n '45204',\n '45205',\n '45206',\n '45207',\n '45208',\n '45209',\n '45211',\n '45212',\n '45213',\n '45214',\n '45215',\n '45216',\n '45217',\n '45218',\n '45219',\n '45220',\n '45221',\n '45223',\n '45224',\n '45225',\n '45226',\n '45227',\n '45229',\n '45230',\n '45231',\n '45232',\n '45233',\n '45236',\n '45237',\n '45238',\n '45239',\n '45240',\n '45241',\n '45242',\n '45243',\n '45244',\n '45245',\n '45246',\n '45247',\n '45248',\n '45249',\n '45251',\n '45252',\n '45255',\n ]),\n approximateCenter: { longitude: -84.48104635634674, latitude: 39.177829734828755 },\n },\n 'oh-ohio-cleveland': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Cleveland',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 11.5 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3.45 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3.45 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3.45 * MILE_IN_METERS,\n postalCodes: new Set([\n '44001',\n '44011',\n '44012',\n '44017',\n '44022',\n '44035',\n '44039',\n '44040',\n '44052',\n '44053',\n '44054',\n '44055',\n '44056',\n '44067',\n '44070',\n '44087',\n '44092',\n '44102',\n '44103',\n '44104',\n '44105',\n '44106',\n '44107',\n '44108',\n '44109',\n '44110',\n '44111',\n '44112',\n '44113',\n '44114',\n '44115',\n '44116',\n '44117',\n '44118',\n '44119',\n '44120',\n '44121',\n '44122',\n '44123',\n '44124',\n '44125',\n '44126',\n '44127',\n '44128',\n '44129',\n '44130',\n '44131',\n '44132',\n '44133',\n '44134',\n '44135',\n '44136',\n '44137',\n '44138',\n '44139',\n '44140',\n '44141',\n '44142',\n '44143',\n '44144',\n '44145',\n '44146',\n '44147',\n '44149',\n ]),\n approximateCenter: { longitude: -81.71832777874744, latitude: 41.44689191843527 },\n },\n 'oh-ohio-columbus': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Columbus',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 11.5 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3.45 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3.45 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3.45 * MILE_IN_METERS,\n postalCodes: new Set([\n '43002',\n '43004',\n '43016',\n '43017',\n '43026',\n '43035',\n '43054',\n '43065',\n '43068',\n '43081',\n '43082',\n '43085',\n '43110',\n '43112',\n '43119',\n '43123',\n '43125',\n '43136',\n '43137',\n '43146',\n '43201',\n '43202',\n '43203',\n '43204',\n '43205',\n '43206',\n '43207',\n '43209',\n '43210',\n '43211',\n '43212',\n '43213',\n '43214',\n '43215',\n '43217',\n '43219',\n '43220',\n '43221',\n '43222',\n '43223',\n '43224',\n '43227',\n '43228',\n '43229',\n '43230',\n '43231',\n '43232',\n '43235',\n '43240',\n ]),\n approximateCenter: { longitude: -82.98257820202748, latitude: 39.98952850912246 },\n },\n 'oh-ohio-dayton': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Dayton',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '45301',\n '45305',\n '45309',\n '45315',\n '45322',\n '45324',\n '45325',\n '45327',\n '45342',\n '45345',\n '45354',\n '45370',\n '45378',\n '45384',\n '45385',\n '45402',\n '45403',\n '45404',\n '45405',\n '45406',\n '45409',\n '45410',\n '45414',\n '45415',\n '45416',\n '45417',\n '45419',\n '45420',\n '45424',\n '45426',\n '45428',\n '45429',\n '45430',\n '45431',\n '45432',\n '45433',\n '45434',\n '45435',\n '45439',\n '45440',\n '45449',\n '45458',\n '45459',\n '45469',\n ]),\n approximateCenter: { longitude: -84.18957483137939, latitude: 39.748478487064325 },\n },\n 'oh-ohio-defiance': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Defiance',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43501',\n '43502',\n '43505',\n '43506',\n '43510',\n '43512',\n '43515',\n '43517',\n '43518',\n '43521',\n '43524',\n '43526',\n '43527',\n '43531',\n '43532',\n '43533',\n '43534',\n '43535',\n '43536',\n '43540',\n '43543',\n '43545',\n '43548',\n '43549',\n '43553',\n '43554',\n '43556',\n '43557',\n '43567',\n '43570',\n '45813',\n '45821',\n '45831',\n '45851',\n '45855',\n '45861',\n '45873',\n '45879',\n '45880',\n ]),\n approximateCenter: { longitude: -84.38026314798958, latitude: 41.39045708932918 },\n },\n 'oh-ohio-findlay': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Findlay',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43316',\n '43402',\n '43403',\n '43406',\n '43407',\n '43413',\n '43435',\n '43437',\n '43443',\n '43450',\n '43451',\n '43457',\n '43462',\n '43466',\n '43467',\n '43511',\n '43516',\n '43522',\n '43525',\n '43529',\n '43541',\n '43565',\n '43569',\n '44802',\n '44804',\n '44809',\n '44815',\n '44817',\n '44830',\n '44841',\n '44853',\n '44883',\n '45814',\n '45816',\n '45840',\n '45856',\n '45858',\n '45867',\n '45868',\n '45872',\n '45875',\n '45881',\n '45889',\n '45890',\n ]),\n approximateCenter: { longitude: -83.5954991451397, latitude: 41.19818289055859 },\n },\n 'oh-ohio-greenville': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Greenville',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '45003',\n '45303',\n '45304',\n '45308',\n '45310',\n '45311',\n '45320',\n '45321',\n '45328',\n '45330',\n '45331',\n '45332',\n '45337',\n '45338',\n '45339',\n '45346',\n '45347',\n '45348',\n '45350',\n '45351',\n '45352',\n '45358',\n '45359',\n '45362',\n '45363',\n '45380',\n '45381',\n '45382',\n '45383',\n '45388',\n '45390',\n '45822',\n '45826',\n '45828',\n '45845',\n '45846',\n '45860',\n '45862',\n '45865',\n '45866',\n '45869',\n '45874',\n '45882',\n '45883',\n '45898',\n '45899',\n ]),\n approximateCenter: { longitude: -84.57909279962539, latitude: 40.198044556813855 },\n },\n 'oh-ohio-hillsboro': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Hillsboro',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '45101',\n '45106',\n '45115',\n '45118',\n '45119',\n '45120',\n '45121',\n '45130',\n '45133',\n '45142',\n '45144',\n '45153',\n '45154',\n '45157',\n '45167',\n '45168',\n '45171',\n '45176',\n '45679',\n '45693',\n '45697',\n ]),\n approximateCenter: { longitude: -83.85244053320925, latitude: 38.92867885051771 },\n },\n 'oh-ohio-lima': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Lima',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43067',\n '43310',\n '43311',\n '43318',\n '43319',\n '43324',\n '43326',\n '43331',\n '43332',\n '43333',\n '43340',\n '43341',\n '43343',\n '43344',\n '43345',\n '43347',\n '43348',\n '43357',\n '43358',\n '43359',\n '43360',\n '45306',\n '45334',\n '45801',\n '45804',\n '45805',\n '45806',\n '45807',\n '45808',\n '45810',\n '45812',\n '45817',\n '45819',\n '45820',\n '45827',\n '45830',\n '45832',\n '45833',\n '45835',\n '45836',\n '45841',\n '45843',\n '45844',\n '45849',\n '45850',\n '45853',\n '45854',\n '45859',\n '45863',\n '45870',\n '45871',\n '45876',\n '45877',\n '45885',\n '45886',\n '45887',\n '45891',\n '45893',\n '45894',\n '45895',\n '45896',\n '45897',\n ]),\n approximateCenter: { longitude: -83.9577866800866, latitude: 40.66967159450228 },\n },\n 'oh-ohio-mansfield': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Mansfield',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43003',\n '43011',\n '43013',\n '43015',\n '43019',\n '43021',\n '43032',\n '43048',\n '43050',\n '43061',\n '43066',\n '43074',\n '43302',\n '43314',\n '43315',\n '43317',\n '43320',\n '43321',\n '43322',\n '43323',\n '43330',\n '43334',\n '43337',\n '43338',\n '43342',\n '43350',\n '43351',\n '43356',\n '44813',\n '44820',\n '44827',\n '44833',\n '44849',\n '44860',\n '44902',\n '44903',\n '44904',\n '44905',\n '44906',\n '44907',\n ]),\n approximateCenter: { longitude: -82.87470513199492, latitude: 40.55438214114928 },\n },\n 'oh-ohio-middletown': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Middletown',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '45005',\n '45011',\n '45013',\n '45015',\n '45034',\n '45036',\n '45039',\n '45042',\n '45044',\n '45050',\n '45053',\n '45056',\n '45064',\n '45065',\n '45066',\n '45067',\n '45068',\n '45070',\n ]),\n approximateCenter: { longitude: -84.41910258848907, latitude: 39.46121746552428 },\n },\n 'oh-ohio-newark': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Newark',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43001',\n '43008',\n '43018',\n '43023',\n '43025',\n '43030',\n '43031',\n '43033',\n '43046',\n '43055',\n '43056',\n '43062',\n '43071',\n '43076',\n '43080',\n '43105',\n '43147',\n '43148',\n '43150',\n '43157',\n '43701',\n '43721',\n '43735',\n '43739',\n '43740',\n '43746',\n '43760',\n '43777',\n '43783',\n '43791',\n '43821',\n '43822',\n '43830',\n '43842',\n ]),\n approximateCenter: { longitude: -82.36615509349181, latitude: 39.97592672257279 },\n },\n 'oh-ohio-piqua': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Piqua',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '45302',\n '45312',\n '45317',\n '45318',\n '45326',\n '45333',\n '45336',\n '45340',\n '45353',\n '45356',\n '45360',\n '45365',\n '45371',\n '45373',\n '45377',\n '45389',\n ]),\n approximateCenter: { longitude: -84.15840719270318, latitude: 40.18544912825047 },\n },\n 'oh-ohio-sandusky': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Sandusky',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43410',\n '43416',\n '43420',\n '43431',\n '43432',\n '43433',\n '43439',\n '43440',\n '43442',\n '43449',\n '43452',\n '43458',\n '43464',\n '43469',\n '44089',\n '44811',\n '44814',\n '44824',\n '44826',\n '44828',\n '44836',\n '44839',\n '44846',\n '44847',\n '44857',\n '44861',\n '44870',\n '44889',\n ]),\n approximateCenter: { longitude: -82.89335161402627, latitude: 41.380087038371364 },\n },\n 'oh-ohio-springfield': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Springfield',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43009',\n '43010',\n '43029',\n '43040',\n '43044',\n '43045',\n '43060',\n '43064',\n '43072',\n '43077',\n '43078',\n '43084',\n '43140',\n '43162',\n '45314',\n '45316',\n '45319',\n '45323',\n '45341',\n '45344',\n '45349',\n '45368',\n '45369',\n '45372',\n '45387',\n '45502',\n '45503',\n '45504',\n '45505',\n '45506',\n ]),\n approximateCenter: { longitude: -83.69524492693495, latitude: 39.996192723662105 },\n },\n 'oh-ohio-toledo': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Toledo',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43408',\n '43412',\n '43430',\n '43445',\n '43447',\n '43460',\n '43463',\n '43465',\n '43468',\n '43504',\n '43528',\n '43537',\n '43542',\n '43551',\n '43558',\n '43560',\n '43566',\n '43571',\n '43604',\n '43605',\n '43606',\n '43607',\n '43608',\n '43609',\n '43610',\n '43611',\n '43612',\n '43613',\n '43614',\n '43615',\n '43616',\n '43617',\n '43619',\n '43620',\n '43623',\n ]),\n approximateCenter: { longitude: -83.57716107551182, latitude: 41.62013395051255 },\n },\n 'oh-ohio-wilmington': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Wilmington',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43106',\n '43128',\n '43142',\n '43143',\n '43145',\n '43151',\n '43153',\n '43160',\n '45054',\n '45107',\n '45113',\n '45122',\n '45123',\n '45135',\n '45146',\n '45148',\n '45152',\n '45158',\n '45159',\n '45162',\n '45164',\n '45166',\n '45169',\n '45177',\n '45335',\n ]),\n approximateCenter: { longitude: -83.72417482639047, latitude: 39.46461028211678 },\n },\n 'oh-ohio-youngstown': {\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Youngstown',\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '44021',\n '44046',\n '44062',\n '44065',\n '44076',\n '44080',\n '44099',\n '44231',\n '44234',\n '44255',\n '44288',\n '44401',\n '44402',\n '44403',\n '44404',\n '44405',\n '44406',\n '44408',\n '44410',\n '44411',\n '44412',\n '44413',\n '44417',\n '44418',\n '44420',\n '44425',\n '44428',\n '44429',\n '44430',\n '44431',\n '44436',\n '44437',\n '44438',\n '44440',\n '44442',\n '44443',\n '44444',\n '44445',\n '44446',\n '44450',\n '44451',\n '44452',\n '44454',\n '44460',\n '44470',\n '44471',\n '44473',\n '44481',\n '44482',\n '44483',\n '44484',\n '44485',\n '44490',\n '44491',\n '44502',\n '44503',\n '44504',\n '44505',\n '44506',\n '44507',\n '44509',\n '44510',\n '44511',\n '44512',\n '44514',\n '44515',\n '44609',\n '44619',\n ]),\n approximateCenter: { longitude: -80.79066593943492, latitude: 41.16670300790965 },\n },\n 'fl-florida-jacksonville': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Jacksonville',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '32081',\n '32082',\n '32202',\n '32204',\n '32205',\n '32206',\n '32207',\n '32208',\n '32209',\n '32210',\n '32211',\n '32216',\n '32217',\n '32218',\n '32219',\n '32220',\n '32221',\n '32222',\n '32224',\n '32225',\n '32226',\n '32227',\n '32228',\n '32233',\n '32244',\n '32246',\n '32250',\n '32254',\n '32256',\n '32257',\n '32266',\n '32277',\n ]),\n approximateCenter: { longitude: -81.60254307535597, latitude: 30.30729282898878 },\n },\n 'fl-florida-green-cove-springs': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Green Cove Springs',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '32003',\n '32033',\n '32043',\n '32065',\n '32068',\n '32073',\n '32080',\n '32084',\n '32086',\n '32091',\n '32092',\n '32095',\n '32131',\n '32145',\n '32177',\n '32223',\n '32234',\n '32258',\n '32259',\n '32656',\n ]),\n approximateCenter: { longitude: -81.64096979762508, latitude: 29.95397964673996 },\n },\n 'fl-florida-ocala': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Ocala',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '32159',\n '32162',\n '32163',\n '32195',\n '32617',\n '34420',\n '34470',\n '34471',\n '34472',\n '34473',\n '34474',\n '34475',\n '34476',\n '34479',\n '34480',\n '34481',\n '34482',\n '34484',\n '34491',\n '34731',\n '34785',\n ]),\n approximateCenter: { longitude: -82.081252297554, latitude: 29.065274052810107 },\n },\n 'fl-florida-orlando-w': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Orlando (West)',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '32703',\n '32712',\n '32714',\n '32757',\n '32778',\n '32779',\n '32798',\n '32804',\n '32808',\n '32810',\n '32818',\n '32835',\n '34705',\n '34711',\n '34714',\n '34715',\n '34734',\n '34736',\n '34737',\n '34748',\n '34753',\n '34756',\n '34760',\n '34761',\n '34762',\n '34786',\n '34787',\n '34797',\n ]),\n approximateCenter: { longitude: -81.63610902452291, latitude: 28.62794007536539 },\n },\n 'fl-florida-orlando-ne': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Orlando (Northeast)',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '32701',\n '32707',\n '32708',\n '32725',\n '32730',\n '32732',\n '32738',\n '32746',\n '32750',\n '32751',\n '32764',\n '32765',\n '32766',\n '32771',\n '32773',\n '32789',\n '32792',\n '32801',\n '32803',\n '32807',\n '32814',\n '32816',\n '32817',\n '32820',\n '32825',\n '32826',\n '32828',\n ]),\n approximateCenter: { longitude: -81.2578595461177, latitude: 28.662289435163935 },\n },\n 'fl-florida-orlando-s': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Orlando (South)',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '32805',\n '32806',\n '32809',\n '32811',\n '32812',\n '32819',\n '32821',\n '32822',\n '32824',\n '32827',\n '32829',\n '32830',\n '32831',\n '32832',\n '32836',\n '32837',\n '32839',\n '33848',\n '33896',\n '34741',\n '34742',\n '34743',\n '34744',\n '34746',\n '34747',\n '34758',\n '34769',\n '34771',\n '34772',\n ]),\n approximateCenter: { longitude: -81.38415535654866, latitude: 28.37440762680268 },\n },\n 'fl-florida-spring-hill': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Spring Hill',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '33543',\n '33544',\n '33545',\n '33576',\n '34601',\n '34604',\n '34606',\n '34607',\n '34608',\n '34609',\n '34610',\n '34613',\n '34614',\n '34637',\n '34638',\n '34639',\n '34652',\n '34653',\n '34654',\n '34655',\n '34667',\n '34668',\n '34669',\n '34690',\n '34691',\n ]),\n approximateCenter: { longitude: -82.54177765595796, latitude: 28.358265680549984 },\n },\n 'fl-florida-tampa': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Tampa',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '33510',\n '33511',\n '33527',\n '33534',\n '33548',\n '33549',\n '33556',\n '33558',\n '33559',\n '33569',\n '33578',\n '33579',\n '33584',\n '33592',\n '33594',\n '33596',\n '33602',\n '33603',\n '33604',\n '33605',\n '33606',\n '33607',\n '33609',\n '33610',\n '33611',\n '33612',\n '33613',\n '33614',\n '33615',\n '33616',\n '33617',\n '33618',\n '33619',\n '33620',\n '33624',\n '33625',\n '33626',\n '33629',\n '33634',\n '33635',\n '33637',\n '33647',\n ]),\n approximateCenter: { longitude: -82.42988340303434, latitude: 28.000172406391485 },\n },\n 'fl-florida-st-petersburg': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'St. Petersburg',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '33701',\n '33702',\n '33703',\n '33704',\n '33705',\n '33706',\n '33707',\n '33708',\n '33709',\n '33710',\n '33711',\n '33712',\n '33713',\n '33714',\n '33716',\n '33744',\n '33755',\n '33756',\n '33759',\n '33760',\n '33761',\n '33762',\n '33763',\n '33764',\n '33765',\n '33767',\n '33770',\n '33771',\n '33772',\n '33773',\n '33774',\n '33776',\n '33777',\n '33778',\n '33781',\n '33782',\n '33785',\n '33786',\n '34677',\n '34681',\n '34683',\n '34684',\n '34685',\n '34688',\n '34689',\n '34695',\n '34698',\n ]),\n approximateCenter: { longitude: -82.73346895855646, latitude: 27.905359069242916 },\n },\n 'fl-florida-bradenton': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Bradenton',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '33570',\n '33572',\n '33573',\n '33598',\n '34201',\n '34202',\n '34203',\n '34205',\n '34207',\n '34208',\n '34209',\n '34210',\n '34211',\n '34212',\n '34219',\n '34221',\n '34222',\n '34231',\n '34232',\n '34233',\n '34234',\n '34235',\n '34236',\n '34237',\n '34238',\n '34239',\n '34240',\n '34241',\n '34243',\n '34251',\n ]),\n approximateCenter: { longitude: -82.46484040830573, latitude: 27.44366302195236 },\n },\n 'fl-florida-port-charlotte': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Port Charlotte',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '33946',\n '33947',\n '33948',\n '33952',\n '33953',\n '33954',\n '33980',\n '33981',\n '33983',\n '34223',\n '34224',\n '34229',\n '34275',\n '34285',\n '34286',\n '34287',\n '34288',\n '34289',\n '34291',\n '34292',\n '34293',\n ]),\n approximateCenter: { longitude: -82.23464212175996, latitude: 27.02405994805626 },\n },\n 'fl-florida-port-st-lucie': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Port St. Lucie',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '32962',\n '32968',\n '33455',\n '34945',\n '34946',\n '34947',\n '34949',\n '34950',\n '34951',\n '34952',\n '34953',\n '34956',\n '34957',\n '34981',\n '34982',\n '34983',\n '34984',\n '34986',\n '34987',\n '34990',\n '34994',\n '34996',\n '34997',\n ]),\n approximateCenter: { longitude: -80.35459082057679, latitude: 27.328468092819598 },\n },\n 'fl-florida-palm-bay': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Palm Bay',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '32901',\n '32903',\n '32904',\n '32905',\n '32907',\n '32908',\n '32909',\n '32922',\n '32926',\n '32931',\n '32934',\n '32935',\n '32937',\n '32940',\n '32948',\n '32949',\n '32950',\n '32951',\n '32952',\n '32955',\n '32958',\n '32960',\n '32966',\n '32967',\n '32976',\n ]),\n approximateCenter: { longitude: -80.63575670417126, latitude: 28.030164978463947 },\n },\n 'fl-florida-pensacola': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Pensacola',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '32501',\n '32502',\n '32503',\n '32504',\n '32505',\n '32506',\n '32507',\n '32509',\n '32511',\n '32512',\n '32514',\n '32526',\n '32530',\n '32531',\n '32533',\n '32534',\n '32535',\n '32561',\n '32563',\n '32564',\n '32565',\n '32566',\n '32568',\n '32570',\n '32571',\n '32577',\n '32583',\n ]),\n approximateCenter: { longitude: -87.18584966657515, latitude: 30.567910435242574 },\n },\n 'fl-florida-panama-city': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Panama City',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '32401',\n '32403',\n '32404',\n '32405',\n '32407',\n '32408',\n '32409',\n '32413',\n '32425',\n '32427',\n '32428',\n '32433',\n '32435',\n '32437',\n '32439',\n '32444',\n '32455',\n '32456',\n '32459',\n '32461',\n '32462',\n '32464',\n '32465',\n '32466',\n '32536',\n '32539',\n '32541',\n '32550',\n '32567',\n ]),\n approximateCenter: { longitude: -85.89196194011707, latitude: 30.435649642316395 },\n },\n 'ky-kentucky-newport': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Newport',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '41001',\n '41005',\n '41007',\n '41011',\n '41014',\n '41015',\n '41016',\n '41017',\n '41018',\n '41042',\n '41048',\n '41051',\n '41059',\n '41071',\n '41073',\n '41074',\n '41075',\n '41076',\n '41080',\n '41091',\n '41094',\n '41099',\n '45275',\n ]),\n approximateCenter: { longitude: -84.54615853083256, latitude: 39.01611016554615 },\n },\n 'ky-kentucky-louisville': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Louisville',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '40025',\n '40041',\n '40047',\n '40109',\n '40118',\n '40165',\n '40202',\n '40203',\n '40204',\n '40205',\n '40206',\n '40207',\n '40208',\n '40209',\n '40210',\n '40211',\n '40212',\n '40213',\n '40214',\n '40215',\n '40216',\n '40217',\n '40218',\n '40219',\n '40220',\n '40222',\n '40223',\n '40228',\n '40229',\n '40241',\n '40242',\n '40243',\n '40258',\n '40272',\n '40291',\n '40292',\n '40299',\n ]),\n approximateCenter: { longitude: -85.6979398809167, latitude: 38.19248836637291 },\n },\n 'ky-kentucky-cynthiana': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Cynthiana',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['41003', '41031', '41040']),\n approximateCenter: { longitude: -84.33960903583275, latitude: 38.53118658851987 },\n },\n 'ky-kentucky-frankfort': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Frankfort',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40003', '40076', '40342', '40347', '40383', '40601']),\n approximateCenter: { longitude: -84.9055845560548, latitude: 38.13270790362189 },\n },\n 'ky-kentucky-lexington': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Lexington',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '40356',\n '40502',\n '40503',\n '40504',\n '40505',\n '40506',\n '40507',\n '40508',\n '40509',\n '40510',\n '40513',\n '40514',\n '40515',\n '40517',\n '40526',\n ]),\n approximateCenter: { longitude: -84.50864672842684, latitude: 38.0090641583758 },\n },\n 'ky-kentucky-ashland': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Ashland',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '25507',\n '25530',\n '25701',\n '25704',\n '41101',\n '41102',\n '41121',\n '41129',\n '41139',\n '41169',\n '41183',\n ]),\n approximateCenter: { longitude: -82.64535985297596, latitude: 38.42597169467715 },\n },\n 'ky-kentucky-west-liberty': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'West Liberty',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40316', '40387', '41332', '41352', '41408', '41425', '41472']),\n approximateCenter: { longitude: -83.38045794413405, latitude: 37.87784499982682 },\n },\n 'ky-kentucky-richmond': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Richmond',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40385', '40403', '40404', '40461', '40475']),\n approximateCenter: { longitude: -84.27971492075982, latitude: 37.64542227148406 },\n },\n 'ky-kentucky-danville': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Danville',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '40310',\n '40328',\n '40330',\n '40372',\n '40390',\n '40422',\n '40437',\n '40440',\n '40444',\n '40464',\n '40468',\n '40484',\n ]),\n approximateCenter: { longitude: -84.82411188636438, latitude: 37.665100664863864 },\n },\n 'ky-kentucky-corbin': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Corbin',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40701', '40729', '40734', '40737', '40740', '40741', '40744']),\n approximateCenter: { longitude: -84.10143565507842, latitude: 37.041226786408494 },\n },\n 'ky-kentucky-somerset': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Somerset',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['42501', '42503', '42518', '42519', '42533', '42544', '42553', '42567']),\n approximateCenter: { longitude: -84.60682756777709, latitude: 37.07803041395583 },\n },\n 'ky-kentucky-elizabethtown': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Elizabethtown',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '40107',\n '40121',\n '40150',\n '40160',\n '40162',\n '40175',\n '40177',\n '42701',\n '42724',\n '42740',\n '42748',\n ]),\n approximateCenter: { longitude: -85.8885099843999, latitude: 37.767730181830174 },\n },\n 'ky-kentucky-campbellsville': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Campbellsville',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40009', '40033', '40060', '42718', '42733', '42758']),\n approximateCenter: { longitude: -85.25759303031681, latitude: 37.446561327357614 },\n },\n 'ky-kentucky-beaver-dam': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Beaver Dam',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '42320',\n '42328',\n '42333',\n '42338',\n '42347',\n '42349',\n '42352',\n '42354',\n '42361',\n '42370',\n ]),\n approximateCenter: { longitude: -86.84901896838815, latitude: 37.45057775364382 },\n },\n 'ky-kentucky-owensboro': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Owensboro',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['42301', '42303', '42327', '42351', '42355', '42366', '42376', '42378']),\n approximateCenter: { longitude: -87.04486506995052, latitude: 37.728025956425164 },\n },\n 'ky-kentucky-madisonville': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Madisonville',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '42371',\n '42372',\n '42408',\n '42410',\n '42413',\n '42431',\n '42436',\n '42440',\n '42441',\n '42442',\n '42453',\n '42456',\n '42464',\n ]),\n approximateCenter: { longitude: -87.48789935688657, latitude: 37.322698938381826 },\n },\n 'ky-kentucky-mayfield': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Mayfield',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '42025',\n '42035',\n '42039',\n '42040',\n '42051',\n '42054',\n '42066',\n '42079',\n '42088',\n ]),\n approximateCenter: { longitude: -88.61604062775044, latitude: 36.73742554582157 },\n },\n 'ky-kentucky-pikeville': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Pikeville',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '41501',\n '41503',\n '41514',\n '41519',\n '41527',\n '41557',\n '41560',\n '41562',\n '41564',\n '41571',\n '41603',\n '41605',\n '41615',\n '41635',\n '41642',\n '41659',\n '41663',\n ]),\n approximateCenter: { longitude: -82.50418433349226, latitude: 37.55665847729479 },\n },\n 'ky-kentucky-hazard': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Hazard',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '41367',\n '41701',\n '41712',\n '41719',\n '41722',\n '41723',\n '41725',\n '41727',\n '41729',\n '41739',\n '41740',\n '41743',\n '41746',\n '41751',\n '41754',\n '41759',\n '41760',\n '41773',\n '41774',\n ]),\n approximateCenter: { longitude: -83.14758925041392, latitude: 37.2948454775532 },\n },\n 'ky-kentucky-central-city': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Central City',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '42321',\n '42323',\n '42324',\n '42325',\n '42326',\n '42330',\n '42337',\n '42344',\n '42345',\n '42350',\n '42367',\n '42369',\n ]),\n approximateCenter: { longitude: -87.10829637049697, latitude: 37.25153716496797 },\n },\n 'in-indiana-gary': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Gary',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46311',\n '46312',\n '46319',\n '46320',\n '46321',\n '46322',\n '46323',\n '46324',\n '46327',\n '46342',\n '46368',\n '46373',\n '46375',\n '46394',\n '46402',\n '46403',\n '46404',\n '46405',\n '46406',\n '46407',\n '46408',\n '46409',\n '46410',\n ]),\n approximateCenter: { longitude: -87.39739916532194, latitude: 41.56693214114618 },\n },\n 'in-indiana-michigan-city': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Michigan City',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46301',\n '46302',\n '46304',\n '46345',\n '46346',\n '46350',\n '46360',\n '46365',\n '46371',\n '46382',\n '46383',\n '46385',\n '46390',\n '46391',\n '46532',\n ]),\n approximateCenter: { longitude: -86.83898850854227, latitude: 41.535145893162365 },\n },\n 'in-indiana-south-bend': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'South Bend',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46506',\n '46507',\n '46514',\n '46516',\n '46517',\n '46526',\n '46528',\n '46530',\n '46536',\n '46540',\n '46544',\n '46545',\n '46550',\n '46552',\n '46553',\n '46554',\n '46556',\n '46561',\n '46573',\n '46601',\n '46613',\n '46614',\n '46615',\n '46616',\n '46617',\n '46619',\n '46628',\n '46635',\n '46637',\n ]),\n approximateCenter: { longitude: -86.12870751196924, latitude: 41.638935810687 },\n },\n 'in-indiana-crown-point': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Crown Point',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46303',\n '46307',\n '46310',\n '46341',\n '46347',\n '46349',\n '46356',\n '46376',\n '46377',\n '46379',\n '46381',\n '46392',\n '47922',\n '47943',\n '47948',\n '47951',\n '47963',\n '47964',\n '47977',\n '47978',\n ]),\n approximateCenter: { longitude: -87.30580756708585, latitude: 41.100788498521545 },\n },\n 'in-indiana-plymouth': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Plymouth',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46340',\n '46348',\n '46366',\n '46374',\n '46501',\n '46504',\n '46511',\n '46531',\n '46534',\n '46563',\n '46570',\n '46574',\n '46922',\n '46939',\n '46960',\n '46968',\n '46975',\n '46996',\n '47946',\n '47957',\n ]),\n approximateCenter: { longitude: -86.53540539457126, latitude: 41.211191200191436 },\n },\n 'in-indiana-ft-wayne': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Fort Wayne',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46741',\n '46743',\n '46748',\n '46765',\n '46774',\n '46788',\n '46797',\n '46798',\n '46802',\n '46803',\n '46804',\n '46805',\n '46806',\n '46807',\n '46808',\n '46809',\n '46814',\n '46815',\n '46816',\n '46818',\n '46819',\n '46825',\n '46835',\n '46845',\n ]),\n approximateCenter: { longitude: -85.09517239313661, latitude: 41.1093334660479 },\n },\n 'in-indiana-lafayette': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Lafayette',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46058',\n '46065',\n '46913',\n '46920',\n '46923',\n '46929',\n '46977',\n '47901',\n '47904',\n '47905',\n '47906',\n '47907',\n '47909',\n '47918',\n '47920',\n '47923',\n '47924',\n '47925',\n '47929',\n '47930',\n '47941',\n '47944',\n '47950',\n '47959',\n '47960',\n '47967',\n '47970',\n '47971',\n '47975',\n '47980',\n '47981',\n '47983',\n '47992',\n '47995',\n '47997',\n ]),\n approximateCenter: { longitude: -86.85326259604311, latitude: 40.51150676985941 },\n },\n 'in-indiana-logansport': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Logansport',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46901',\n '46902',\n '46911',\n '46914',\n '46917',\n '46919',\n '46926',\n '46932',\n '46936',\n '46940',\n '46947',\n '46950',\n '46952',\n '46953',\n '46958',\n '46959',\n '46961',\n '46967',\n '46970',\n '46971',\n '46978',\n '46979',\n '46985',\n '46986',\n '46987',\n '46988',\n '46992',\n '46994',\n '47926',\n ]),\n approximateCenter: { longitude: -86.11370443530049, latitude: 40.67622920573918 },\n },\n 'in-indiana-terre-haute': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Terre Haute',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '47802',\n '47803',\n '47804',\n '47805',\n '47807',\n '47809',\n '47834',\n '47837',\n '47840',\n '47841',\n '47842',\n '47846',\n '47850',\n '47851',\n '47853',\n '47854',\n '47857',\n '47858',\n '47860',\n '47862',\n '47863',\n '47866',\n '47872',\n '47874',\n '47879',\n '47881',\n '47885',\n ]),\n approximateCenter: { longitude: -87.28666058970238, latitude: 39.50244261345774 },\n },\n 'in-indiana-indianapolis': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Indianapolis',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46107',\n '46201',\n '46202',\n '46203',\n '46204',\n '46205',\n '46208',\n '46214',\n '46216',\n '46217',\n '46218',\n '46219',\n '46220',\n '46221',\n '46222',\n '46224',\n '46225',\n '46226',\n '46227',\n '46228',\n '46229',\n '46231',\n '46234',\n '46235',\n '46236',\n '46237',\n '46239',\n '46240',\n '46241',\n '46250',\n '46254',\n '46256',\n '46259',\n '46260',\n '46268',\n '46278',\n ]),\n approximateCenter: { longitude: -86.13925207243044, latitude: 39.79694323808314 },\n },\n 'in-indiana-richmond': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Richmond',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46127',\n '46148',\n '47003',\n '47324',\n '47325',\n '47327',\n '47330',\n '47331',\n '47335',\n '47337',\n '47339',\n '47341',\n '47345',\n '47346',\n '47352',\n '47353',\n '47357',\n '47362',\n '47374',\n '47385',\n '47387',\n '47392',\n '47393',\n ]),\n approximateCenter: { longitude: -85.13395703918526, latitude: 39.807433614497484 },\n },\n 'in-indiana-lawrenceburg': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Lawrenceburg',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '47001',\n '47006',\n '47010',\n '47012',\n '47016',\n '47022',\n '47025',\n '47031',\n '47032',\n '47041',\n '47060',\n ]),\n approximateCenter: { longitude: -84.98845021296891, latitude: 39.24926377516368 },\n },\n 'in-indiana-seymour': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Seymour',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46124',\n '47201',\n '47203',\n '47226',\n '47227',\n '47232',\n '47236',\n '47244',\n '47246',\n '47247',\n '47265',\n '47273',\n '47274',\n '47280',\n '47282',\n '47283',\n ]),\n approximateCenter: { longitude: -85.78823253799982, latitude: 39.14018526726861 },\n },\n 'in-indiana-scottsburg': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Scottsburg',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 25 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['47102', '47138', '47170', '47229', '47230', '47243', '47250', '47270']),\n approximateCenter: { longitude: -85.66041238751293, latitude: 38.75536290107915 },\n },\n 'in-indiana-new-albany': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'New Albany',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '47106',\n '47111',\n '47112',\n '47114',\n '47119',\n '47122',\n '47124',\n '47126',\n '47129',\n '47130',\n '47136',\n '47141',\n '47143',\n '47150',\n '47161',\n '47163',\n '47164',\n '47165',\n '47172',\n '47177',\n ]),\n approximateCenter: { longitude: -85.87578595510392, latitude: 38.39744636081684 },\n },\n 'in-indiana-vincennes': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Vincennes',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '47501',\n '47512',\n '47516',\n '47524',\n '47528',\n '47529',\n '47535',\n '47557',\n '47558',\n '47561',\n '47562',\n '47564',\n '47567',\n '47568',\n '47573',\n '47578',\n '47584',\n '47591',\n '47596',\n '47597',\n '47598',\n ]),\n approximateCenter: { longitude: -87.26190222072071, latitude: 38.68043898505294 },\n },\n 'in-indiana-evansville': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Evansville',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '47601',\n '47610',\n '47612',\n '47613',\n '47619',\n '47620',\n '47630',\n '47631',\n '47633',\n '47638',\n '47639',\n '47640',\n '47647',\n '47648',\n '47649',\n '47660',\n '47665',\n '47666',\n '47670',\n '47708',\n '47710',\n '47711',\n '47712',\n '47713',\n '47714',\n '47715',\n '47720',\n '47725',\n ]),\n approximateCenter: { longitude: -87.5567621201497, latitude: 38.131757183444144 },\n },\n 'in-indiana-jasper': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Jasper',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '47513',\n '47515',\n '47521',\n '47527',\n '47532',\n '47541',\n '47542',\n '47546',\n '47575',\n '47580',\n '47585',\n '47586',\n '47590',\n ]),\n approximateCenter: { longitude: -86.86566483087888, latitude: 38.29736619189163 },\n },\n 'tx-texas-el-paso': {\n isActive: true,\n timezone: 'America/Denver',\n displayName: 'El Paso',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '79821',\n '79835',\n '79836',\n '79838',\n '79849',\n '79901',\n '79902',\n '79903',\n '79904',\n '79905',\n '79906',\n '79907',\n '79908',\n '79911',\n '79912',\n '79915',\n '79916',\n '79918',\n '79922',\n '79924',\n '79925',\n '79927',\n '79928',\n '79930',\n '79932',\n '79934',\n '79935',\n '79936',\n '79938',\n '79968',\n ]),\n approximateCenter: { longitude: -106.39440129056148, latitude: 31.790489054040826 },\n },\n 'tx-texas-lubbock': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Lubbock',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '79313',\n '79336',\n '79339',\n '79345',\n '79350',\n '79358',\n '79363',\n '79367',\n '79372',\n '79382',\n '79401',\n '79403',\n '79404',\n '79406',\n '79407',\n '79409',\n '79410',\n '79411',\n '79412',\n '79413',\n '79414',\n '79415',\n '79416',\n '79423',\n '79424',\n ]),\n approximateCenter: { longitude: -102.0132717910159, latitude: 33.57838840051127 },\n },\n 'tx-texas-dallas-fort-worth': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Fort Worth',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '75054',\n '75261',\n '76001',\n '76002',\n '76005',\n '76006',\n '76010',\n '76011',\n '76012',\n '76013',\n '76014',\n '76015',\n '76016',\n '76017',\n '76018',\n '76019',\n '76021',\n '76022',\n '76028',\n '76034',\n '76036',\n '76039',\n '76040',\n '76051',\n '76052',\n '76053',\n '76054',\n '76060',\n '76063',\n '76071',\n '76092',\n '76102',\n '76103',\n '76104',\n '76105',\n '76106',\n '76107',\n '76108',\n '76109',\n '76110',\n '76111',\n '76112',\n '76114',\n '76115',\n '76116',\n '76117',\n '76118',\n '76119',\n '76120',\n '76122',\n '76123',\n '76126',\n '76127',\n '76129',\n '76131',\n '76132',\n '76133',\n '76134',\n '76135',\n '76137',\n '76140',\n '76148',\n '76155',\n '76164',\n '76177',\n '76179',\n '76180',\n '76182',\n '76244',\n '76248',\n '76262',\n ]),\n approximateCenter: { longitude: -97.25055088801136, latitude: 32.7687965998178 },\n },\n 'tx-texas-dallas': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Dallas',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '75001',\n '75006',\n '75007',\n '75010',\n '75023',\n '75038',\n '75039',\n '75040',\n '75041',\n '75042',\n '75043',\n '75044',\n '75048',\n '75050',\n '75051',\n '75052',\n '75060',\n '75061',\n '75062',\n '75063',\n '75074',\n '75075',\n '75080',\n '75081',\n '75082',\n '75088',\n '75089',\n '75093',\n '75094',\n '75104',\n '75115',\n '75116',\n '75134',\n '75137',\n '75141',\n '75146',\n '75149',\n '75150',\n '75172',\n '75180',\n '75181',\n '75182',\n '75201',\n '75202',\n '75203',\n '75204',\n '75205',\n '75206',\n '75207',\n '75208',\n '75209',\n '75210',\n '75211',\n '75212',\n '75214',\n '75215',\n '75216',\n '75217',\n '75218',\n '75219',\n '75220',\n '75223',\n '75224',\n '75225',\n '75226',\n '75227',\n '75228',\n '75229',\n '75230',\n '75231',\n '75232',\n '75233',\n '75234',\n '75235',\n '75236',\n '75237',\n '75238',\n '75240',\n '75241',\n '75243',\n '75244',\n '75246',\n '75247',\n '75248',\n '75249',\n '75251',\n '75252',\n '75253',\n '75254',\n '75270',\n '75287',\n ]),\n approximateCenter: { longitude: -96.78648675762956, latitude: 32.82598058502405 },\n },\n 'tx-texas-san-antonio': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'San Antonio (Central)',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '78002',\n '78009',\n '78023',\n '78039',\n '78052',\n '78059',\n '78069',\n '78073',\n '78101',\n '78109',\n '78112',\n '78148',\n '78150',\n '78152',\n '78201',\n '78202',\n '78203',\n '78204',\n '78205',\n '78206',\n '78207',\n '78208',\n '78209',\n '78210',\n '78211',\n '78212',\n '78213',\n '78214',\n '78215',\n '78216',\n '78217',\n '78218',\n '78219',\n '78220',\n '78221',\n '78222',\n '78223',\n '78224',\n '78225',\n '78226',\n '78227',\n '78228',\n '78229',\n '78230',\n '78231',\n '78232',\n '78233',\n '78234',\n '78235',\n '78236',\n '78237',\n '78238',\n '78239',\n '78240',\n '78241',\n '78242',\n '78243',\n '78244',\n '78245',\n '78247',\n '78248',\n '78249',\n '78250',\n '78251',\n '78252',\n '78253',\n '78254',\n '78255',\n '78256',\n '78257',\n '78258',\n '78259',\n '78260',\n '78261',\n '78263',\n '78264',\n '78284',\n ]),\n approximateCenter: { longitude: -98.52584701716228, latitude: 29.44501992702678 },\n },\n 'tx-texas-north-san-antonio': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'San Antonio (North)',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '78108',\n '78123',\n '78124',\n '78130',\n '78132',\n '78133',\n '78154',\n '78155',\n '78266',\n '78666',\n ]),\n approximateCenter: { longitude: -98.14382229510974, latitude: 29.668625792310326 },\n },\n 'tx-texas-laredo': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Laredo',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['78040', '78041', '78043', '78045', '78046']),\n approximateCenter: { longitude: -99.46784220069546, latitude: 27.572604360233665 },\n },\n 'tx-texas-harlingen': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Harlingen',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '78520',\n '78521',\n '78526',\n '78535',\n '78550',\n '78552',\n '78559',\n '78566',\n '78567',\n '78569',\n '78575',\n '78578',\n '78583',\n '78586',\n '78593',\n ]),\n approximateCenter: { longitude: -97.59721150165427, latitude: 26.13703523784006 },\n },\n 'tx-texas-mcallen': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'McAllen',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '78501',\n '78503',\n '78504',\n '78516',\n '78537',\n '78538',\n '78539',\n '78541',\n '78542',\n '78543',\n '78557',\n '78558',\n '78560',\n '78562',\n '78570',\n '78572',\n '78573',\n '78574',\n '78576',\n '78577',\n '78579',\n '78589',\n '78596',\n '78599',\n '78668',\n ]),\n approximateCenter: { longitude: -98.1574565410466, latitude: 26.240899611801062 },\n },\n 'tx-texas-rio-grande-city': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Rio Grande City',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['78545', '78547', '78548', '78582', '78584', '78591', '78595']),\n approximateCenter: { longitude: -98.75856748804259, latitude: 26.460250090466293 },\n },\n 'tx-texas-houston': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Houston (Central)',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '77002',\n '77003',\n '77004',\n '77005',\n '77006',\n '77007',\n '77008',\n '77009',\n '77010',\n '77011',\n '77012',\n '77013',\n '77014',\n '77015',\n '77016',\n '77017',\n '77018',\n '77019',\n '77020',\n '77021',\n '77022',\n '77023',\n '77024',\n '77025',\n '77026',\n '77027',\n '77028',\n '77029',\n '77030',\n '77031',\n '77032',\n '77033',\n '77034',\n '77035',\n '77036',\n '77037',\n '77038',\n '77039',\n '77040',\n '77041',\n '77042',\n '77043',\n '77044',\n '77045',\n '77046',\n '77047',\n '77048',\n '77049',\n '77050',\n '77051',\n '77053',\n '77054',\n '77055',\n '77056',\n '77057',\n '77058',\n '77059',\n '77060',\n '77061',\n '77062',\n '77063',\n '77064',\n '77065',\n '77066',\n '77067',\n '77068',\n '77069',\n '77070',\n '77071',\n '77072',\n '77073',\n '77074',\n '77075',\n '77076',\n '77077',\n '77078',\n '77079',\n '77080',\n '77081',\n '77082',\n '77083',\n '77084',\n '77085',\n '77086',\n '77087',\n '77088',\n '77089',\n '77090',\n '77091',\n '77092',\n '77093',\n '77094',\n '77095',\n '77096',\n '77098',\n '77099',\n '77204',\n '77338',\n '77339',\n '77346',\n '77373',\n '77388',\n '77396',\n '77401',\n '77477',\n '77478',\n '77489',\n '77498',\n '77502',\n '77503',\n '77504',\n '77505',\n '77506',\n '77507',\n '77520',\n '77521',\n '77530',\n '77536',\n '77546',\n '77547',\n '77562',\n '77571',\n '77581',\n '77584',\n '77586',\n '77587',\n '77598',\n ]),\n approximateCenter: { longitude: -95.37433870683658, latitude: 29.765711291626626 },\n },\n 'tx-texas-beaumont': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Beaumont',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '77611',\n '77613',\n '77619',\n '77622',\n '77627',\n '77629',\n '77630',\n '77632',\n '77640',\n '77642',\n '77651',\n '77657',\n '77659',\n '77662',\n '77701',\n '77702',\n '77703',\n '77705',\n '77706',\n '77707',\n '77708',\n '77710',\n '77713',\n ]),\n approximateCenter: { longitude: -94.09855019410381, latitude: 30.04724892686902 },\n },\n 'tx-texas-south-houston': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Houston (South)',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '77510',\n '77511',\n '77515',\n '77517',\n '77518',\n '77531',\n '77534',\n '77539',\n '77541',\n '77545',\n '77550',\n '77551',\n '77563',\n '77565',\n '77566',\n '77568',\n '77573',\n '77577',\n '77578',\n '77583',\n '77590',\n '77591',\n ]),\n approximateCenter: { longitude: -95.16695440581051, latitude: 29.330940119936887 },\n },\n 'tx-texas-rosenburg': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Rosenburg',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '77406',\n '77407',\n '77417',\n '77430',\n '77435',\n '77441',\n '77444',\n '77450',\n '77451',\n '77454',\n '77459',\n '77461',\n '77464',\n '77469',\n '77471',\n '77476',\n '77479',\n '77485',\n '77494',\n ]),\n approximateCenter: { longitude: -95.85438105146186, latitude: 29.552783985663922 },\n },\n 'tx-texas-west-houston': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Houston (West)',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '77355',\n '77375',\n '77377',\n '77379',\n '77418',\n '77423',\n '77426',\n '77429',\n '77433',\n '77445',\n '77446',\n '77447',\n '77449',\n '77466',\n '77474',\n '77484',\n '77493',\n ]),\n approximateCenter: { longitude: -95.88362997672738, latitude: 29.989273647986103 },\n },\n 'tx-texas-north-houston': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Houston (North)',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '77301',\n '77302',\n '77303',\n '77304',\n '77306',\n '77316',\n '77318',\n '77328',\n '77354',\n '77356',\n '77357',\n '77362',\n '77365',\n '77372',\n '77378',\n '77380',\n '77381',\n '77382',\n '77384',\n '77385',\n '77386',\n '77389',\n ]),\n approximateCenter: { longitude: -95.4461244631981, latitude: 30.25826105293368 },\n },\n 'tx-texas-east-houston': {\n isActive: true,\n timezone: 'America/Chicago',\n displayName: 'Houston (East)',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '77327',\n '77336',\n '77345',\n '77532',\n '77533',\n '77535',\n '77564',\n '77575',\n '77582',\n ]),\n approximateCenter: { longitude: -94.8717281611222, latitude: 30.097101981825563 },\n },\n 'ca-los-angeles-lancaster': {\n isActive: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Lancaster',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '93510',\n '93534',\n '93535',\n '93536',\n '93543',\n '93550',\n '93551',\n '93552',\n '93560',\n '93591',\n ]),\n approximateCenter: { longitude: -118.10743932974759, latitude: 34.61413032470717 },\n },\n 'ca-los-angeles-santa-clarita': {\n isActive: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Santa Clarita',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '91321',\n '91350',\n '91351',\n '91354',\n '91355',\n '91381',\n '91384',\n '91387',\n '91390',\n ]),\n approximateCenter: { longitude: -118.52270922834172, latitude: 34.44010316887833 },\n },\n 'ca-los-angeles-simi-valley': {\n isActive: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Simi Valley',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set(['91304', '93021', '93063', '93065']),\n approximateCenter: { longitude: -118.74691117067051, latitude: 34.275885984183724 },\n },\n 'ca-los-angeles-ventura': {\n isActive: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Ventura',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '93001',\n '93003',\n '93004',\n '93010',\n '93012',\n '93030',\n '93033',\n '93035',\n '93036',\n '93041',\n '93043',\n '93060',\n '93066',\n ]),\n approximateCenter: { longitude: -119.15417093376143, latitude: 34.24297342662406 },\n },\n 'ca-bay-area-fresno': {\n isActive: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Fresno',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '93609',\n '93611',\n '93612',\n '93616',\n '93619',\n '93625',\n '93636',\n '93648',\n '93650',\n '93652',\n '93654',\n '93657',\n '93662',\n '93701',\n '93702',\n '93703',\n '93704',\n '93705',\n '93706',\n '93710',\n '93711',\n '93720',\n '93721',\n '93722',\n '93723',\n '93725',\n '93726',\n '93727',\n '93728',\n '93730',\n '93737',\n '93741',\n ]),\n approximateCenter: { longitude: -119.74185635420875, latitude: 36.75372530035502 },\n },\n 'me-maine-kennebunk': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Kennebunk',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '03901',\n '03902',\n '03903',\n '03904',\n '03905',\n '03906',\n '03907',\n '03908',\n '03909',\n '04002',\n '04027',\n '04043',\n '04046',\n '04073',\n '04083',\n '04090',\n ]),\n approximateCenter: { longitude: -70.70131127313863, latitude: 43.29398636439545 },\n },\n 'me-maine-portland': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Portland',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '04005',\n '04021',\n '04038',\n '04039',\n '04062',\n '04064',\n '04072',\n '04074',\n '04084',\n '04092',\n '04093',\n '04096',\n '04097',\n '04101',\n '04102',\n '04103',\n '04105',\n '04106',\n '04107',\n ]),\n approximateCenter: { longitude: -70.35310075460801, latitude: 43.68749701131258 },\n },\n 'me-maine-lewiston': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Lewiston',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '04008',\n '04011',\n '04032',\n '04069',\n '04086',\n '04210',\n '04222',\n '04236',\n '04240',\n '04250',\n '04252',\n '04256',\n '04258',\n '04260',\n '04274',\n '04280',\n '04287',\n ]),\n approximateCenter: { longitude: -70.1413615455809, latitude: 44.02785285296838 },\n },\n 'me-maine-augusta': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Augusta',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '04259',\n '04265',\n '04284',\n '04330',\n '04342',\n '04344',\n '04345',\n '04346',\n '04347',\n '04348',\n '04350',\n '04351',\n '04352',\n '04353',\n '04355',\n '04357',\n '04358',\n '04363',\n '04364',\n '04901',\n '04910',\n '04917',\n '04963',\n '04989',\n ]),\n approximateCenter: { longitude: -69.78723220463532, latitude: 44.32341851129758 },\n },\n 'me-maine-skohegan': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Skohegan',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '04911',\n '04912',\n '04920',\n '04922',\n '04923',\n '04924',\n '04927',\n '04928',\n '04929',\n '04930',\n '04937',\n '04942',\n '04943',\n '04950',\n '04953',\n '04957',\n '04958',\n '04961',\n '04965',\n '04967',\n '04971',\n '04976',\n '04978',\n '04979',\n ]),\n approximateCenter: { longitude: -69.60298451501934, latitude: 44.863985594068005 },\n },\n 'me-maine-bangor': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Bangor',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '04401',\n '04411',\n '04412',\n '04416',\n '04419',\n '04427',\n '04428',\n '04429',\n '04434',\n '04444',\n '04449',\n '04450',\n '04456',\n '04461',\n '04468',\n '04472',\n '04473',\n '04474',\n '04488',\n '04496',\n '04605',\n '04684',\n '04932',\n '04969',\n ]),\n approximateCenter: { longitude: -68.8219400558519, latitude: 44.79456711961043 },\n },\n 'ct-connecticut-new-haven': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'New Haven',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '06401',\n '06403',\n '06405',\n '06410',\n '06418',\n '06444',\n '06460',\n '06461',\n '06467',\n '06468',\n '06470',\n '06473',\n '06477',\n '06478',\n '06479',\n '06482',\n '06483',\n '06484',\n '06488',\n '06492',\n '06510',\n '06511',\n '06512',\n '06513',\n '06514',\n '06515',\n '06516',\n '06517',\n '06518',\n '06519',\n '06524',\n '06525',\n '06604',\n '06605',\n '06606',\n '06607',\n '06608',\n '06610',\n '06611',\n '06614',\n '06615',\n '06702',\n '06704',\n '06705',\n '06706',\n '06708',\n '06710',\n '06712',\n '06716',\n '06751',\n '06752',\n '06755',\n '06762',\n '06770',\n '06776',\n '06779',\n '06782',\n '06783',\n '06784',\n '06786',\n '06787',\n '06793',\n '06794',\n '06795',\n '06798',\n '06801',\n '06804',\n '06810',\n '06811',\n '06812',\n ]),\n approximateCenter: { longitude: -73.10929689216424, latitude: 41.427686194094406 },\n },\n 'ct-connecticut-hartford': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Hartford',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '06001',\n '06002',\n '06010',\n '06013',\n '06016',\n '06019',\n '06023',\n '06026',\n '06029',\n '06032',\n '06033',\n '06035',\n '06037',\n '06040',\n '06042',\n '06043',\n '06051',\n '06052',\n '06053',\n '06062',\n '06066',\n '06067',\n '06070',\n '06071',\n '06073',\n '06074',\n '06078',\n '06081',\n '06082',\n '06084',\n '06085',\n '06088',\n '06089',\n '06092',\n '06093',\n '06095',\n '06096',\n '06103',\n '06105',\n '06106',\n '06107',\n '06108',\n '06109',\n '06110',\n '06111',\n '06112',\n '06114',\n '06117',\n '06118',\n '06119',\n '06120',\n '06160',\n '06232',\n '06238',\n '06414',\n '06416',\n '06450',\n '06451',\n '06455',\n '06456',\n '06457',\n '06459',\n '06480',\n '06481',\n '06489',\n ]),\n approximateCenter: { longitude: -72.6813176756917, latitude: 41.756003026662185 },\n },\n 'ct-connecticut-norwich': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Norwich',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '06226',\n '06231',\n '06234',\n '06235',\n '06237',\n '06239',\n '06247',\n '06248',\n '06249',\n '06250',\n '06254',\n '06256',\n '06264',\n '06266',\n '06268',\n '06269',\n '06280',\n '06320',\n '06330',\n '06331',\n '06332',\n '06333',\n '06334',\n '06335',\n '06336',\n '06338',\n '06339',\n '06340',\n '06349',\n '06351',\n '06353',\n '06354',\n '06355',\n '06357',\n '06359',\n '06360',\n '06365',\n '06370',\n '06371',\n '06374',\n '06375',\n '06377',\n '06378',\n '06379',\n '06380',\n '06382',\n '06384',\n '06385',\n '06387',\n '06389',\n '06415',\n '06420',\n '06423',\n '06424',\n '06447',\n '06469',\n ]),\n approximateCenter: { longitude: -72.11834281689754, latitude: 41.574112664731125 },\n },\n 'ga-georgia-savannah': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Savannah',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '31302',\n '31322',\n '31401',\n '31404',\n '31405',\n '31406',\n '31407',\n '31408',\n '31409',\n '31410',\n '31411',\n '31415',\n '31419',\n ]),\n approximateCenter: { longitude: -81.14737806158841, latitude: 32.05289454151398 },\n },\n 'ga-georgia-augusta': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Augusta',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '30809',\n '30813',\n '30815',\n '30901',\n '30904',\n '30906',\n '30907',\n '30909',\n '30912',\n ]),\n approximateCenter: { longitude: -82.06288058278116, latitude: 33.448566683694594 },\n },\n 'mi-michigan-marquette': {\n isActive: true,\n timezone: 'America/New_York',\n displayName: 'Marquette',\n requiresMatchmakingToClaimInMPX: true,\n etaPadding: DEFAULT_ETA_PADDING,\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '49808',\n '49814',\n '49833',\n '49841',\n '49849',\n '49855',\n '49861',\n '49866',\n '49879',\n '49885',\n ]),\n approximateCenter: { longitude: -87.68421611853299, latitude: 46.4580619923657 },\n },\n 'in-indiana-santa-claus': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Santa Claus',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '47523',\n '47531',\n '47536',\n '47537',\n '47550',\n '47552',\n '47577',\n '47579',\n '47588',\n '47611',\n '47615',\n '47617',\n '47634',\n '47635',\n '47637',\n ]),\n approximateCenter: { longitude: -86.99317934864176, latitude: 38.05196253280069 },\n },\n 'ca-los-angeles-bakersfield': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Bakersfield',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '93215',\n '93250',\n '93263',\n '93301',\n '93304',\n '93305',\n '93306',\n '93307',\n '93308',\n '93309',\n '93311',\n '93312',\n '93313',\n '93314',\n ]),\n approximateCenter: { longitude: -119.07213010263756, latitude: 35.41137099716801 },\n },\n 'ca-los-angeles-coachella': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Coachella',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '92201',\n '92203',\n '92210',\n '92211',\n '92234',\n '92236',\n '92240',\n '92241',\n '92253',\n '92258',\n '92260',\n '92262',\n '92270',\n '92276',\n ]),\n approximateCenter: { longitude: -116.36526341842395, latitude: 33.78405324188269 },\n },\n 'ca-los-angeles-murieta': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Murieta',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '92003',\n '92028',\n '92059',\n '92061',\n '92082',\n '92530',\n '92562',\n '92563',\n '92590',\n '92591',\n '92592',\n '92595',\n ]),\n approximateCenter: { longitude: -117.15713515936959, latitude: 33.45803805752562 },\n },\n 'ca-los-angeles-victorville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Victorville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '92301',\n '92307',\n '92308',\n '92344',\n '92345',\n '92371',\n '92372',\n '92392',\n '92394',\n '92395',\n ]),\n approximateCenter: { longitude: -117.37738130324057, latitude: 34.48312691914782 },\n },\n 'ct-connecticut-clinton': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Clinton',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '06409',\n '06412',\n '06413',\n '06417',\n '06419',\n '06422',\n '06426',\n '06437',\n '06438',\n '06441',\n '06442',\n '06443',\n '06471',\n '06472',\n '06475',\n '06498',\n ]),\n approximateCenter: { longitude: -72.55220181941611, latitude: 41.367772640754666 },\n },\n 'ct-connecticut-north-east': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Northeast',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '06076',\n '06230',\n '06241',\n '06242',\n '06243',\n '06255',\n '06258',\n '06259',\n '06260',\n '06262',\n '06263',\n '06277',\n '06278',\n '06279',\n '06281',\n '06282',\n ]),\n approximateCenter: { longitude: -71.99821557317777, latitude: 41.9137764575714 },\n },\n 'ct-connecticut-north-west': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Northwest',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '06018',\n '06021',\n '06024',\n '06027',\n '06031',\n '06039',\n '06057',\n '06058',\n '06059',\n '06060',\n '06061',\n '06063',\n '06065',\n '06068',\n '06069',\n '06090',\n '06091',\n '06098',\n '06750',\n '06753',\n '06754',\n '06756',\n '06757',\n '06758',\n '06759',\n '06763',\n '06777',\n '06778',\n '06785',\n '06790',\n '06791',\n '06796',\n ]),\n approximateCenter: { longitude: -73.1808918625588, latitude: 41.87054813031228 },\n },\n 'ct-connecticut-stamford': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Stamford',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '06612',\n '06807',\n '06820',\n '06824',\n '06825',\n '06830',\n '06831',\n '06840',\n '06850',\n '06851',\n '06853',\n '06854',\n '06855',\n '06870',\n '06877',\n '06878',\n '06880',\n '06883',\n '06890',\n '06896',\n '06897',\n '06901',\n '06902',\n '06903',\n '06905',\n '06906',\n '06907',\n ]),\n approximateCenter: { longitude: -73.4633929683797, latitude: 41.12845291768926 },\n },\n 'ga-georgia-athens': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Athens',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '30549',\n '30565',\n '30601',\n '30602',\n '30605',\n '30606',\n '30607',\n '30609',\n '30621',\n '30622',\n '30628',\n '30646',\n '30677',\n '30683',\n ]),\n approximateCenter: { longitude: -83.38855864267113, latitude: 33.96419008717595 },\n },\n 'ga-georgia-carrollton': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Carrollton',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '30107',\n '30110',\n '30114',\n '30115',\n '30116',\n '30117',\n '30118',\n '30179',\n '30180',\n '30182',\n '30187',\n '30188',\n '30189',\n ]),\n approximateCenter: { longitude: -84.82505587895459, latitude: 33.868455886719445 },\n },\n 'ga-georgia-columbus': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Columbus',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '31804',\n '31807',\n '31808',\n '31820',\n '31901',\n '31903',\n '31904',\n '31906',\n '31907',\n '31909',\n ]),\n approximateCenter: { longitude: -84.92391832275497, latitude: 32.54524155020088 },\n },\n 'ga-georgia-covington': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Covington',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30014', '30016', '30025', '30054', '30055', '30663']),\n approximateCenter: { longitude: -83.77996435021886, latitude: 33.59202980264145 },\n },\n 'ga-georgia-dublin': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Dublin',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30454', '31019', '31021', '31022', '31027', '31065', '31075']),\n approximateCenter: { longitude: -82.97126842795876, latitude: 32.479862195239015 },\n },\n 'ga-georgia-gainesville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Gainesville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30501', '30504', '30506', '30507', '30542', '30566']),\n approximateCenter: { longitude: -83.86250762005774, latitude: 34.26928780449546 },\n },\n 'ga-georgia-griffin': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Griffin',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30205', '30215', '30223', '30224', '30228', '30248', '30257', '30292']),\n approximateCenter: { longitude: -84.30591899466913, latitude: 33.27696317003071 },\n },\n 'ga-georgia-lagrange': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'LaGrange',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30230', '30240', '30241', '31822', '31833']),\n approximateCenter: { longitude: -84.9998299204371, latitude: 32.986649579593184 },\n },\n 'ga-georgia-macon': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Macon',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '31005',\n '31008',\n '31028',\n '31030',\n '31047',\n '31052',\n '31069',\n '31088',\n '31093',\n '31098',\n '31201',\n '31204',\n '31206',\n '31207',\n '31210',\n '31211',\n '31216',\n '31217',\n '31220',\n ]),\n approximateCenter: { longitude: -83.68240545477069, latitude: 32.7108952484839 },\n },\n 'ga-georgia-rome': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Rome',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30124', '30145', '30147', '30149', '30161', '30165', '30173']),\n approximateCenter: { longitude: -85.19953379425985, latitude: 34.21665545410371 },\n },\n 'ga-georgia-statesboro': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Statesboro',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30415', '30439', '30450', '30451', '30452', '30458', '30461']),\n approximateCenter: { longitude: -81.85730873339892, latitude: 32.414792541419914 },\n },\n 'ga-georgia-tifton': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Tifton',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '31622',\n '31637',\n '31647',\n '31733',\n '31749',\n '31760',\n '31775',\n '31790',\n '31793',\n '31794',\n '31795',\n ]),\n approximateCenter: { longitude: -83.47004939865242, latitude: 31.442329879037665 },\n },\n 'ga-georgia-valdosta': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Valdosta',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '31601',\n '31602',\n '31605',\n '31606',\n '31620',\n '31625',\n '31632',\n '31636',\n '31638',\n '31641',\n '31643',\n '31698',\n ]),\n approximateCenter: { longitude: -83.32937134179635, latitude: 30.88747809430393 },\n },\n 'ga-georgia-waycross': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Waycross',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['31501', '31503', '31516', '31542', '31552']),\n approximateCenter: { longitude: -82.34415784939269, latitude: 31.22938732575513 },\n },\n 'nh-new-hampshire-claremont': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Claremont',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '03431',\n '03445',\n '03448',\n '03456',\n '03467',\n '03601',\n '03602',\n '03603',\n '03605',\n '03607',\n '03608',\n '03609',\n '03743',\n '03745',\n '03773',\n ]),\n approximateCenter: { longitude: -72.30560685475436, latitude: 43.175501858070064 },\n },\n 'nh-new-hampshire-conway': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Conway',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '03218',\n '03225',\n '03227',\n '03237',\n '03254',\n '03259',\n '03263',\n '03809',\n '03810',\n '03812',\n '03813',\n '03814',\n '03816',\n '03817',\n '03818',\n '03830',\n '03832',\n '03836',\n '03837',\n '03838',\n '03845',\n '03849',\n '03850',\n '03852',\n '03853',\n '03855',\n '03860',\n '03864',\n '03872',\n '03875',\n '03882',\n '03883',\n '03886',\n '03887',\n '03890',\n '03894',\n '03897',\n ]),\n approximateCenter: { longitude: -71.21348206681103, latitude: 43.72868933441575 },\n },\n 'nh-new-hampshire-lebanon': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Lebanon',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '03216',\n '03217',\n '03221',\n '03222',\n '03226',\n '03230',\n '03233',\n '03240',\n '03241',\n '03243',\n '03245',\n '03255',\n '03256',\n '03257',\n '03260',\n '03264',\n '03268',\n '03273',\n '03278',\n '03280',\n '03284',\n '03287',\n '03741',\n '03748',\n '03750',\n '03752',\n '03753',\n '03755',\n '03756',\n '03766',\n '03768',\n '03770',\n '03781',\n '03782',\n '03784',\n ]),\n approximateCenter: { longitude: -71.9632717062539, latitude: 43.53236920762544 },\n },\n 'nh-new-hampshire-peterborough': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Peterborough',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '03043',\n '03047',\n '03048',\n '03057',\n '03070',\n '03071',\n '03082',\n '03084',\n '03086',\n '03440',\n '03441',\n '03442',\n '03443',\n '03444',\n '03446',\n '03447',\n '03449',\n '03450',\n '03451',\n '03452',\n '03455',\n '03457',\n '03458',\n '03461',\n '03462',\n '03464',\n '03465',\n '03466',\n '03470',\n ]),\n approximateCenter: { longitude: -72.06438532163914, latitude: 42.884752821274255 },\n },\n 'oh-ohio-athens': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Athens',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43111',\n '43144',\n '43728',\n '45620',\n '45622',\n '45634',\n '45651',\n '45654',\n '45695',\n '45698',\n '45701',\n '45710',\n '45711',\n '45716',\n '45719',\n '45723',\n '45732',\n '45735',\n '45740',\n '45741',\n '45743',\n '45760',\n '45761',\n '45764',\n '45766',\n '45769',\n '45770',\n '45771',\n '45772',\n '45775',\n '45776',\n '45778',\n '45780',\n '45782',\n ]),\n approximateCenter: { longitude: -82.1220846519286, latitude: 39.27794807040021 },\n },\n 'oh-ohio-cambridge': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Cambridge',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43722',\n '43723',\n '43725',\n '43733',\n '43749',\n '43750',\n '43755',\n '43762',\n '43767',\n '43768',\n '43772',\n '43773',\n '43778',\n '43779',\n '43780',\n '43788',\n '43802',\n '43973',\n '43983',\n '44693',\n '44699',\n ]),\n approximateCenter: { longitude: -81.4712010910683, latitude: 40.0264218376576 },\n },\n 'oh-ohio-carrollton': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Carrollton',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43903',\n '43908',\n '43910',\n '43913',\n '43920',\n '43925',\n '43930',\n '43932',\n '43938',\n '43944',\n '43945',\n '43952',\n '43953',\n '43961',\n '43962',\n '43964',\n '43968',\n '43970',\n '44423',\n '44427',\n '44432',\n '44441',\n '44455',\n '44615',\n '44625',\n '44651',\n '44695',\n ]),\n approximateCenter: { longitude: -80.80347843143794, latitude: 40.549051104907356 },\n },\n 'oh-ohio-coshocton': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Coshocton',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43006',\n '43014',\n '43022',\n '43028',\n '43804',\n '43811',\n '43812',\n '43824',\n '43832',\n '43836',\n '43837',\n '43840',\n '43843',\n '43844',\n '43845',\n '44610',\n '44611',\n '44628',\n '44629',\n '44633',\n '44637',\n '44638',\n '44654',\n '44661',\n '44676',\n '44681',\n '44687',\n '44822',\n '44838',\n '44840',\n '44842',\n '44843',\n '44864',\n ]),\n approximateCenter: { longitude: -81.98292166484033, latitude: 40.48158155099646 },\n },\n 'oh-ohio-jackson': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Jackson',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '45614',\n '45619',\n '45621',\n '45623',\n '45629',\n '45631',\n '45638',\n '45640',\n '45645',\n '45656',\n '45658',\n '45659',\n '45669',\n '45672',\n '45674',\n '45678',\n '45680',\n '45682',\n '45685',\n '45686',\n '45688',\n '45692',\n '45694',\n '45696',\n ]),\n approximateCenter: { longitude: -82.51478715974481, latitude: 38.77829441197283 },\n },\n 'oh-ohio-portsmouth': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Porstmouth',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '45172',\n '45612',\n '45613',\n '45616',\n '45630',\n '45646',\n '45648',\n '45650',\n '45652',\n '45653',\n '45657',\n '45660',\n '45661',\n '45662',\n '45663',\n '45671',\n '45681',\n '45684',\n '45690',\n ]),\n approximateCenter: { longitude: -83.15758836954696, latitude: 38.93039890905649 },\n },\n 'oh-ohio-st-clairsville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'St. Clairsville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43718',\n '43759',\n '43901',\n '43906',\n '43907',\n '43912',\n '43917',\n '43933',\n '43935',\n '43939',\n '43943',\n '43947',\n '43948',\n '43950',\n '43963',\n '43971',\n '43974',\n '43976',\n '43977',\n '43981',\n '43985',\n '43986',\n '43988',\n ]),\n approximateCenter: { longitude: -80.89319406199628, latitude: 40.164655632799544 },\n },\n 'oh-ohio-woodsfield': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Woodsfield',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '43713',\n '43716',\n '43719',\n '43747',\n '43754',\n '43757',\n '43786',\n '43793',\n '43902',\n '43914',\n '43915',\n '43931',\n '43942',\n '43946',\n '45734',\n '45745',\n '45767',\n '45789',\n ]),\n approximateCenter: { longitude: -81.09050928808921, latitude: 39.75955283998639 },\n },\n 'ma-massachusetts-cape-cod': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Cape Cod',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '02534',\n '02536',\n '02537',\n '02540',\n '02542',\n '02543',\n '02556',\n '02559',\n '02561',\n '02563',\n '02601',\n '02630',\n '02631',\n '02632',\n '02633',\n '02635',\n '02637',\n '02638',\n '02639',\n '02641',\n '02642',\n '02644',\n '02645',\n '02646',\n '02648',\n '02650',\n '02652',\n '02653',\n '02655',\n '02657',\n '02659',\n '02660',\n '02664',\n '02666',\n '02667',\n '02670',\n '02671',\n '02673',\n '02675',\n ]),\n approximateCenter: { longitude: -70.27965183343106, latitude: 41.71746807176562 },\n },\n 'ma-massachusetts-plymouth': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Plymouth',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '02330',\n '02346',\n '02347',\n '02360',\n '02538',\n '02558',\n '02562',\n '02571',\n '02717',\n '02738',\n '02770',\n ]),\n approximateCenter: { longitude: -70.75471143696385, latitude: 41.79629591104988 },\n },\n 'ma-massachusetts-marshfield': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Marshfield',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '02020',\n '02025',\n '02043',\n '02045',\n '02047',\n '02050',\n '02061',\n '02332',\n '02333',\n '02339',\n '02341',\n '02359',\n '02364',\n '02367',\n '02370',\n ]),\n approximateCenter: { longitude: -70.80487896163439, latitude: 42.10979337593356 },\n },\n 'oh-ohio-marietta': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Marietta',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set([\n '43717',\n '43720',\n '43724',\n '43727',\n '43730',\n '43731',\n '43732',\n '43734',\n '43748',\n '43756',\n '43758',\n '43764',\n '43766',\n '43771',\n '43782',\n '43787',\n '45714',\n '45715',\n '45721',\n '45724',\n '45727',\n '45729',\n '45742',\n '45744',\n '45746',\n '45750',\n '45768',\n '45773',\n '45784',\n '45786',\n '45788',\n ]),\n approximateCenter: { longitude: -81.74036850400054, latitude: 39.60152534312949 },\n },\n 'ny-new-york-brooklyn': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Brooklyn',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 2 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 2 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 2 * MILE_IN_METERS,\n postalCodes: new Set([\n '11201',\n '11203',\n '11204',\n '11205',\n '11206',\n '11207',\n '11209',\n '11210',\n '11211',\n '11212',\n '11213',\n '11214',\n '11215',\n '11216',\n '11217',\n '11218',\n '11219',\n '11220',\n '11221',\n '11223',\n '11224',\n '11225',\n '11226',\n '11228',\n '11229',\n '11230',\n '11231',\n '11232',\n '11233',\n '11234',\n '11235',\n '11236',\n '11238',\n '11239',\n '11249',\n ]),\n approximateCenter: { longitude: -73.95970245384618, latitude: 40.65009252639905 },\n },\n 'ny-new-york-staten-island': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Staten Island',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '10301',\n '10302',\n '10303',\n '10304',\n '10305',\n '10306',\n '10307',\n '10308',\n '10309',\n '10310',\n '10312',\n '10314',\n ]),\n approximateCenter: { longitude: -74.14785858235753, latitude: 40.58595992283987 },\n },\n 'ny-new-york-queens': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Queens',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 2 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 2 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 2 * MILE_IN_METERS,\n postalCodes: new Set([\n '11096',\n '11101',\n '11102',\n '11103',\n '11105',\n '11106',\n '11208',\n '11222',\n '11237',\n '11354',\n '11355',\n '11356',\n '11357',\n '11358',\n '11359',\n '11360',\n '11361',\n '11364',\n '11365',\n '11366',\n '11367',\n '11368',\n '11369',\n '11370',\n '11371',\n '11372',\n '11373',\n '11374',\n '11375',\n '11377',\n '11378',\n '11379',\n '11385',\n '11411',\n '11412',\n '11413',\n '11414',\n '11415',\n '11416',\n '11417',\n '11418',\n '11419',\n '11420',\n '11421',\n '11422',\n '11423',\n '11427',\n '11428',\n '11429',\n '11430',\n '11432',\n '11433',\n '11434',\n '11435',\n '11436',\n '11439',\n '11691',\n '11692',\n '11693',\n '11694',\n '11697',\n ]),\n approximateCenter: { longitude: -73.82944356927189, latitude: 40.71159239822139 },\n },\n 'ny-new-york-hempstead': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Hempstead',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 8 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '11001',\n '11003',\n '11004',\n '11010',\n '11020',\n '11021',\n '11023',\n '11024',\n '11030',\n '11040',\n '11042',\n '11050',\n '11362',\n '11363',\n '11462',\n '11501',\n '11507',\n '11509',\n '11510',\n '11514',\n '11516',\n '11518',\n '11520',\n '11530',\n '11542',\n '11545',\n '11548',\n '11550',\n '11552',\n '11553',\n '11554',\n '11557',\n '11558',\n '11559',\n '11561',\n '11563',\n '11565',\n '11566',\n '11568',\n '11570',\n '11572',\n '11575',\n '11576',\n '11577',\n '11579',\n '11580',\n '11581',\n '11590',\n '11596',\n '11598',\n '11702',\n '11710',\n ]),\n approximateCenter: { longitude: -73.6534840966672, latitude: 40.71729974018663 },\n },\n 'ny-new-york-huntington-station': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Huntington Station',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '11560',\n '11701',\n '11703',\n '11704',\n '11709',\n '11714',\n '11721',\n '11724',\n '11726',\n '11729',\n '11731',\n '11732',\n '11735',\n '11740',\n '11743',\n '11746',\n '11747',\n '11753',\n '11756',\n '11757',\n '11758',\n '11762',\n '11765',\n '11768',\n '11771',\n '11783',\n '11791',\n '11793',\n '11797',\n '11798',\n '11801',\n '11803',\n '11804',\n ]),\n approximateCenter: { longitude: -73.44521452771426, latitude: 40.78484338676549 },\n },\n 'ny-new-york-farmingville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Farmingville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '11705',\n '11706',\n '11715',\n '11716',\n '11717',\n '11718',\n '11720',\n '11722',\n '11725',\n '11727',\n '11730',\n '11733',\n '11738',\n '11739',\n '11741',\n '11742',\n '11749',\n '11751',\n '11752',\n '11754',\n '11755',\n '11763',\n '11766',\n '11767',\n '11769',\n '11770',\n '11772',\n '11776',\n '11777',\n '11779',\n '11780',\n '11782',\n '11784',\n '11787',\n '11788',\n '11790',\n '11794',\n '11795',\n '11796',\n ]),\n approximateCenter: { longitude: -73.1302550665648, latitude: 40.81060934203833 },\n },\n 'ny-new-york-bellpoint': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Bellpoint',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '11713',\n '11719',\n '11764',\n '11778',\n '11786',\n '11789',\n '11792',\n '11933',\n '11934',\n '11940',\n '11941',\n '11949',\n '11950',\n '11951',\n '11953',\n '11955',\n '11960',\n '11961',\n '11967',\n '11972',\n '11977',\n '11980',\n ]),\n approximateCenter: { longitude: -72.84197107282601, latitude: 40.855817308788396 },\n },\n 'ny-new-york-suffolk': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Suffolk',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '11901',\n '11935',\n '11939',\n '11944',\n '11948',\n '11952',\n '11957',\n '11958',\n '11971',\n ]),\n approximateCenter: { longitude: -72.43741905809392, latitude: 41.05119175678514 },\n },\n 'ny-new-york-hampton-bay': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Hampton Bay',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '11930',\n '11932',\n '11937',\n '11942',\n '11946',\n '11954',\n '11959',\n '11962',\n '11963',\n '11964',\n '11965',\n '11968',\n '11975',\n '11976',\n '11978',\n ]),\n approximateCenter: { longitude: -72.34179287748094, latitude: 40.94483653805866 },\n },\n 'il-illinois-chicago-downtown': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Chicago Downtown',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '60601',\n '60602',\n '60603',\n '60604',\n '60605',\n '60606',\n '60607',\n '60608',\n '60609',\n '60610',\n '60611',\n '60612',\n '60613',\n '60614',\n '60616',\n '60618',\n '60622',\n '60623',\n '60624',\n '60642',\n '60647',\n '60651',\n '60653',\n '60654',\n '60657',\n '60661',\n ]),\n approximateCenter: { longitude: -87.65667143105337, latitude: 41.88656259363906 },\n },\n 'il-illinois-chicago-north': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Chicago (North)',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '60022',\n '60025',\n '60026',\n '60029',\n '60043',\n '60053',\n '60062',\n '60076',\n '60077',\n '60091',\n '60093',\n '60201',\n '60202',\n '60203',\n '60208',\n '60625',\n '60626',\n '60630',\n '60640',\n '60645',\n '60646',\n '60659',\n '60660',\n '60712',\n '60714',\n ]),\n approximateCenter: { longitude: -87.73697905056235, latitude: 42.040060270986935 },\n },\n 'il-illinois-barrington': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Barrington',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '60004',\n '60008',\n '60010',\n '60047',\n '60067',\n '60070',\n '60074',\n '60089',\n '60090',\n '60107',\n '60120',\n '60169',\n '60173',\n '60192',\n '60193',\n '60194',\n '60195',\n '60196',\n ]),\n approximateCenter: { longitude: -88.06957356414885, latitude: 42.08671782514423 },\n },\n 'il-illinois-chicago-west': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Chicago (West)',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '60104',\n '60130',\n '60131',\n '60141',\n '60153',\n '60154',\n '60155',\n '60160',\n '60162',\n '60163',\n '60164',\n '60165',\n '60171',\n '60301',\n '60302',\n '60304',\n '60305',\n '60402',\n '60513',\n '60525',\n '60526',\n '60534',\n '60546',\n '60558',\n '60634',\n '60639',\n '60641',\n '60644',\n '60707',\n '60804',\n ]),\n approximateCenter: { longitude: -87.83521518300607, latitude: 41.87561175343284 },\n },\n 'il-illinois-chicago-south': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Chicago (South)',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '60615',\n '60617',\n '60619',\n '60620',\n '60621',\n '60628',\n '60633',\n '60636',\n '60637',\n '60643',\n '60649',\n '60827',\n ]),\n approximateCenter: { longitude: -87.61305387684928, latitude: 41.73337703966981 },\n },\n 'il-illinois-chicago-bridgeview': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Bridgeview',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '60415',\n '60453',\n '60455',\n '60456',\n '60457',\n '60458',\n '60459',\n '60463',\n '60464',\n '60465',\n '60480',\n '60482',\n '60501',\n '60629',\n '60632',\n '60638',\n '60652',\n '60655',\n '60803',\n '60805',\n ]),\n approximateCenter: { longitude: -87.77623581160248, latitude: 41.72689254866909 },\n },\n 'il-illinois-chicago-heights': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Heights',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '60406',\n '60409',\n '60411',\n '60419',\n '60422',\n '60425',\n '60426',\n '60428',\n '60429',\n '60430',\n '60438',\n '60461',\n '60469',\n '60473',\n '60476',\n ]),\n approximateCenter: { longitude: -87.63559279222798, latitude: 41.58071556438829 },\n },\n 'il-illinois-tinley-park': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Tinley Park',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '60418',\n '60423',\n '60443',\n '60445',\n '60448',\n '60452',\n '60462',\n '60466',\n '60467',\n '60471',\n '60472',\n '60477',\n '60478',\n '60487',\n ]),\n approximateCenter: { longitude: -87.77960517737698, latitude: 41.565434813276475 },\n },\n 'il-illinois-des-plaines': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Des Plaines',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '60005',\n '60007',\n '60016',\n '60018',\n '60056',\n '60068',\n '60106',\n '60143',\n '60176',\n '60191',\n '60631',\n '60656',\n '60666',\n '60706',\n ]),\n approximateCenter: { longitude: -87.90909930139334, latitude: 41.99811931800282 },\n },\n 'ca-bay-area-merced': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Merced',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '93610',\n '95301',\n '95303',\n '95312',\n '95315',\n '95317',\n '95324',\n '95333',\n '95334',\n '95340',\n '95341',\n '95344',\n '95348',\n '95365',\n '95369',\n '95374',\n '95388',\n ]),\n approximateCenter: { longitude: -120.56493547225536, latitude: 37.33633372480324 },\n },\n 'ca-los-angeles-san-bernardino': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'San Bernardino',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 4 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 4 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 4 * MILE_IN_METERS,\n postalCodes: new Set([\n '92313',\n '92316',\n '92318',\n '92324',\n '92335',\n '92336',\n '92337',\n '92346',\n '92350',\n '92354',\n '92373',\n '92374',\n '92376',\n '92377',\n '92401',\n '92404',\n '92405',\n '92408',\n '92410',\n '92411',\n '92415',\n ]),\n approximateCenter: { longitude: -117.30531784939127, latitude: 34.08864365497061 },\n },\n 'ca-los-angeles-san-diego-north': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'San Diego (North)',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '92014',\n '92037',\n '92093',\n '92108',\n '92109',\n '92111',\n '92117',\n '92120',\n '92121',\n '92122',\n '92123',\n '92124',\n '92126',\n '92129',\n '92130',\n '92131',\n '92145',\n ]),\n approximateCenter: { longitude: -117.16798352852328, latitude: 32.862910815619195 },\n },\n 'ca-los-angeles-el-cajon': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'El Cajon',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '91941',\n '91942',\n '91977',\n '91978',\n '92019',\n '92020',\n '92021',\n '92040',\n '92071',\n '92119',\n ]),\n approximateCenter: { longitude: -116.95788329397054, latitude: 32.794948765761546 },\n },\n 'ga-georgia-albany': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Albany',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['31701', '31704', '31705', '31707', '31721', '31763', '31772', '31791']),\n approximateCenter: { longitude: -84.0955840504766, latitude: 31.592690580721985 },\n },\n 'ga-georgia-barnesville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Barnesville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30204', '30256', '30258', '30285', '30286', '30295', '31016', '31097']),\n approximateCenter: { longitude: -84.25859617107272, latitude: 32.96673163105283 },\n },\n 'ga-georgia-bunswick': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Bunswick',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['31305', '31520', '31522', '31523', '31525', '31565']),\n approximateCenter: { longitude: -81.49915073373008, latitude: 31.234591792988684 },\n },\n 'ga-georgia-calhoun': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Calhoun',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30103', '30139', '30171', '30701', '30733', '30734', '30735', '30746']),\n approximateCenter: { longitude: -84.8735080933637, latitude: 34.474534630005884 },\n },\n 'ga-georgia-cartersville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Cartersville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30101', '30120', '30121', '30132', '30137', '30178', '30184']),\n approximateCenter: { longitude: -84.81054403330201, latitude: 34.12335353171242 },\n },\n 'ga-georgia-cedartown': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Cedartown',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30104', '30113', '30125', '30153']),\n approximateCenter: { longitude: -85.15137477173882, latitude: 33.97855629611487 },\n },\n 'ga-georgia-dalton': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Dalton',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30705', '30710', '30711', '30720', '30721', '30740', '30755']),\n approximateCenter: { longitude: -84.92238984038464, latitude: 34.82455462760243 },\n },\n 'ga-georgia-douglas': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Douglas',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['31512', '31519', '31533', '31535', '31642', '31650']),\n approximateCenter: { longitude: -82.91433485298857, latitude: 31.478170559594933 },\n },\n 'ga-georgia-fitzgerald': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Fitzgerald',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['31750', '31774', '31798']),\n approximateCenter: { longitude: -83.17537457793952, latitude: 31.64882184292457 },\n },\n 'ga-georgia-hinesville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Hinesville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['31301', '31309', '31313', '31316', '31320', '31323']),\n approximateCenter: { longitude: -81.53649051250379, latitude: 31.77147336065961 },\n },\n 'ga-georgia-jesup': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Jesup',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['31545', '31546', '31555', '31560']),\n approximateCenter: { longitude: -81.97115035064776, latitude: 31.577916337375473 },\n },\n 'ga-georgia-loganville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Loganville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30017', '30039', '30045', '30047', '30052', '30078', '30087']),\n approximateCenter: { longitude: -84.00739735036342, latitude: 33.852034354182315 },\n },\n 'ga-georgia-moultrie': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Moultrie',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '31722',\n '31738',\n '31744',\n '31747',\n '31753',\n '31756',\n '31768',\n '31771',\n '31778',\n '31788',\n ]),\n approximateCenter: { longitude: -83.76925633819417, latitude: 31.147308661594014 },\n },\n 'ga-georgia-newnan': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Newnan',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30185', '30220', '30259', '30263', '30265', '30277']),\n approximateCenter: { longitude: -84.78430220515499, latitude: 33.366491708190644 },\n },\n 'ga-georgia-roswell': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Roswell',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '30004',\n '30005',\n '30009',\n '30022',\n '30071',\n '30075',\n '30076',\n '30092',\n '30319',\n '30328',\n '30338',\n '30341',\n '30342',\n '30346',\n '30350',\n '30360',\n ]),\n approximateCenter: { longitude: -84.30290744314696, latitude: 33.981256350206884 },\n },\n 'ga-georgia-st-marys': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'St. Marys',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['31547', '31548', '31558', '31569']),\n approximateCenter: { longitude: -81.6230599481872, latitude: 30.83060430098952 },\n },\n 'ga-georgia-stockbridge': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Stockbridge',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '30236',\n '30238',\n '30253',\n '30260',\n '30273',\n '30281',\n '30288',\n '30294',\n '30297',\n ]),\n approximateCenter: { longitude: -84.29541359154503, latitude: 33.567552457177854 },\n },\n 'ga-georgia-summerville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Summerville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30730', '30747', '30753']),\n approximateCenter: { longitude: -85.33159795025277, latitude: 34.48339359068682 },\n },\n 'ga-georgia-thomasville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Thomasville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['31757', '31765', '31773', '31792', '39827', '39828', '39897']),\n approximateCenter: { longitude: -84.112329216686, latitude: 30.90858697452555 },\n },\n 'ga-georgia-winder': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Winder',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['30011', '30019', '30517', '30548', '30620', '30656', '30666', '30680']),\n approximateCenter: { longitude: -83.75479332086768, latitude: 33.99553661586082 },\n },\n 'ky-kentucky-jackson': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Jackson',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['41301', '41317', '41339', '41348', '41385', '41390']),\n approximateCenter: { longitude: -83.32836226936487, latitude: 37.530107020283005 },\n },\n 'ky-kentucky-beattyville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Beattyville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40486', '41311', '41314', '41365', '41386', '41397']),\n approximateCenter: { longitude: -83.71838745362832, latitude: 37.540381075749785 },\n },\n 'ky-kentucky-columbia': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Columbia',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['42629', '42642', '42728', '42741', '42753']),\n approximateCenter: { longitude: -85.17553144047592, latitude: 37.05976949571754 },\n },\n 'ky-kentucky-franklin': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Franklin',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['42134', '42202', '42206', '42276']),\n approximateCenter: { longitude: -86.7579430004115, latitude: 36.78903994637272 },\n },\n 'ky-kentucky-georgetown': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Georgetown',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40324', '40370', '40379', '40511', '41010']),\n approximateCenter: { longitude: -84.56812901452274, latitude: 38.31786797649365 },\n },\n 'ky-kentucky-glasgow': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Glasgow',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '42123',\n '42124',\n '42127',\n '42129',\n '42130',\n '42141',\n '42154',\n '42156',\n '42157',\n '42160',\n '42163',\n '42166',\n '42171',\n '42214',\n '42749',\n ]),\n approximateCenter: { longitude: -85.87672307281213, latitude: 36.98419620404942 },\n },\n 'ky-kentucky-grayson': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Grayson',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['41132', '41143', '41146', '41164', '41168']),\n approximateCenter: { longitude: -82.92042733000721, latitude: 38.29337175334611 },\n },\n 'ky-kentucky-henderson': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Henderson',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['42406', '42420', '42451', '42452', '42455', '42458', '42462']),\n approximateCenter: { longitude: -87.55629970601986, latitude: 37.749793859794586 },\n },\n 'ky-kentucky-hopkinsville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Hopkinsville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '42215',\n '42217',\n '42220',\n '42232',\n '42236',\n '42240',\n '42262',\n '42266',\n '42286',\n ]),\n approximateCenter: { longitude: -87.46123754807633, latitude: 36.83976593305044 },\n },\n 'ky-kentucky-inez': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Inez',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '41203',\n '41214',\n '41224',\n '41231',\n '41232',\n '41250',\n '41262',\n '41264',\n '41267',\n ]),\n approximateCenter: { longitude: -82.54420317098631, latitude: 37.8430384492364 },\n },\n 'ky-kentucky-manchester': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Manchester',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40914', '40946', '40962', '40972', '40983']),\n approximateCenter: { longitude: -83.68649659836406, latitude: 37.16062541980296 },\n },\n 'ky-kentucky-middlesborough': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Middlesborough',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40813', '40856', '40965', '40977']),\n approximateCenter: { longitude: -83.6452278341372, latitude: 36.694381129430255 },\n },\n 'ky-kentucky-monticello': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Monticello',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['42633']),\n approximateCenter: { longitude: -84.82659, latitude: 36.800772 },\n },\n 'ky-kentucky-mount-vernon': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Mount Vernon',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40409', '40419', '40445', '40456', '40460']),\n approximateCenter: { longitude: -84.34147005130396, latitude: 37.37431907315697 },\n },\n 'ky-kentucky-murray': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Murray',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['42020', '42036', '42048', '42049', '42071', '42076']),\n approximateCenter: { longitude: -88.2545299815603, latitude: 36.643439822080296 },\n },\n 'ky-kentucky-owingsville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Owingsville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40334', '40337', '40346', '40353', '40358', '40360', '40371', '40374']),\n approximateCenter: { longitude: -83.7801713456118, latitude: 38.067886681941175 },\n },\n 'ky-kentucky-paducah': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Paducah',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '42001',\n '42003',\n '42027',\n '42029',\n '42053',\n '42058',\n '42069',\n '42082',\n '42086',\n ]),\n approximateCenter: { longitude: -88.63055026259372, latitude: 37.00641298899033 },\n },\n 'ky-kentucky-paintsville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Paintsville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '41204',\n '41216',\n '41219',\n '41222',\n '41234',\n '41238',\n '41240',\n '41254',\n '41255',\n '41256',\n '41257',\n '41260',\n '41263',\n '41265',\n '41268',\n '41271',\n '41274',\n '41602',\n '41653',\n ]),\n approximateCenter: { longitude: -82.79043158554342, latitude: 37.81835346109127 },\n },\n 'ky-kentucky-paris': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Paris',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40311', '40348', '40357', '40361', '40516']),\n approximateCenter: { longitude: -84.16522448840566, latitude: 38.21097686200687 },\n },\n 'ky-kentucky-pine-knot': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Pine Knot',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40769', '42634', '42635', '42638', '42647', '42649', '42653']),\n approximateCenter: { longitude: -84.42604748701963, latitude: 36.71977859423148 },\n },\n 'ky-kentucky-scottsville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Scottsville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['42120', '42153', '42164']),\n approximateCenter: { longitude: -86.1700469317517, latitude: 36.71169232398409 },\n },\n 'ky-kentucky-stanton': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Stanton',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40312', '40336', '40376', '40380', '40472']),\n approximateCenter: { longitude: -83.85897095454716, latitude: 37.77325512883218 },\n },\n 'ky-kentucky-winchester': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Winchester',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40391']),\n approximateCenter: { longitude: -84.145115, latitude: 37.970314 },\n },\n 'ky-kentucky-salyersville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Salyersville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['41310', '41366', '41464', '41465']),\n approximateCenter: { longitude: -83.12907680103575, latitude: 37.66108904383057 },\n },\n 'ky-kentucky-pricetown': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Pricetown',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['40442', '40489', '42516', '42528', '42539', '42541', '42565', '42566']),\n approximateCenter: { longitude: -84.83103259898122, latitude: 37.27522522674367 },\n },\n 'ky-kentucky-louisa': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Louisa',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['41124', '41180', '41201', '41230']),\n approximateCenter: { longitude: -82.79339505599408, latitude: 38.07408331374362 },\n },\n 'ky-kentucky-bardstown': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Bardstown',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '40004',\n '40008',\n '40013',\n '40037',\n '40040',\n '40051',\n '40052',\n '40061',\n '40062',\n '40069',\n '40078',\n ]),\n approximateCenter: { longitude: -85.34909649115919, latitude: 37.74726490509011 },\n },\n 'ca-los-angeles-downey': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Downey',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 10 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '90058',\n '90201',\n '90241',\n '90242',\n '90255',\n '90262',\n '90270',\n '90280',\n '90650',\n '90706',\n '90723',\n '90805',\n ]),\n approximateCenter: { longitude: -118.16782348449641, latitude: 33.9358784903562 },\n },\n 'ca-los-angeles-ramona': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Ramona',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 6 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 6 * MILE_IN_METERS,\n postalCodes: new Set(['92064', '92065', '92128']),\n approximateCenter: { longitude: -116.97222232055285, latitude: 33.00727326742293 },\n },\n 'fl-florida-homestead': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Homestead',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 12 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 3 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 3 * MILE_IN_METERS,\n postalCodes: new Set([\n '33030',\n '33031',\n '33032',\n '33033',\n '33034',\n '33035',\n '33039',\n '33129',\n '33133',\n '33134',\n '33135',\n '33143',\n '33144',\n '33145',\n '33146',\n '33155',\n '33156',\n '33157',\n '33158',\n '33165',\n '33170',\n '33173',\n '33174',\n '33175',\n '33176',\n '33177',\n '33183',\n '33184',\n '33185',\n '33186',\n '33187',\n '33189',\n '33190',\n '33193',\n '33194',\n '33199',\n ]),\n approximateCenter: { longitude: -80.38341003552908, latitude: 25.65122326251867 },\n },\n 'ky-kentucky-bowling-green': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Bowling Green',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['42101', '42103', '42104', '42122', '42159', '42170', '42274']),\n approximateCenter: { longitude: -86.43006584743281, latitude: 36.93730007643381 },\n },\n 'mi-michigan-berrien-springs': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Berrien Springs',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '49022',\n '49031',\n '49047',\n '49085',\n '49101',\n '49102',\n '49103',\n '49104',\n '49106',\n '49107',\n '49111',\n '49112',\n '49113',\n '49115',\n '49116',\n '49117',\n '49119',\n '49120',\n '49125',\n '49126',\n '49127',\n '49128',\n '49129',\n ]),\n approximateCenter: { longitude: -86.42496599609905, latitude: 41.91572154838985 },\n },\n 'mi-michigan-howell': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Howell',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['48137', '48169', '48819', '48836', '48843', '48855', '48892', '49285']),\n approximateCenter: { longitude: -84.07409902278069, latitude: 42.56398910435487 },\n },\n 'mi-michigan-jackson': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Jackson',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 15 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '49201',\n '49202',\n '49203',\n '49230',\n '49233',\n '49234',\n '49237',\n '49240',\n '49241',\n '49246',\n '49251',\n '49254',\n '49259',\n '49261',\n '49263',\n '49264',\n '49269',\n '49272',\n '49277',\n '49283',\n ]),\n approximateCenter: { longitude: -84.40448449203397, latitude: 42.24342622004317 },\n },\n 'ca-bay-area-los-banos': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Los_Angeles',\n displayName: 'Los Banos',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['93620', '93622', '93635', '93665', '95322']),\n approximateCenter: { longitude: -120.7593731775226, latitude: 36.99902786484057 },\n },\n 'in-indiana-lebanon': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Lebanon',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46032',\n '46035',\n '46039',\n '46041',\n '46049',\n '46050',\n '46052',\n '46057',\n '46069',\n '46071',\n '46074',\n '46075',\n '46077',\n '46147',\n '46280',\n '46290',\n '47940',\n ]),\n approximateCenter: { longitude: -86.37362925465213, latitude: 40.114760075381476 },\n },\n 'in-indiana-avon': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Avon',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46103',\n '46112',\n '46118',\n '46121',\n '46122',\n '46123',\n '46149',\n '46165',\n '46167',\n '46168',\n '46180',\n ]),\n approximateCenter: { longitude: -86.53050773826715, latitude: 39.756869922018794 },\n },\n 'in-indiana-fishersburg': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Fishersburg',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46001',\n '46011',\n '46012',\n '46013',\n '46016',\n '46030',\n '46031',\n '46033',\n '46034',\n '46036',\n '46037',\n '46038',\n '46044',\n '46051',\n '46060',\n '46062',\n '46064',\n '46068',\n '46072',\n '46076',\n ]),\n approximateCenter: { longitude: -85.89257360364628, latitude: 40.14001113611632 },\n },\n 'in-indiana-franklin': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Franklin',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['46106', '46131', '46142', '46143', '46162', '46164', '46181', '46184']),\n approximateCenter: { longitude: -86.10652416440367, latitude: 39.49912073544286 },\n },\n 'in-indiana-hancock': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Hancock',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '46040',\n '46055',\n '46056',\n '46104',\n '46115',\n '46117',\n '46130',\n '46140',\n '46144',\n '46154',\n '46161',\n '46163',\n '46186',\n '47351',\n '47384',\n ]),\n approximateCenter: { longitude: -85.69810470316538, latitude: 39.80681180097677 },\n },\n 'in-indiana-morgan': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Morgan',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['46111', '46113', '46151', '46157', '46158', '46160', '46166']),\n approximateCenter: { longitude: -86.40710563743488, latitude: 39.50716406362343 },\n },\n 'in-indiana-shelbyville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Shelbyville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['46110', '46126', '46176', '46182', '47234']),\n approximateCenter: { longitude: -85.80080791563239, latitude: 39.50775270767625 },\n },\n 'ky-kentucky-shelbyville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Shelbyville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '40010',\n '40014',\n '40019',\n '40022',\n '40023',\n '40026',\n '40031',\n '40046',\n '40050',\n '40055',\n '40056',\n '40059',\n '40065',\n '40067',\n '40068',\n '40070',\n '40071',\n '40245',\n ]),\n approximateCenter: { longitude: -85.35649611729673, latitude: 38.30579861765505 },\n },\n 'ny-new-york-niagara-falls': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Niagara Falls',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '14008',\n '14012',\n '14028',\n '14032',\n '14051',\n '14067',\n '14068',\n '14072',\n '14092',\n '14094',\n '14105',\n '14108',\n '14120',\n '14131',\n '14132',\n '14172',\n '14174',\n '14228',\n '14301',\n '14303',\n '14304',\n '14305',\n ]),\n approximateCenter: { longitude: -78.80218539192772, latitude: 43.160247925811944 },\n },\n 'ny-new-york-albany': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Albany',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '12018',\n '12033',\n '12047',\n '12054',\n '12061',\n '12063',\n '12077',\n '12110',\n '12123',\n '12140',\n '12144',\n '12158',\n '12159',\n '12180',\n '12182',\n '12183',\n '12189',\n '12196',\n '12198',\n '12202',\n '12203',\n '12204',\n '12205',\n '12206',\n '12207',\n '12208',\n '12209',\n '12210',\n '12211',\n ]),\n approximateCenter: { longitude: -73.72273656473263, latitude: 42.65952887489795 },\n },\n 'ny-new-york-amsterdam': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Amsterdam',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '12010',\n '12025',\n '12068',\n '12069',\n '12070',\n '12072',\n '12074',\n '12078',\n '12086',\n '12095',\n '12117',\n '12134',\n '12166',\n '12177',\n '13317',\n '13339',\n '13410',\n '13428',\n '13452',\n ]),\n approximateCenter: { longitude: -74.35663690069948, latitude: 42.99612597370081 },\n },\n 'ny-new-york-auburn': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Auburn',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '13021',\n '13022',\n '13033',\n '13034',\n '13060',\n '13080',\n '13108',\n '13110',\n '13112',\n '13117',\n '13119',\n '13140',\n '13146',\n '13147',\n '13148',\n '13152',\n '13153',\n '13160',\n '13165',\n '13166',\n ]),\n approximateCenter: { longitude: -76.55833763968434, latitude: 42.9842052582891 },\n },\n 'ny-new-york-binghamton': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Binghamton',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '13732',\n '13744',\n '13746',\n '13748',\n '13760',\n '13777',\n '13778',\n '13787',\n '13790',\n '13795',\n '13797',\n '13802',\n '13811',\n '13826',\n '13827',\n '13833',\n '13850',\n '13862',\n '13865',\n '13901',\n '13903',\n '13904',\n '13905',\n ]),\n approximateCenter: { longitude: -75.91484721841151, latitude: 42.17191577762228 },\n },\n 'ny-new-york-batavia': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Batavia',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '14001',\n '14004',\n '14005',\n '14013',\n '14020',\n '14036',\n '14040',\n '14054',\n '14056',\n '14058',\n '14098',\n '14103',\n '14125',\n '14143',\n '14411',\n '14416',\n '14422',\n '14470',\n '14476',\n '14477',\n '14479',\n '14482',\n '14571',\n ]),\n approximateCenter: { longitude: -78.23369871542465, latitude: 43.096043974454496 },\n },\n 'ny-new-york-brewers-corner': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Brewers Corner',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '13032',\n '13035',\n '13037',\n '13054',\n '13104',\n '13163',\n '13308',\n '13310',\n '13323',\n '13328',\n '13402',\n '13408',\n '13409',\n '13421',\n '13425',\n '13440',\n '13461',\n '13476',\n '13477',\n '13478',\n '13490',\n ]),\n approximateCenter: { longitude: -75.61030322738067, latitude: 43.04534474824147 },\n },\n 'ny-new-york-elmira': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Elmira',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '13734',\n '13743',\n '13812',\n '14801',\n '14812',\n '14814',\n '14815',\n '14816',\n '14821',\n '14824',\n '14825',\n '14830',\n '14838',\n '14845',\n '14858',\n '14859',\n '14861',\n '14864',\n '14865',\n '14870',\n '14871',\n '14872',\n '14879',\n '14883',\n '14889',\n '14891',\n '14892',\n '14894',\n '14901',\n '14903',\n '14904',\n '14905',\n ]),\n approximateCenter: { longitude: -76.81059642380507, latitude: 42.170294011586954 },\n },\n 'ny-new-york-glens-falls': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Glens Falls',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '12801',\n '12803',\n '12804',\n '12809',\n '12822',\n '12827',\n '12828',\n '12831',\n '12833',\n '12834',\n '12839',\n '12845',\n '12846',\n '12850',\n '12859',\n '12863',\n '12866',\n '12871',\n '12884',\n ]),\n approximateCenter: { longitude: -73.69962064929905, latitude: 43.2236178454041 },\n },\n 'ny-new-york-oneonta': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Oneonta',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '13730',\n '13733',\n '13753',\n '13754',\n '13757',\n '13775',\n '13776',\n '13780',\n '13782',\n '13783',\n '13796',\n '13804',\n '13808',\n '13809',\n '13813',\n '13815',\n '13820',\n '13825',\n '13830',\n '13838',\n '13839',\n '13843',\n '13846',\n '13849',\n '13856',\n '13861',\n ]),\n approximateCenter: { longitude: -75.28012822302814, latitude: 42.34678159487251 },\n },\n 'ny-new-york-oswego': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Oswego',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '13027',\n '13029',\n '13036',\n '13041',\n '13069',\n '13074',\n '13076',\n '13114',\n '13126',\n '13131',\n '13132',\n '13135',\n '13142',\n ]),\n approximateCenter: { longitude: -76.26652763140994, latitude: 43.33212757792562 },\n },\n 'ny-new-york-rochester': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Rochester',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '14420',\n '14428',\n '14445',\n '14450',\n '14464',\n '14467',\n '14468',\n '14472',\n '14502',\n '14506',\n '14514',\n '14519',\n '14526',\n '14534',\n '14543',\n '14546',\n '14559',\n '14564',\n '14580',\n '14586',\n '14604',\n '14605',\n '14606',\n '14607',\n '14608',\n '14609',\n '14610',\n '14611',\n '14612',\n '14613',\n '14614',\n '14615',\n '14616',\n '14617',\n '14618',\n '14619',\n '14620',\n '14621',\n '14622',\n '14623',\n '14624',\n '14625',\n '14626',\n '14627',\n ]),\n approximateCenter: { longitude: -77.61988255217085, latitude: 43.14139384931448 },\n },\n 'ny-new-york-schenectady': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Schenectady',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '12008',\n '12009',\n '12019',\n '12020',\n '12027',\n '12056',\n '12065',\n '12084',\n '12118',\n '12121',\n '12137',\n '12148',\n '12150',\n '12151',\n '12154',\n '12170',\n '12188',\n '12302',\n '12303',\n '12304',\n '12305',\n '12306',\n '12307',\n '12308',\n '12309',\n ]),\n approximateCenter: { longitude: -73.88080598212848, latitude: 42.847633471503826 },\n },\n 'ny-new-york-dunkirk': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Dunkirk',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '14006',\n '14034',\n '14041',\n '14047',\n '14048',\n '14057',\n '14062',\n '14063',\n '14070',\n '14081',\n '14085',\n '14091',\n '14111',\n '14129',\n '14135',\n '14136',\n '14138',\n '14701',\n '14710',\n '14712',\n '14716',\n '14718',\n '14719',\n '14720',\n '14722',\n '14723',\n '14724',\n '14726',\n '14728',\n '14732',\n '14733',\n '14736',\n '14738',\n '14740',\n '14742',\n '14747',\n '14750',\n '14752',\n '14755',\n '14756',\n '14757',\n '14767',\n '14769',\n '14772',\n '14775',\n '14779',\n '14781',\n '14782',\n '14783',\n '14784',\n '14785',\n '14787',\n ]),\n approximateCenter: { longitude: -79.21144656011597, latitude: 42.30594857953185 },\n },\n 'ny-new-york-syracuse': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Syracuse',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '13030',\n '13031',\n '13039',\n '13057',\n '13066',\n '13078',\n '13082',\n '13088',\n '13090',\n '13116',\n '13120',\n '13164',\n '13202',\n '13203',\n '13204',\n '13205',\n '13206',\n '13207',\n '13208',\n '13209',\n '13210',\n '13211',\n '13212',\n '13214',\n '13215',\n '13219',\n '13224',\n '13244',\n ]),\n approximateCenter: { longitude: -76.13052245968314, latitude: 43.062271995439126 },\n },\n 'il-illinois-aurora': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Aurora',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '60119',\n '60123',\n '60124',\n '60134',\n '60174',\n '60175',\n '60183',\n '60502',\n '60503',\n '60504',\n '60505',\n '60506',\n '60510',\n '60511',\n '60512',\n '60538',\n '60539',\n '60542',\n '60543',\n '60545',\n '60554',\n '60555',\n '60560',\n '60563',\n ]),\n approximateCenter: { longitude: -88.35504289558995, latitude: 41.80775568290726 },\n },\n 'il-illinois-bloomington': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Bloomington',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '61568',\n '61701',\n '61704',\n '61705',\n '61721',\n '61722',\n '61723',\n '61724',\n '61725',\n '61729',\n '61730',\n '61732',\n '61733',\n '61734',\n '61735',\n '61736',\n '61737',\n '61738',\n '61742',\n '61745',\n '61747',\n '61748',\n '61751',\n '61752',\n '61753',\n '61754',\n '61755',\n '61759',\n '61761',\n '61771',\n '61772',\n '61774',\n '61776',\n '61777',\n '61778',\n '61790',\n '61842',\n '62512',\n '62635',\n '62643',\n '62656',\n '62682',\n ]),\n approximateCenter: { longitude: -89.10269747686496, latitude: 40.424584064619204 },\n },\n 'il-illinois-cambridge': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Cambridge',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '61201',\n '61230',\n '61232',\n '61233',\n '61238',\n '61239',\n '61240',\n '61241',\n '61242',\n '61244',\n '61250',\n '61251',\n '61252',\n '61254',\n '61256',\n '61257',\n '61261',\n '61262',\n '61264',\n '61265',\n '61270',\n '61273',\n '61274',\n '61275',\n '61279',\n '61281',\n '61282',\n '61284',\n '61465',\n '61468',\n '61486',\n '61490',\n ]),\n approximateCenter: { longitude: -90.3530107505532, latitude: 41.472898005946476 },\n },\n 'il-illinois-canton': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Canton',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '61427',\n '61517',\n '61519',\n '61520',\n '61529',\n '61531',\n '61533',\n '61534',\n '61536',\n '61542',\n '61546',\n '61553',\n '61563',\n '61569',\n ]),\n approximateCenter: { longitude: -89.95368891971025, latitude: 40.57896784950625 },\n },\n 'il-illinois-chillicothe': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Chillicothe',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '61421',\n '61479',\n '61483',\n '61491',\n '61523',\n '61525',\n '61526',\n '61530',\n '61537',\n '61540',\n '61545',\n '61548',\n '61559',\n '61561',\n '61565',\n '61570',\n ]),\n approximateCenter: { longitude: -89.52478782025527, latitude: 40.950745370249386 },\n },\n 'il-illinois-decatur': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Decatur',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '61727',\n '61749',\n '61750',\n '61756',\n '61818',\n '61830',\n '61839',\n '61854',\n '61856',\n '61882',\n '61925',\n '61929',\n '61936',\n '61937',\n '62501',\n '62513',\n '62514',\n '62518',\n '62521',\n '62522',\n '62523',\n '62526',\n '62535',\n '62537',\n '62539',\n '62543',\n '62544',\n '62547',\n '62548',\n '62549',\n '62550',\n '62551',\n '62554',\n '62573',\n ]),\n approximateCenter: { longitude: -88.93388573963563, latitude: 39.90899954447608 },\n },\n 'il-illinois-dupage': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Dupage',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '60101',\n '60103',\n '60108',\n '60126',\n '60133',\n '60137',\n '60139',\n '60148',\n '60157',\n '60172',\n '60177',\n '60181',\n '60184',\n '60185',\n '60187',\n '60188',\n '60189',\n '60190',\n '60514',\n '60515',\n '60521',\n '60523',\n '60527',\n '60559',\n ]),\n approximateCenter: { longitude: -88.0726543626245, latitude: 41.88936412581674 },\n },\n 'il-illinois-galesburg': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Galesburg',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '61401',\n '61410',\n '61411',\n '61412',\n '61413',\n '61414',\n '61415',\n '61417',\n '61419',\n '61422',\n '61423',\n '61428',\n '61430',\n '61431',\n '61432',\n '61434',\n '61435',\n '61436',\n '61438',\n '61439',\n '61447',\n '61448',\n '61449',\n '61451',\n '61453',\n '61458',\n '61459',\n '61462',\n '61466',\n '61467',\n '61470',\n '61472',\n '61473',\n '61474',\n '61475',\n '61477',\n '61478',\n '61482',\n '61485',\n '61488',\n '61489',\n '61544',\n '61572',\n ]),\n approximateCenter: { longitude: -90.36650998008807, latitude: 40.848460049788464 },\n },\n 'il-illinois-gurnee': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Gurnee',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '60015',\n '60031',\n '60035',\n '60037',\n '60044',\n '60045',\n '60048',\n '60061',\n '60064',\n '60069',\n '60083',\n '60085',\n '60087',\n '60088',\n '60096',\n '60099',\n ]),\n approximateCenter: { longitude: -87.88273940853841, latitude: 42.31657408521844 },\n },\n 'il-illinois-jacksonville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Jacksonville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '61440',\n '61441',\n '61452',\n '61484',\n '61501',\n '62082',\n '62601',\n '62611',\n '62612',\n '62617',\n '62618',\n '62621',\n '62624',\n '62627',\n '62628',\n '62631',\n '62638',\n '62639',\n '62644',\n '62650',\n '62655',\n '62665',\n '62668',\n '62681',\n '62691',\n '62694',\n '62695',\n ]),\n approximateCenter: { longitude: -90.31427790209686, latitude: 39.95231485538184 },\n },\n 'il-illinois-joilet': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Joilet',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '60403',\n '60404',\n '60431',\n '60432',\n '60433',\n '60435',\n '60436',\n '60439',\n '60440',\n '60441',\n '60446',\n '60451',\n '60490',\n '60491',\n '60516',\n '60517',\n '60532',\n '60540',\n '60544',\n '60561',\n '60564',\n '60565',\n '60585',\n '60586',\n ]),\n approximateCenter: { longitude: -88.09975051654965, latitude: 41.6309999519555 },\n },\n 'il-illinois-kewanee': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Kewanee',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '61042',\n '61071',\n '61234',\n '61235',\n '61243',\n '61258',\n '61277',\n '61283',\n '61310',\n '61314',\n '61315',\n '61323',\n '61330',\n '61337',\n '61338',\n '61344',\n '61345',\n '61346',\n '61349',\n '61356',\n '61359',\n '61361',\n '61367',\n '61368',\n '61374',\n '61376',\n '61379',\n '61443',\n ]),\n approximateCenter: { longitude: -89.61043761560218, latitude: 41.47462769281591 },\n },\n 'il-illinois-mchenry': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Mchenry',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '60002',\n '60020',\n '60030',\n '60041',\n '60042',\n '60046',\n '60050',\n '60051',\n '60060',\n '60073',\n '60081',\n '60084',\n ]),\n approximateCenter: { longitude: -88.14595034011371, latitude: 42.357030737986456 },\n },\n 'il-illinois-ottawa': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Ottawa',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '60518',\n '60531',\n '60549',\n '60551',\n '60557',\n '61301',\n '61312',\n '61316',\n '61317',\n '61320',\n '61322',\n '61325',\n '61326',\n '61327',\n '61329',\n '61332',\n '61334',\n '61335',\n '61336',\n '61340',\n '61341',\n '61342',\n '61348',\n '61350',\n '61354',\n '61360',\n '61362',\n '61363',\n '61370',\n '61371',\n '61372',\n '61373',\n '61560',\n ]),\n approximateCenter: { longitude: -89.05280442039177, latitude: 41.3467439517379 },\n },\n 'il-illinois-peoria': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Peoria',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '61528',\n '61535',\n '61547',\n '61550',\n '61552',\n '61554',\n '61564',\n '61571',\n '61602',\n '61603',\n '61604',\n '61605',\n '61606',\n '61607',\n '61610',\n '61611',\n '61614',\n '61615',\n '61616',\n '61625',\n '61635',\n ]),\n approximateCenter: { longitude: -89.60107356262297, latitude: 40.67558644313628 },\n },\n 'il-illinois-pontiac': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Pontiac',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '60420',\n '60437',\n '60460',\n '60470',\n '60929',\n '60934',\n '61311',\n '61313',\n '61319',\n '61321',\n '61333',\n '61358',\n '61364',\n '61369',\n '61375',\n '61377',\n '61516',\n '61541',\n '61726',\n '61739',\n '61740',\n '61741',\n '61743',\n '61744',\n '61760',\n '61764',\n '61769',\n ]),\n approximateCenter: { longitude: -88.7716160283768, latitude: 40.95394401670268 },\n },\n 'il-illinois-springfield': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Springfield',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '61532',\n '61543',\n '61567',\n '62515',\n '62517',\n '62520',\n '62530',\n '62531',\n '62536',\n '62545',\n '62558',\n '62561',\n '62563',\n '62613',\n '62615',\n '62625',\n '62629',\n '62633',\n '62634',\n '62642',\n '62661',\n '62664',\n '62666',\n '62670',\n '62671',\n '62673',\n '62675',\n '62677',\n '62684',\n '62688',\n '62693',\n '62701',\n '62702',\n '62703',\n '62704',\n '62707',\n '62711',\n '62712',\n ]),\n approximateCenter: { longitude: -89.66560395207178, latitude: 39.89230688871509 },\n },\n 'il-illinois-woodstock': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/Chicago',\n displayName: 'Woodstock',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 17 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '60012',\n '60013',\n '60014',\n '60021',\n '60033',\n '60034',\n '60071',\n '60072',\n '60097',\n '60098',\n '60102',\n '60110',\n '60118',\n '60136',\n '60142',\n '60152',\n '60156',\n '60180',\n ]),\n approximateCenter: { longitude: -88.37672681771069, latitude: 42.262696406033925 },\n },\n 'sc-south-carolina-bennettsville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Bennettsville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29512', '29516', '29520', '29525', '29567', '29570', '29596']),\n approximateCenter: { longitude: -79.66052102169836, latitude: 34.61125570804937 },\n },\n 'sc-south-carolina-camden': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Camden',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29010',\n '29020',\n '29032',\n '29040',\n '29045',\n '29078',\n '29128',\n '29130',\n '29175',\n ]),\n approximateCenter: { longitude: -80.58346680387824, latitude: 34.241457974245996 },\n },\n 'sc-south-carolina-charleston': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Charleston',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29401',\n '29403',\n '29404',\n '29405',\n '29406',\n '29407',\n '29409',\n '29410',\n '29412',\n '29414',\n '29418',\n '29424',\n '29425',\n '29439',\n '29455',\n '29464',\n '29466',\n '29487',\n '29492',\n ]),\n approximateCenter: { longitude: -79.98497786734654, latitude: 32.81216461153607 },\n },\n 'sc-south-carolina-chester': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Chester',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29014', '29180', '29706', '29726', '29729', '29742']),\n approximateCenter: { longitude: -81.18028257117862, latitude: 34.67079259556096 },\n },\n 'sc-south-carolina-columbia': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Columbia',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29016',\n '29033',\n '29063',\n '29169',\n '29201',\n '29203',\n '29204',\n '29205',\n '29206',\n '29207',\n '29208',\n '29210',\n '29212',\n '29223',\n '29229',\n ]),\n approximateCenter: { longitude: -81.02486615655567, latitude: 34.054996557311455 },\n },\n 'sc-south-carolina-eastover': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Eastover',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29044', '29052', '29061', '29209']),\n approximateCenter: { longitude: -80.80934607179562, latitude: 33.887106377306225 },\n },\n 'sc-south-carolina-florence': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Florence',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29046',\n '29069',\n '29080',\n '29161',\n '29501',\n '29505',\n '29506',\n '29532',\n '29541',\n ]),\n approximateCenter: { longitude: -79.89356696819718, latitude: 34.14471244338462 },\n },\n 'sc-south-carolina-gaffney': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Gaffney',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29330', '29340', '29341', '29372', '29702', '29717', '29743']),\n approximateCenter: { longitude: -81.59423363732643, latitude: 35.02002349447018 },\n },\n 'sc-south-carolina-greenville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Greenville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29601',\n '29605',\n '29607',\n '29609',\n '29611',\n '29613',\n '29615',\n '29617',\n '29640',\n '29642',\n '29650',\n '29661',\n '29662',\n '29671',\n '29673',\n '29680',\n '29681',\n '29687',\n '29690',\n ]),\n approximateCenter: { longitude: -82.41337828340816, latitude: 34.86459412601891 },\n },\n 'sc-south-carolina-greenwood': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Greenwood',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29620', '29646', '29649', '29653', '29666', '29819', '29848']),\n approximateCenter: { longitude: -82.17406515275441, latitude: 34.14196367120548 },\n },\n 'sc-south-carolina-hardeeville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Hardeeville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29909', '29910', '29926', '29927', '29928', '29936']),\n approximateCenter: { longitude: -80.87572855210983, latitude: 32.2815738918593 },\n },\n 'sc-south-carolina-hartsville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Hartsville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29101', '29540', '29550', '29584', '29593']),\n approximateCenter: { longitude: -80.0165123406993, latitude: 34.465783258852554 },\n },\n 'sc-south-carolina-lake-city': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Lake City',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29114', '29162', '29518', '29530', '29555', '29560', '29583', '29591']),\n approximateCenter: { longitude: -79.758500290796, latitude: 33.90390848357449 },\n },\n 'sc-south-carolina-lancaster': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Lancaster',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29055', '29058', '29067', '29074', '29714', '29720', '29728']),\n approximateCenter: { longitude: -80.72545382922783, latitude: 34.61953840717811 },\n },\n 'sc-south-carolina-laurens': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Laurens',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29332',\n '29360',\n '29370',\n '29384',\n '29638',\n '29639',\n '29644',\n '29645',\n '29654',\n '29692',\n ]),\n approximateCenter: { longitude: -82.17631647107838, latitude: 34.42696503032323 },\n },\n 'sc-south-carolina-lexington': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Lexington',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29006',\n '29053',\n '29054',\n '29070',\n '29072',\n '29073',\n '29105',\n '29123',\n '29129',\n '29137',\n '29160',\n '29164',\n '29170',\n '29172',\n ]),\n approximateCenter: { longitude: -81.32294577059213, latitude: 33.83211729862711 },\n },\n 'sc-south-carolina-little-river': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Little River',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29566', '29568', '29569', '29572', '29582']),\n approximateCenter: { longitude: -78.75362729510087, latitude: 33.88739078535283 },\n },\n 'sc-south-carolina-manning': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Manning',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29001',\n '29056',\n '29102',\n '29111',\n '29148',\n '29479',\n '29556',\n '29564',\n '29590',\n ]),\n approximateCenter: { longitude: -80.01074121481962, latitude: 33.60641504897511 },\n },\n 'sc-south-carolina-marion': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Marion',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29536',\n '29543',\n '29547',\n '29563',\n '29565',\n '29571',\n '29574',\n '29581',\n '29592',\n ]),\n approximateCenter: { longitude: -79.3253597382037, latitude: 34.29411316775026 },\n },\n 'sc-south-carolina-myrtle-beach': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Myrtle Beach',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29575', '29576', '29577', '29579', '29585', '29588']),\n approximateCenter: { longitude: -78.99270888400002, latitude: 33.64838784348989 },\n },\n 'sc-south-carolina-newberry': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Newberry',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29015',\n '29036',\n '29037',\n '29065',\n '29075',\n '29108',\n '29126',\n '29127',\n '29138',\n '29145',\n '29351',\n '29355',\n ]),\n approximateCenter: { longitude: -81.5782258318745, latitude: 34.25847640473838 },\n },\n 'sc-south-carolina-north-augusta': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'North Augusta',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29801',\n '29803',\n '29805',\n '29821',\n '29824',\n '29828',\n '29829',\n '29831',\n '29841',\n '29842',\n '29847',\n '29851',\n '29860',\n ]),\n approximateCenter: { longitude: -81.8550210516349, latitude: 33.56796171680125 },\n },\n 'sc-south-carolina-port-royal': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Port Royal',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29902', '29906', '29907', '29920', '29935', '29940', '29941']),\n approximateCenter: { longitude: -80.68295589668125, latitude: 32.4388576677709 },\n },\n 'sc-south-carolina-red-hill': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Red Hill',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29511', '29526', '29527', '29544', '29546']),\n approximateCenter: { longitude: -79.16178785263544, latitude: 33.90284204934927 },\n },\n 'sc-south-carolina-spartanburg': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Spartanburg',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29301',\n '29302',\n '29303',\n '29306',\n '29307',\n '29316',\n '29320',\n '29322',\n '29323',\n '29334',\n '29346',\n '29349',\n '29356',\n '29365',\n '29369',\n '29376',\n '29377',\n '29378',\n '29385',\n '29388',\n '29651',\n ]),\n approximateCenter: { longitude: -82.0239878222858, latitude: 34.96765639419574 },\n },\n 'sc-south-carolina-summerville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Summerville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29420', '29445', '29456', '29461', '29472', '29483', '29485', '29486']),\n approximateCenter: { longitude: -80.14019302615527, latitude: 33.0257859556829 },\n },\n 'sc-south-carolina-sumter': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Sumter',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29051', '29104', '29125', '29150', '29152', '29153', '29154', '29168']),\n approximateCenter: { longitude: -80.36010888128412, latitude: 33.87233769134814 },\n },\n 'sc-south-carolina-union': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Union',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set(['29031', '29178', '29321', '29325', '29335', '29353', '29374', '29379']),\n approximateCenter: { longitude: -81.70086441106245, latitude: 34.656645210964456 },\n },\n 'sc-south-carolina-walterboro': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Walterboro',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29082',\n '29435',\n '29471',\n '29474',\n '29475',\n '29477',\n '29481',\n '29488',\n '29493',\n '29929',\n '29945',\n ]),\n approximateCenter: { longitude: -80.72844256192391, latitude: 32.993353870821785 },\n },\n 'sc-south-carolina-westminster': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Westminster',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29630',\n '29631',\n '29634',\n '29643',\n '29672',\n '29676',\n '29678',\n '29686',\n '29691',\n '29693',\n '29696',\n ]),\n approximateCenter: { longitude: -82.96131956574916, latitude: 34.73713364752671 },\n },\n 'sc-south-carolina-wilkinson-heights': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Wilkinson Heights',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29018',\n '29030',\n '29038',\n '29039',\n '29047',\n '29107',\n '29112',\n '29113',\n '29115',\n '29117',\n '29118',\n '29133',\n '29135',\n '29142',\n '29432',\n ]),\n approximateCenter: { longitude: -80.83654529668978, latitude: 33.47609115409867 },\n },\n 'va-virginia-arlington': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Arlington',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '20041',\n '20170',\n '20171',\n '20190',\n '20191',\n '20192',\n '20194',\n '22003',\n '22015',\n '22027',\n '22030',\n '22031',\n '22032',\n '22033',\n '22035',\n '22039',\n '22041',\n '22042',\n '22043',\n '22044',\n '22046',\n '22060',\n '22066',\n '22067',\n '22079',\n '22101',\n '22102',\n '22124',\n '22150',\n '22151',\n '22152',\n '22153',\n '22180',\n '22181',\n '22182',\n '22201',\n '22202',\n '22203',\n '22204',\n '22205',\n '22206',\n '22207',\n '22209',\n '22211',\n '22213',\n '22214',\n '22301',\n '22302',\n '22303',\n '22304',\n '22305',\n '22306',\n '22307',\n '22308',\n '22309',\n '22310',\n '22311',\n '22312',\n '22314',\n '22315',\n ]),\n approximateCenter: { longitude: -77.19020507826474, latitude: 38.84875128445293 },\n },\n 'va-virginia-charlottesville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Charlottesville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '22901',\n '22902',\n '22903',\n '22904',\n '22911',\n '22923',\n '22932',\n '22936',\n '22940',\n '22942',\n '22947',\n '22959',\n '22963',\n '22968',\n '22974',\n '23022',\n '23038',\n '23055',\n '23084',\n '23093',\n '24590',\n ]),\n approximateCenter: { longitude: -78.38540643549594, latitude: 37.996465691880246 },\n },\n 'va-virginia-danville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Danville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '24520',\n '24527',\n '24531',\n '24539',\n '24540',\n '24541',\n '24549',\n '24557',\n '24558',\n '24563',\n '24565',\n '24566',\n '24569',\n '24577',\n '24586',\n '24592',\n '24594',\n '24597',\n ]),\n approximateCenter: { longitude: -79.21139291481771, latitude: 36.778968419292404 },\n },\n 'va-virginia-fredericksburg': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Fredericksburg',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '20112',\n '22025',\n '22026',\n '22134',\n '22172',\n '22191',\n '22192',\n '22193',\n '22401',\n '22405',\n '22406',\n '22407',\n '22408',\n '22551',\n '22553',\n '22554',\n '22556',\n '22580',\n ]),\n approximateCenter: { longitude: -77.44183289222494, latitude: 38.43756351772867 },\n },\n 'va-virginia-harrisonburg': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Harrisonburg',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '22801',\n '22802',\n '22807',\n '22812',\n '22815',\n '22821',\n '22827',\n '22830',\n '22831',\n '22832',\n '22834',\n '22840',\n '22841',\n '22843',\n '22846',\n '22850',\n '22939',\n '22980',\n '24401',\n '24421',\n '24431',\n '24437',\n '24441',\n '24467',\n '24471',\n '24477',\n '24482',\n '24486',\n ]),\n approximateCenter: { longitude: -78.9257710815412, latitude: 38.35206056099875 },\n },\n 'va-virginia-leesburg': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Leesburg',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '20105',\n '20109',\n '20110',\n '20111',\n '20120',\n '20121',\n '20124',\n '20136',\n '20143',\n '20147',\n '20148',\n '20151',\n '20152',\n '20155',\n '20164',\n '20165',\n '20166',\n '20169',\n '20175',\n '20176',\n ]),\n approximateCenter: { longitude: -77.50603538543183, latitude: 38.90457893467501 },\n },\n 'va-virginia-lynchburg': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Lynchburg',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '24104',\n '24501',\n '24502',\n '24503',\n '24504',\n '24517',\n '24521',\n '24522',\n '24523',\n '24526',\n '24536',\n '24538',\n '24550',\n '24551',\n '24553',\n '24554',\n '24556',\n '24570',\n '24571',\n '24572',\n '24574',\n '24588',\n '24593',\n ]),\n approximateCenter: { longitude: -79.19607032358158, latitude: 37.363295571612696 },\n },\n 'va-virginia-norfolk': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Norfolk',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '23320',\n '23321',\n '23322',\n '23323',\n '23324',\n '23325',\n '23435',\n '23451',\n '23452',\n '23453',\n '23454',\n '23455',\n '23456',\n '23457',\n '23459',\n '23460',\n '23462',\n '23464',\n '23502',\n '23503',\n '23504',\n '23505',\n '23507',\n '23508',\n '23509',\n '23510',\n '23511',\n '23513',\n '23517',\n '23518',\n '23523',\n '23551',\n '23701',\n '23702',\n '23703',\n '23704',\n '23707',\n '23708',\n ]),\n approximateCenter: { longitude: -76.23885070186766, latitude: 36.836012791976934 },\n },\n 'va-virginia-petersburg': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Petersburg',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '23801',\n '23803',\n '23805',\n '23830',\n '23831',\n '23833',\n '23834',\n '23836',\n '23838',\n '23840',\n '23841',\n '23842',\n '23860',\n '23875',\n '23881',\n '23882',\n '23885',\n '23890',\n '23891',\n ]),\n approximateCenter: { longitude: -77.38409398787157, latitude: 37.16958590428188 },\n },\n 'va-virginia-richmond': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Richmond',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '23059',\n '23060',\n '23075',\n '23111',\n '23112',\n '23113',\n '23114',\n '23116',\n '23150',\n '23219',\n '23220',\n '23221',\n '23222',\n '23223',\n '23224',\n '23225',\n '23226',\n '23227',\n '23228',\n '23229',\n '23230',\n '23231',\n '23233',\n '23234',\n '23235',\n '23236',\n '23237',\n '23238',\n '23250',\n '23294',\n '23298',\n '23832',\n ]),\n approximateCenter: { longitude: -77.48298930365642, latitude: 37.54796005350131 },\n },\n 'va-virginia-roanoke': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Roanoke',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '24011',\n '24012',\n '24013',\n '24014',\n '24015',\n '24016',\n '24017',\n '24018',\n '24019',\n '24059',\n '24064',\n '24065',\n '24077',\n '24083',\n '24095',\n '24101',\n '24121',\n '24153',\n '24174',\n '24175',\n '24179',\n '24184',\n ]),\n approximateCenter: { longitude: -79.90365823392268, latitude: 37.26921896774181 },\n },\n 'va-virginia-suffolk': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Suffolk',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '23314',\n '23315',\n '23430',\n '23432',\n '23433',\n '23434',\n '23436',\n '23437',\n '23438',\n '23487',\n '23837',\n '23839',\n '23846',\n '23851',\n '23866',\n '23878',\n '23883',\n '23888',\n '23898',\n ]),\n approximateCenter: { longitude: -76.77111384569683, latitude: 36.86143777824538 },\n },\n 'va-virginia-williamsburg': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Williamsburg',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '23011',\n '23062',\n '23072',\n '23168',\n '23185',\n '23188',\n '23601',\n '23602',\n '23603',\n '23604',\n '23605',\n '23606',\n '23607',\n '23608',\n '23651',\n '23661',\n '23662',\n '23663',\n '23664',\n '23665',\n '23666',\n '23669',\n '23690',\n '23691',\n '23692',\n '23693',\n '23696',\n ]),\n approximateCenter: { longitude: -76.49072148683807, latitude: 37.15197394439588 },\n },\n 'va-virginia-wytheville': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Wytheville',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '24058',\n '24060',\n '24061',\n '24073',\n '24084',\n '24087',\n '24132',\n '24138',\n '24141',\n '24149',\n '24162',\n '24301',\n '24312',\n '24313',\n '24322',\n '24323',\n '24324',\n '24347',\n '24350',\n '24360',\n '24368',\n '24374',\n '24382',\n ]),\n approximateCenter: { longitude: -80.73317971421221, latitude: 37.02172486312377 },\n },\n 'sc-south-carolina-anderson': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Anderson',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29621',\n '29624',\n '29625',\n '29626',\n '29627',\n '29655',\n '29657',\n '29669',\n '29670',\n '29684',\n '29697',\n ]),\n approximateCenter: { longitude: -82.63205151512548, latitude: 34.52706431677433 },\n },\n 'sc-south-carolina-rock-hill': {\n etaPadding: DEFAULT_ETA_PADDING,\n isActive: true,\n requiresMatchmakingToClaimInMPX: true,\n timezone: 'America/New_York',\n displayName: 'Rock Hill',\n maxDistanceBetweenNonSharedSlotAppointmentsMeters: 20 * MILE_IN_METERS,\n maxDistanceBetweenSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenConsecutiveSharedSlotSlotsMeters: 5 * MILE_IN_METERS,\n maxDistanceBetweenSharedAndNonSharedSlotAppointmentsMeters: 5 * MILE_IN_METERS,\n postalCodes: new Set([\n '29704',\n '29707',\n '29708',\n '29710',\n '29712',\n '29715',\n '29730',\n '29732',\n '29745',\n ]),\n approximateCenter: { longitude: -81.02164356663327, latitude: 34.95895098553964 },\n },\n};\n\nexport default SERVICE_REGION_LOOKUP;\n","import { TimeRangeRuleInclusion, TimeRangeRuleInput, TimeRangeRulePeriod } from '../API';\n\nexport default function createHolidayExclusionRule(\n id: string,\n startDateISO: string,\n endDateISO: string,\n): TimeRangeRuleInput {\n return {\n id,\n inclusion: TimeRangeRuleInclusion.EXCLUDE,\n recurrenceStart: startDateISO,\n recurrenceEnd: endDateISO,\n start: '00:00:00',\n end: '24:00:00',\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.DAY,\n };\n}\n","import {\n DropOffOrganization,\n TimeRangeRuleInclusion,\n TimeRangeRuleInput,\n TimeRangeRulePeriod,\n} from '../API';\nimport excludeHolidays from './createHolidayExclusionRule';\n\nexport const DEFAULT_COLLECTION_TIME_RULES: TimeRangeRuleInput[] = [\n // Monday to Friday every week, 7am - 4pm local time.\n // Saturday and Sunday every week, 8am - 12pm local time.\n {\n id: 'e4fb17f5-ba67-4ec9-a64d-73fb21aee91d',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '16:00:00',\n recurrenceStart: '2021-01-04', // Monday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '528d1421-8254-4abb-b9d2-3aa09dfe8e43',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '16:00:00',\n recurrenceStart: '2021-01-05', // Tuesday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: 'e7a4b356-9678-4516-bfa3-e7bef2aa987a',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '16:00:00',\n recurrenceStart: '2021-01-06', // Wednesday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '0c053c5f-4cbf-4e1f-9f38-b4b7c9955133',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '16:00:00',\n recurrenceStart: '2021-01-07', // Thursday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '3ddcfe1b-c1dd-4a41-8684-d0311d8ed181',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '16:00:00',\n recurrenceStart: '2021-01-01', // Friday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '4b32d5f1-4ba8-4e3b-95c8-65eb3069ea51',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '08:00:00',\n end: '12:00:00',\n recurrenceStart: '2021-01-02', // Saturday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '0f640898-8e8f-4bd7-bb76-de8578621379',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '08:00:00',\n end: '12:00:00',\n recurrenceStart: '2021-01-03', // Sunday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n];\n\nexport const EXTENDED_HOUR_TIME_RULES: TimeRangeRuleInput[] = [\n // Daily, 7am - 7pm local time.\n {\n id: '131991e5-aaa8-40ca-89aa-aa1a226b0bc2',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '19:00:00',\n recurrenceStart: '2024-08-09',\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.DAY,\n },\n];\n\nexport const OSCAR_COLLECTION_TIME_RULES_WITH_SATURDAY: TimeRangeRuleInput[] = [\n // Monday to Saturday every week, 7am - 4pm local time.\n ...DEFAULT_COLLECTION_TIME_RULES,\n {\n id: '3ddcfe1b-c1dd-4a41-8684-d0311d8ed181',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '16:00:00',\n recurrenceStart: '2021-01-02', // Saturday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n];\n\nconst FEDEX_HOLIDAY_TIME_RULES: TimeRangeRuleInput[] = [\n // In order to ensure that samples are not left sitting in FedEx, specialty labs that require\n // shipping prohibit collection on days when FedEx is closed. Just to be safe, we also disallow\n // collection on days where FedEx has modified services. These rules must be updated each year.\n //\n // FedEx 2024 reference (using FedEx Express service schedule):\n // https://www.fedex.com/content/dam/fedex/us-united-states/services/2024-Holiday-schedule-FedEx.pdf\n //\n // 2022\n excludeHolidays('78e5dfd3-4771-45c0-8041-217b1d3a9dc9', '2022-01-17', '2022-01-17'), // MLK\n excludeHolidays('53787693-e80d-47e9-86a8-4fc5bd719b07', '2022-02-21', '2022-02-21'), // President's Day\n excludeHolidays('d0f3bb26-d12d-491f-9e74-72188b137d67', '2022-04-15', '2022-04-15'), // Good Friday\n excludeHolidays('0d5b2137-2929-40f9-8523-864b213b8803', '2022-04-17', '2022-04-17'), // Easter Sunday\n excludeHolidays('3f0ae95b-9202-4325-a5b6-a01b4ff346b8', '2022-05-29', '2022-05-30'), // Memorial Day & day before\n excludeHolidays('1d91ba28-1277-413c-bd52-e59dd18f1279', '2022-07-01', '2022-07-04'), // Independence Day & surrounding days\n excludeHolidays('bde47cb1-db4d-4e4f-a030-f797d54489e0', '2022-09-04', '2022-09-05'), // Labor Day & day before\n excludeHolidays('9db600de-eb03-48ae-a674-fe1f1a91dba4', '2022-11-23', '2022-11-27'), // Thanksgiving & surrounding days\n excludeHolidays('5bb65108-ab71-44fe-9388-55757b6c9394', '2022-12-18', '2022-12-18'), // Sunday before Christmas Eve\n excludeHolidays('78fb7088-cc4d-4d13-8080-41a801b66cce', '2022-12-23', '2022-12-26'), // Christmas & surrounding days\n excludeHolidays('857aa2f5-52fe-4ef3-9686-c13f74b42f5c', '2022-12-30', '2023-01-02'), // New Year Eve & Day\n\n // 2023\n excludeHolidays('db804287-4477-4328-9041-12c001c39f9d', '2023-09-04', '2023-09-04'), // Labor Day\n excludeHolidays('46e6b4f7-16fe-426b-ba54-a30287eb9379', '2023-11-23', '2023-11-23'), // Thanksgiving\n excludeHolidays('fbb48154-3240-4efb-9561-2220381aff0a', '2023-12-25', '2023-12-25'), // Christmas day\n excludeHolidays('4fda7b27-b942-4b83-8245-c159585601e6', '2024-01-01', '2024-01-01'), // New Year's Day\n\n // 2024\n excludeHolidays('eff34a28-e4c2-5094-b43b-4d20317a57a1', '2024-01-15', '2024-01-15'), // MLK\n excludeHolidays('06f5c6cd-7d6a-58fc-82d3-4a3c16a19989', '2024-02-19', '2024-02-19'), // Presidents' Day\n excludeHolidays('5a24af4c-6fab-5526-8ded-f5438e8369f4', '2024-03-29', '2024-03-29'), // Good Friday\n excludeHolidays('58560f42-3d36-5417-b090-f490f377e7c2', '2024-05-27', '2024-05-27'), // Memorial Day\n excludeHolidays('32f759d8-db5c-5420-9aa0-56e0211c5b4d', '2024-07-03', '2024-07-07'), // Independence Day & surrounding days\n excludeHolidays('36336337-5c6d-52a0-bc33-fc52407b017f', '2024-09-02', '2024-09-02'), // Labor Day\n excludeHolidays('bac0ec37-966f-5e25-92f2-58c324e625b5', '2024-10-14', '2024-10-14'), // Columbus Day\n excludeHolidays('cf7c9ec1-7b8e-5307-bf7c-a5c2fa329e8e', '2024-11-10', '2024-11-11'), // Veterans Day & surrounding days\n excludeHolidays('8eb1f3bf-b22f-5d6b-9ef4-00a8cc0c0590', '2024-11-27', '2024-12-01'), // Thanksgiving & surrounding days\n excludeHolidays('bb3ff3ae-df03-5361-8b92-21f05e262239', '2024-12-22', '2024-12-25'), // Christmas Day & surrounding days\n excludeHolidays('c1e19a80-9145-5211-837e-7a4758e81784', '2024-12-30', '2025-01-01'), // New Year's Day & surrounding days\n];\n\nconst USPS_HOLIDAY_TIME_RULES: TimeRangeRuleInput[] = [\n // USPS current year reference:\n // https://about.usps.com/newsroom/events/\n // 2023\n excludeHolidays('286125e7-73fb-473b-af82-ec3a4bd08028', '2023-09-04', '2023-09-04'), // Labor Day\n excludeHolidays('f47872a2-1142-4f03-ac72-b51518808c01', '2023-10-09', '2023-10-09'), // Columbus Day\n excludeHolidays('d6c3abdc-0da0-4f91-928b-ccf80c5fe6f3', '2023-11-10', '2023-11-10'), // Veterans Day Friday before\n excludeHolidays('523040c8-c052-4431-9677-4e4471ac95e6', '2023-11-23', '2023-11-23'), // Thanksgiving\n excludeHolidays('c8b250e0-b834-46ff-aa83-da3efff26f55', '2023-12-25', '2023-12-25'), // Christmas day\n excludeHolidays('ec276e9c-12fd-4e47-bf73-7ca255d85043', '2024-01-01', '2024-01-01'), // New Year's Day\n\n // 2024\n excludeHolidays('04bfc05f-564a-53bd-b003-f2a5f2042a01', '2024-01-15', '2024-01-15'), // MLK\n excludeHolidays('b3b72854-656a-51bd-982b-66bd4f552ca9', '2024-02-19', '2024-02-19'), // Presidents' Day\n excludeHolidays('b6e7982f-f38f-5a9a-93c6-0dc0be4ca0b7', '2024-05-27', '2024-05-27'), // Memorial Day\n excludeHolidays('a803a2c9-b56d-5de0-8aa1-a13b7ee75c93', '2024-06-19', '2024-06-19'), // Juneteenth\n excludeHolidays('8db38884-d9da-5cb2-a550-8ec682ebf290', '2024-07-04', '2024-07-04'), // Independence Day\n excludeHolidays('ae7460d7-736a-55f0-b23a-3b56bea5cfbc', '2024-09-02', '2024-09-02'), // Labor Day\n excludeHolidays('fae741d2-677c-5cc9-b5f2-b5e58c106a94', '2024-10-14', '2024-10-14'), // Columbus Day\n excludeHolidays('1a003c2c-5117-51ea-b3e7-64b3dbc45145', '2024-11-11', '2024-11-11'), // Veterans Day\n excludeHolidays('75bc1b4c-d8f8-5ab1-acac-badbfd17970f', '2024-11-28', '2024-11-28'), // Thanksgiving\n excludeHolidays('5fb08a6f-3f2d-5c28-b923-66972f50158f', '2024-12-25', '2024-12-25'), // Christmas day\n excludeHolidays('1b3f433f-96f9-560f-93b9-1f296b4b44b4', '2025-01-01', '2025-01-01'), // New Year's Day\n];\n\nconst DROP_OFF_ORGANIZATION_TIME_RANGE_RULES: {\n [key in DropOffOrganization]: TimeRangeRuleInput[];\n} = {\n [DropOffOrganization.BIO_REFERENCE]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.FEDEX]: [...DEFAULT_COLLECTION_TIME_RULES, ...FEDEX_HOLIDAY_TIME_RULES],\n [DropOffOrganization.LABCORP]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.MARSHALL_LABORATORY]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.MUIRLAB]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.QUEST]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.SPRINTER_HEALTH]: EXTENDED_HOUR_TIME_RULES,\n [DropOffOrganization.STANFORD]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.STANFORD_CANCER_CENTER]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.UCSF_BLOOD_DRAW_LAB]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.DOTHOUSE_LAB]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.CODMAN_LAB]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.BMC_LAB]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.ROSLINDALE_LAB]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.WEST_PAC]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.KAISER]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.STANFORD_RESEARCH]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.TRAINING_PARTNER]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.INTERMOUNTAIN]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.INTERMOUNTAIN_CANCER_CENTER]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.UCI_LAB]: DEFAULT_COLLECTION_TIME_RULES,\n [DropOffOrganization.USPS]: [...DEFAULT_COLLECTION_TIME_RULES, ...USPS_HOLIDAY_TIME_RULES],\n};\n\nexport default DROP_OFF_ORGANIZATION_TIME_RANGE_RULES;\n","import {\n PartnerOrganization,\n TimeRangeRuleInclusion,\n TimeRangeRuleInput,\n TimeRangeRulePeriod,\n} from '../API';\nimport { DEFAULT_COLLECTION_TIME_RULES } from './DROP_OFF_ORGANIZATION_TIME_RANGE_RULES';\n\n// Allow scheduling M-F 7AM - 3PM starting 9/12/2022\nconst OSCAR_TIME_RANGE_RULE: TimeRangeRuleInput[] = [\n {\n id: 'e4fb17f5-ba67-4ec9-a64d-73fb21aee91d',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '15:00:00',\n recurrenceStart: '2022-09-12', // Monday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '528d1421-8254-4abb-b9d2-3aa09dfe8e43',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '15:00:00',\n recurrenceStart: '2022-09-13', // Tuesday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: 'e7a4b356-9678-4516-bfa3-e7bef2aa987a',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '15:00:00',\n recurrenceStart: '2022-09-14', // Wednesday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '0c053c5f-4cbf-4e1f-9f38-b4b7c9955133',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '15:00:00',\n recurrenceStart: '2022-09-15', // Thursday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '3ddcfe1b-c1dd-4a41-8684-d0311d8ed181',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '15:00:00',\n recurrenceStart: '2022-09-16', // Friday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '3ddcfe1b-c1dd-4a41-8684-d0311d8ed182',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '15:00:00',\n recurrenceStart: '2022-09-17', // Saturday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n];\n\nconst D2C_TIME_RANGE_RULES: TimeRangeRuleInput[] = [\n {\n id: '97885b04-9c0e-4dd7-8be8-ee35adbb5a74',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '15:00:00',\n recurrenceStart: '2022-12-05', // Monday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '5ea63181-d7b4-452c-bc1b-9a25eaa8e56b',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '15:00:00',\n recurrenceStart: '2022-12-06', // Tuesday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '02901f3e-41ee-434a-9c97-862abdcbbc39',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '15:00:00',\n recurrenceStart: '2022-12-07', // Wednesday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '5b5c8422-aeda-40fc-9b01-47932870f061',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '15:00:00',\n recurrenceStart: '2022-12-08', // Thursday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '3b03b9cd-b645-46c8-ac43-08820da087b8',\n inclusion: TimeRangeRuleInclusion.INCLUDE,\n start: '07:00:00',\n end: '15:00:00',\n recurrenceStart: '2022-12-09', // Friday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n];\n\nexport const SCHEDULING_TIME_RANGE_CONFIGS: {\n [partnerOrganization in PartnerOrganization]?: TimeRangeRuleInput[];\n} = {\n OSCAR: OSCAR_TIME_RANGE_RULE,\n EXACTSCIENCES: [\n {\n id: '4bf10956-4328-4462-851f-ffbed5d7c177',\n inclusion: TimeRangeRuleInclusion.EXCLUDE,\n start: '00:00:00',\n end: '24:00:00',\n recurrenceStart: '2022-01-07', // Block Friday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: '67b178d1-efe1-4e06-b80a-a2b894d04490',\n inclusion: TimeRangeRuleInclusion.EXCLUDE,\n start: '00:00:00',\n end: '24:00:00',\n recurrenceStart: '2022-01-08', // Block Saturday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n {\n id: 'd719c323-184b-4938-b062-e3526dfa8b07',\n inclusion: TimeRangeRuleInclusion.EXCLUDE,\n start: '00:00:00',\n end: '24:00:00',\n recurrenceStart: '2022-01-09', // Block Sunday.\n recurrenceMultiple: 1,\n recurrencePeriod: TimeRangeRulePeriod.WEEK,\n },\n ...DEFAULT_COLLECTION_TIME_RULES,\n ],\n};\n\nexport const D2C_TIME_RANGE_CONFIGS = D2C_TIME_RANGE_RULES;\n\nexport default SCHEDULING_TIME_RANGE_CONFIGS;\n","/* eslint sort-keys: [\"error\", \"asc\", {caseSensitive: false}] */\n\nimport {\n CampaignName,\n LabOrganization,\n PartnerOrganization,\n ProductType,\n ServiceType,\n TimeRangeRuleInput,\n} from '../API';\nimport {\n CALIFORNIA_LEAD_SCREENING_AGE_REQUIREMENTS,\n CUSTOMER_SUPPORT_PHONE,\n HEDIS_LEAD_SCREENING_AGE_REQUIREMENTS,\n INTERNAL_ONLY_REROUTE_FAILURE_EMAIL,\n INTERNAL_ONLY_SPRINTER_HEALTH_EMAIL,\n MAX_PATIENTS_PER_APPOINTMENT,\n MAX_PATIENTS_PER_APPOINTMENT_D2C,\n MAX_PATIENTS_PER_APPOINTMENT_SPECIALITY_LABS,\n STANDARD_LEAD_SCREENING_AGE_REQUIREMENTS,\n} from '../constants';\nimport { Dollar, ZERO_DOLLARS, makeDollar } from '../currency';\nimport getServiceTypesFromProductTypes from '../getServiceTypesFromProductTypes';\nimport { AgeEligibilityRequirements } from '../types/AgeEligibilityRequirements';\nimport ConditionalFields from '../types/ConditionalFields';\nimport Optionality from '../types/Optionality';\nimport { VitalThreshold } from '../types/Vitals';\nimport { PATIENT_CONFIG, PatientConfig } from './getPatientConfig';\nimport { PRODUCT_TYPE_CONFIGS } from './getProductTypeConfig';\nimport { VITALS_CONFIG } from './getVitalConfig';\nimport {\n STANDARD_REFERENCE_LAB_ORGANIZATION,\n STANDARD_REFERENCE_LAB_ORGANIZATIONS,\n} from './LAB_CONFIGS';\nimport PartnerOrganizationGroup from './PartnerOrganizationGroup';\nimport {\n D2C_TIME_RANGE_CONFIGS,\n SCHEDULING_TIME_RANGE_CONFIGS,\n} from './SCHEDULING_TIME_RANGE_CONFIGS';\nimport SERVICE_REGION_LOOKUP from './SERVICE_REGION_LOOKUP';\n\n// TODO(shilpi) change partner vertical to enum.\nexport type PartnerVertical =\n | 'drVillivalam'\n | 'homeHealth'\n | 'concierge'\n | 'specialtyLab'\n | 'healthSystem'\n | 'careFacility'\n | 'lifeSciences'\n | 'skilledNursingFacility'\n | 'hospice'\n | 'healthPlan'\n | 'directToConsumer'\n | 'cancerCenter'\n | null;\n\nexport type PartnerResponsibleManager =\n | 'Sengyeon'\n | 'Carole'\n | 'Ryan'\n | 'Madi'\n | 'Miranda'\n | 'Cameron';\n\ntype PhoneNumbersE164WithExtensions = {\n phoneE164: `+1${string}`;\n extension?: string;\n};\n\ninterface NurseContactInformation {\n phoneNumbers: PhoneNumbersE164WithExtensions[];\n directions?: string;\n}\n\ninterface Image {\n uri: string;\n width: number;\n height: number;\n}\n\ninterface SprinterHealthDefaultProductTypeMappingOverride {\n displayName: string;\n message: string;\n defaultSprinterHealthExternalID: string;\n}\n\nexport type CareNavigationEpisodeSummaryReportingModel = 'partnerSFTPAndPractitioner' | 'none';\n\nexport type PartnerConfig = {\n displayName: string;\n labOrganizations: { [key in LabOrganization]?: ServiceType[] };\n defaultLabOrganization: LabOrganization;\n vertical: PartnerVertical;\n onlyOrdersSingleServiceRequests: boolean;\n partnerFeedbackLink?: string;\n blockSharedSlotAppointments?: boolean;\n skipCancelationFee?: boolean;\n excludeBillingForFailedAppointments?: boolean; // For partners with whom our contract specifies we dont bill for any failed appointments (regardless of fault)\n vitalsThresholds?: VitalThreshold;\n patientConfig?: PatientConfig;\n supportedProductTypes: ProductType[];\n maxAllowedPatientsPerBooking: number;\n /* Partner representative(s) to receive Encounter Summaries. Please double check the email domains to ensure we won't send these to personal emails. */\n appointmentReportEmails?: string[];\n rerouteCSREmailTo?: { [key: string]: string }; // this will reroute all CSR emails to a single email address.\n rerouteFailureEmailTo?: { [key: string]: string }; // this will reroute all failure emails to a single email address.\n /* list of partner's fax numbers to send encounter summary. (should be less than 20 based on westfax docs) */\n faxNumbersE164?: string[];\n schedulingTimeRangeRules?: TimeRangeRuleInput[];\n partnerOrganizationGroup: PartnerOrganizationGroup;\n isTestResultsUploadRequired?: boolean;\n productTypesRequiringRequisitions: ProductType[]; // Currently only used to calculate if an the appointment should be in the \"Needs Requisition\" state\n patientSupportEmail?: string;\n patientSupportPhoneE164?: `+1${string}`;\n shouldSendAppointmentReportToCoordinator?: boolean;\n ignoreAbstentionsMessaging?: boolean;\n nurseVitalsUrgencyLineInformation?: NurseContactInformation;\n estimatedServiceDurationAdjustmentSeconds?: number;\n shouldExportAppointmentsForBilling?: boolean;\n sprinterHealthSupportPhoneE164?: string;\n showDiagnosisCodes?: boolean;\n patientBookingAppointmentPhoneE164?: `+1${string}`;\n sprinterHealthDefaultProductTypeMappingOverride?: Partial<\n Record\n >;\n internalCoordinatorID?: string;\n isGuestReschedulingAllowed?: boolean;\n referralLandingPageUrlPath?: string; // This allows us to customize the URL path for each partner referral landing page\n referralVerificationPageUrlPath?: string; // This allows us to customize the URL path for each partner referral verification page\n supportedServiceRegions: string[];\n fullPartnerDisplayNameForMessaging?: string; // Using the display name in emails is usually too long in the header. We cannot update display name to be the same for suborgs because it would affect internal dropdowns.\n shortPartnerDisplayNameForMessaging?: string; // Due to SMS character limits, we typically use the shortened partner org display names.\n supportsEDILabOrdering: boolean;\n serviceRequestsAddByDefault?: {\n [key in LabOrganization]?: {\n externalID: string;\n serviceSuccessfullyProvidedCutoffPeriod?: 'ytd' | 'lifetime';\n prerequisiteServiceTypes?: ServiceType[]; // only add this service request if all prerequisiteServiceTypes are present\n prerequisiteCampaign?: CampaignName; // only add this service request for patient in a specific campaign\n exclusionEquivalentServiceRequestTypes?: {\n labOrganization: LabOrganization;\n externalIDs: Set;\n }[]; // only add this service request if none of the prerequisiteServiceRequestTypes are present\n }[];\n };\n shouldGenerateEncounterSummaryForVitals?: boolean;\n isAutofillingRequisitionsAllowed: boolean;\n // based on that it shows correct photo and role of responsible manager in partner CSR email\n partnerSupportResponsibleManager: PartnerResponsibleManager;\n zendeskOrganizationName?: string;\n shouldSkipPriorLeadScreeningsQuestion: boolean;\n // the index is the number of times that a patient has done lead screening\n leadScreeningEligibilityRequirements?: AgeEligibilityRequirements[];\n supportsPatientEncounterSummary: boolean;\n careNavigationEpisodeSummaryReportingModel?: CareNavigationEpisodeSummaryReportingModel;\n shouldHideSprinterHealthSupportEmailInReferralsFlow?: boolean;\n} & (\n | {\n /* the encounterSummaryReportingModel is used both for determining both how to send encounter summaries and if we need to validate a practitioner */\n encounterSummaryReportingModel: 'partner' | 'partnerAndPractitioner' | 'practitionerOrThrow';\n }\n | {\n encounterSummaryReportingModel: 'practitionerWithDefaultCaseManagerFallBack';\n encounterSummaryReportingDefaultCaseManagerEmail: string;\n }\n) &\n (\n | {\n payer: 'none';\n priceUSD: typeof ZERO_DOLLARS;\n }\n | { payer: 'patient' }\n | {\n payer: 'partner';\n paymentType: 'invoice';\n invoiceTerm: 30 | 45 | 60;\n priceUSD: Dollar;\n invoiceEmailType: 'stripe' | 'custom';\n automaticInvoiceSend: boolean;\n priceForProductsUSD?: { [key in ProductType]?: Dollar };\n }\n | {\n payer: 'partner';\n paymentType: 'claims';\n priceUSD: Dollar;\n shouldIncludeFailedAppointmentsInClaims?: boolean;\n }\n ) &\n ConditionalFields<\n { isSelfBookingAllowed: true },\n {\n insuranceUploadFromPatient: Optionality;\n isMultiPatientBookingAllowed: boolean;\n cobrandingLogo?: Image;\n } & (\n | { requisitionUploadFromPatient: 'required' }\n | {\n requisitionUploadFromPatient: 'skip' | 'optional';\n requisitionUploadFromScheduler: Optionality;\n }\n ),\n 'cobrandingLogo'\n > &\n ConditionalFields<\n { isPartnerBookingAllowed: true },\n {\n insuranceUploadFromPartner: Optionality;\n\n /**\n * Whether a requisition upload is required from the partner at the time of booking.\n *\n * - `skip`: The partner is not allowed to upload a requisition, either because no printable\n * requisition is needed or we can generate it ourselves, either via EDI or autofilled\n * PDF. By appointment volume, this is by far the most common case, representing nearly\n * all health plan and specialty lab partners.\n * - `optional`: The partner is allowed to upload a requisition, but not required to for all\n * appointments. Such partners are typically large provider-like groups like health\n * systems and care extension arms of health plans who book both services that do require\n * printable requisitions (e.g. labs) and gap closure services that don't (e.g. vitals,\n * DREs).\n * - `required_after_booking`: Due to workflow constraints on their side, we've allowed a\n * small number of health systems that want to be the ordering provider for their tests to\n * defer uploads until after booking, though the uploads are still required before the\n * appointment and will be displayed in UI as \"NEEDS REQUISITION\" until that point. This\n * includes care-gap-focused health systems like BMC and UCI, care extension arms of\n * health plans like Oscar Care, and (now unsupported) cancer centers like Intermountain\n * and Stanford.\n * - `required`: The partner must upload a requisition for every encounter in the appointment.\n * This is now mostly unused and is a legacy of now unsupported partners like home health,\n * concierge, and a few liquid biopsy companies where we were once responsible for\n * carrying their kits. This really only makes sense for partners who are consistently the\n * ordering provider for all their patients' service requests, effectively excluding\n * anything besides basic specimen collection (labs).\n */\n requisitionUploadFromPartner: Optionality | 'required_after_booking';\n\n // For partners that have historically had issues with their requisition uploads, we want create a ZD ticket and review\n // the upload quickly to catch issues.\n shouldSendRequisitionUploadReviewZDTicket?: boolean;\n serviceRequestsFromPartner: Optionality;\n reschedulingCoordinator: 'partner' | 'sprinterHealth';\n domainAllowList: Map;\n selectSingleServiceRequestExternalID?: string;\n // Some partners (e.g., Guardant Shield and Guardant) share a LabOrganization, but have different sets of supported testcodes.\n // Because service requests are indexed by service types and lab organizations, this is the only way (currently) to show one set\n // of codes to one partner vs the other when they share the same labOrganization.\n allowedServiceRequests?: { [key in LabOrganization]?: string[] };\n disallowedServiceRequests?: { [key in LabOrganization]?: string[] };\n serviceRequestsFormatType?: string; // used for formatServiceRequest\n canEditServicesAfterBooking?: boolean;\n }\n > &\n ConditionalFields<\n { supportsPatientEncounterSummary: true },\n {\n // Controls whether we provide the option send the patient encounter summary by direct mail in case we cannot send it by SMS or email.\n supportsPatientEncounterSummaryDirectMail: boolean;\n }\n > &\n (\n | ConditionalFields<\n // Ensure that cobranding logo is set if referral booking is allowed\n { isReferralBookingAllowed: true },\n | { cobrandingLogo: Image; shouldUsePartnerBrands?: false }\n | { shouldUsePartnerBrands: true },\n 'cobrandingLogo'\n >\n | { isReferralBookingAllowed: false; shouldUsePartnerBrands: boolean }\n ) &\n (\n | { isReferralBookingAllowed: true; supportsReferrals: true } // If referral booking is allowed, supportsReferrals should be true\n | { isReferralBookingAllowed: false; supportsReferrals: boolean } // There are some partners without referrals booking but still support referrals e.g. Elevance\n ) &\n ConditionalFields<{ supportsReferrals: true }, { referralCoordinatorID: string }>; // If supportsReferral is true, we should provide a referral coordinator ID as it'll be used for upload and other related items\n\nexport function normalizeEmailOrDomain(emailOrDomain: string): string {\n return emailOrDomain.toLowerCase();\n}\n\n/**\n * Takes a list of email domains, normalizes them and associates them with the \"native\" cognito identity provider.\n * The \"native\" cognito identity provider is the username and a password login on the site as opposed to OIDC or other single sign on external providers. If a partner needs to create logins with a, external provider the collection should be manually created.\n * @param emailDomains\n * @returns\n */\nfunction normalizeEmailDomainsAndAssociateWithNativeProvider(\n emailDomains: string[],\n): Map {\n return new Map(\n Array.from(new Set(emailDomains.map(normalizeEmailOrDomain))).map((domain) => [\n domain,\n ['NATIVE'],\n ]),\n );\n}\n\nconst DEFAULT_SUPPORTED_REGIONS: string[] = Object.entries(SERVICE_REGION_LOOKUP)\n .filter(([, value]) => value.isActive && !value?.isActiveOnlyForReferrals)\n .map(([key]) => key);\n\nexport const ALIGNMENT_EXTRA_SERVICE_AREAS: string[] = Object.entries(SERVICE_REGION_LOOKUP)\n .filter(([, value]) => value.isActive && value?.isActiveOnlyForReferrals)\n .map(([key]) => key);\n\nconst STANDARD_REFERENCE_LAB_ORGANIZATION_SETTINGS = STANDARD_REFERENCE_LAB_ORGANIZATIONS.reduce(\n (acc, lab) => {\n acc[lab] = getServiceTypesFromProductTypes([ProductType.LAB_TEST]);\n return acc;\n },\n {} as { [key in LabOrganization]?: ServiceType[] },\n);\n\nconst GLOBAL_PARTNER_DEFAULTS = {\n encounterSummaryReportingModel: 'partner' as const,\n isAutofillingRequisitionsAllowed: false as const,\n isGuestReschedulingAllowed: true as const,\n isReferralBookingAllowed: false as const,\n productTypesRequiringRequisitions: [ProductType.LAB_TEST],\n shouldSkipPriorLeadScreeningsQuestion: false as const,\n supportedServiceRegions: DEFAULT_SUPPORTED_REGIONS,\n supportsEDILabOrdering: false as const,\n supportsPatientEncounterSummary: false as const,\n supportsReferrals: false as const,\n};\n\nconst STANDARD_SPECIALTY_LAB_PARTNER_BOOKING = {\n ...GLOBAL_PARTNER_DEFAULTS,\n automaticInvoiceSend: true,\n insuranceUploadFromPartner: 'skip' as const,\n invoiceEmailType: 'stripe' as const,\n invoiceTerm: 30 as const,\n isPartnerBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n maxAllowedPatientsPerBooking: MAX_PATIENTS_PER_APPOINTMENT_SPECIALITY_LABS as number,\n onlyOrdersSingleServiceRequests: true,\n payer: 'partner' as const,\n paymentType: 'invoice' as const,\n priceUSD: makeDollar(79),\n requisitionUploadFromPartner: 'skip' as const,\n reschedulingCoordinator: 'partner' as const,\n serviceRequestsFromPartner: 'required' as const,\n skipCancelationFee: false,\n supportedProductTypes: [ProductType.LAB_TEST],\n vertical: 'specialtyLab' as const,\n};\n\nconst STANDARD_SPECIALTY_LAB_SELF_BOOKING = {\n ...GLOBAL_PARTNER_DEFAULTS,\n insuranceUploadFromPatient: 'skip' as const,\n isMultiPatientBookingAllowed: false,\n isSelfBookingAllowed: true as const,\n priceUSD: makeDollar(79),\n requisitionUploadFromPatient: 'skip' as const,\n requisitionUploadFromScheduler: 'skip' as const,\n skipCancelationFee: false,\n supportedProductTypes: [ProductType.LAB_TEST],\n vertical: 'specialtyLab' as const,\n};\n\nconst STANDARD_HOME_HEALTH_PARTNER_BOOKING = {\n ...GLOBAL_PARTNER_DEFAULTS,\n automaticInvoiceSend: true,\n defaultLabOrganization: STANDARD_REFERENCE_LAB_ORGANIZATION,\n insuranceUploadFromPartner: 'required' as const,\n invoiceEmailType: 'stripe' as const,\n invoiceTerm: 30 as const,\n isPartnerBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n labOrganizations: STANDARD_REFERENCE_LAB_ORGANIZATION_SETTINGS,\n maxAllowedPatientsPerBooking: MAX_PATIENTS_PER_APPOINTMENT as number,\n onlyOrdersSingleServiceRequests: false,\n payer: 'partner' as const,\n paymentType: 'invoice' as const,\n priceUSD: makeDollar(79),\n requisitionUploadFromPartner: 'required' as const,\n reschedulingCoordinator: 'partner' as const,\n serviceRequestsFromPartner: 'skip' as const,\n shouldSendRequisitionUploadReviewZDTicket: true,\n skipCancelationFee: false,\n supportedProductTypes: [ProductType.LAB_TEST],\n vertical: 'homeHealth' as const,\n};\n\nconst STANDARD_CONCIERGE_PARTNER_BOOKING = {\n ...GLOBAL_PARTNER_DEFAULTS,\n automaticInvoiceSend: true,\n blockSharedSlotAppointments: true,\n defaultLabOrganization: STANDARD_REFERENCE_LAB_ORGANIZATION,\n insuranceUploadFromPartner: 'required' as const,\n invoiceEmailType: 'stripe' as const,\n invoiceTerm: 30 as const,\n isPartnerBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n labOrganizations: STANDARD_REFERENCE_LAB_ORGANIZATION_SETTINGS,\n maxAllowedPatientsPerBooking: MAX_PATIENTS_PER_APPOINTMENT as number,\n onlyOrdersSingleServiceRequests: false,\n payer: 'partner' as const,\n paymentType: 'invoice' as const,\n priceUSD: makeDollar(79),\n requisitionUploadFromPartner: 'required' as const,\n reschedulingCoordinator: 'partner' as const,\n serviceRequestsFromPartner: 'skip' as const,\n skipCancelationFee: false,\n supportedProductTypes: [ProductType.LAB_TEST],\n vertical: 'concierge' as const,\n};\n\nconst STANDARD_HEALTH_SYSTEM_PARTNER_BOOKING = {\n ...GLOBAL_PARTNER_DEFAULTS,\n automaticInvoiceSend: true,\n insuranceUploadFromPartner: 'required' as const,\n invoiceEmailType: 'stripe' as const,\n invoiceTerm: 30 as const,\n isPartnerBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n labOrganizations: STANDARD_REFERENCE_LAB_ORGANIZATION_SETTINGS,\n maxAllowedPatientsPerBooking: MAX_PATIENTS_PER_APPOINTMENT as number,\n onlyOrdersSingleServiceRequests: false,\n payer: 'partner' as const,\n paymentType: 'invoice' as const,\n priceUSD: makeDollar(79),\n requisitionUploadFromPartner: 'required' as const,\n reschedulingCoordinator: 'partner' as const,\n serviceRequestsFromPartner: 'skip' as const,\n skipCancelationFee: false,\n supportedProductTypes: [ProductType.LAB_TEST],\n vertical: 'healthSystem' as const,\n};\n\nconst STANDARD_CANCER_CENTER_PARTNER_BOOKING = {\n ...STANDARD_HEALTH_SYSTEM_PARTNER_BOOKING,\n vertical: 'cancerCenter' as const,\n};\n\nconst INTERMOUNTAIN_CANCER_CENTER_BASE = {\n ...STANDARD_CANCER_CENTER_PARTNER_BOOKING,\n automaticInvoiceSend: false,\n defaultLabOrganization: LabOrganization.INTERMOUNTAIN_CANCER_CENTER,\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'imail.org',\n 'sprinterhealth.com',\n ]),\n insuranceUploadFromPartner: 'skip' as const,\n isAutofillingRequisitionsAllowed: true,\n isGuestReschedulingAllowed: false,\n labOrganizations: {\n [LabOrganization.INTERMOUNTAIN_CANCER_CENTER]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerOrganizationGroup: PartnerOrganizationGroup.INTERMOUNTAINCANCERCENTER,\n partnerSupportResponsibleManager: 'Carole' as PartnerResponsibleManager,\n priceUSD: makeDollar(120),\n requisitionUploadFromPartner: 'required_after_booking' as const,\n reschedulingCoordinator: 'sprinterHealth' as const,\n shouldExportAppointmentsForBilling: true,\n skipCancelationFee: true,\n};\n\nconst BMC_BASE = {\n ...STANDARD_HEALTH_SYSTEM_PARTNER_BOOKING,\n automaticInvoiceSend: false,\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['bmc.org']),\n partnerFeedbackLink: 'https://sprinterhealth.com/feedback_bmc',\n partnerOrganizationGroup: PartnerOrganizationGroup.BOSTONMEDICALCENTER,\n partnerSupportResponsibleManager: 'Sengyeon',\n shouldExportAppointmentsForBilling: true,\n shouldGenerateEncounterSummaryForVitals: true,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n },\n};\n\nconst CENTENE_BASE = {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: [\n '375', // eGFR/Creatinine\n '496', // Quest A1C\n '6517', // uACR/Microalbumin\n ],\n SPRINTER_HEALTH: [\n 'BLOOD-PRESSURE-CHECK',\n 'DIABETIC-RETINAL-SCAN',\n 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n 'SDOH-QUESTIONNAIRE', // TODO(86b0ajwzy) This isn't applied by default as it will be line of business specific. We should add this service on upload\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION', // CENTENEOH has an override for Cologuard\n ],\n },\n automaticInvoiceSend: false,\n defaultLabOrganization: LabOrganization.QUEST,\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['centene.com']),\n encounterSummaryReportingModel: 'practitionerOrThrow' as const,\n insuranceUploadFromPartner: 'skip' as const,\n invoiceEmailType: 'stripe' as const,\n invoiceTerm: 60 as const,\n isAutofillingRequisitionsAllowed: true as const,\n isGuestReschedulingAllowed: true as const,\n isPartnerBookingAllowed: true as const,\n isReferralBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true as const,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.URINE],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.RACE_AND_ETHNICITY,\n ServiceType.SDOH_QUESTIONNAIRE,\n ServiceType.KIT_DELIVERY_AND_EDUCATION, // CENTENEOH has an override for Cologuard\n ],\n },\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n // There isn't a partner-specific support phone number or email\n // The support number might be brand specific but we don't need to show that anywhere\n partnerOrganizationGroup: PartnerOrganizationGroup.CENTENE,\n partnerSupportResponsibleManager: 'Carole' as PartnerResponsibleManager,\n payer: 'partner' as const,\n paymentType: 'invoice' as const,\n // We are not charging for SDOH like we have done for Elevance. We want to mimic Molina base here.\n // Only Centene OH supports Cologuard. CA, FL, MA, MI, NH support Insure One Fit Kit.\n priceForProductsUSD: {\n COLOGUARD_KIT_EDUCATION: makeDollar(20), // Cologuard Kit Education for OH only\n DIABETIC_RETINAL_SCAN: makeDollar(50), // Eye Exam\n KIT_DELIVERY_AND_EDUCATION: makeDollar(20), // Insure One Fit Kit\n LAB_TEST: makeDollar(20), // Labs\n VITALS: makeDollar(10), // BP Check\n },\n priceUSD: makeDollar(130),\n requisitionUploadFromPartner: 'skip' as const,\n reschedulingCoordinator: 'sprinterHealth' as const,\n serviceRequestsAddByDefault: {\n SPRINTER_HEALTH: [\n {\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime' as const,\n },\n ],\n },\n serviceRequestsFromPartner: 'required' as const,\n shouldExportAppointmentsForBilling: true as const,\n shouldGenerateEncounterSummaryForVitals: true as const,\n shouldUsePartnerBrands: true as const,\n showDiagnosisCodes: true as const,\n skipCancelationFee: true as const,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n [ProductType.KIT_DELIVERY_AND_EDUCATION]: {\n // We override this FIT Kit override for CENTENEOH, which supports Cologuard\n defaultSprinterHealthExternalID: 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n displayName: 'Colorectal screening kit delivery and education',\n message: '',\n },\n },\n supportedProductTypes: [\n ProductType.LAB_TEST,\n ProductType.VITALS,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.QUESTIONNAIRES,\n ],\n supportsEDILabOrdering: true as const,\n supportsPatientEncounterSummary: true as const,\n supportsPatientEncounterSummaryDirectMail: true as const,\n supportsReferrals: true as const,\n vertical: 'healthPlan' as const,\n};\n\nconst HUMANA_BASE = {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: [\n '375', // eGFR/Creatinine\n '496', // Quest A1C\n '6517', // uACR/Microalbumin\n ],\n SPRINTER_HEALTH: [\n 'ANNUAL_WELLNESS_VISIT_PROVIDER_CALL',\n 'BLOOD-PRESSURE-CHECK',\n 'DIABETIC-RETINAL-SCAN',\n 'DEXA_SCAN_CARE_NAVIGATION_BOOKING',\n 'DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION',\n 'HEIGHT_AND_WEIGHT_COLLECTION',\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n 'MAMMOGRAM_CARE_NAVIGATION_BOOKING',\n 'MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION',\n 'PRAPARE_SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE',\n 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n 'SDOH-QUESTIONNAIRE',\n ],\n },\n automaticInvoiceSend: false,\n blockSharedSlotAppointments: false,\n careNavigationEpisodeSummaryReportingModel: 'none' as const,\n cobrandingLogo: {\n height: 32,\n uri: 'https://app.sprinterhealth.com/humana/humana_logo.png',\n width: 116,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['humana.com']),\n encounterSummaryReportingModel: 'practitionerOrThrow' as const,\n fullPartnerDisplayNameForMessaging: 'Humana',\n insuranceUploadFromPartner: 'skip' as const,\n invoiceEmailType: 'stripe' as const,\n invoiceTerm: 60 as const,\n isAutofillingRequisitionsAllowed: true,\n isPartnerBookingAllowed: true as const,\n isReferralBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.URINE],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL,\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ServiceType.DEXA_SCAN_CARE_NAVIGATION_BOOKING,\n ServiceType.DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.HEIGHT_AND_WEIGHT_COLLECTION,\n ServiceType.MAMMOGRAM_CARE_NAVIGATION_BOOKING,\n ServiceType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.RACE_AND_ETHNICITY,\n ServiceType.SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE,\n ServiceType.SDOH_QUESTIONNAIRE,\n ServiceType.VITALS,\n ],\n },\n maxAllowedPatientsPerBooking: 1,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.HUMANA,\n partnerSupportResponsibleManager: 'Carole' as const,\n patientSupportPhoneE164: '+18669340640' as const,\n payer: 'partner' as const,\n paymentType: 'invoice' as const,\n priceForProductsUSD: {\n ANNUAL_WELLNESS_VISIT_PROVIDER_CALL: makeDollar(425), // AWV Provider Call\n DEXA_SCAN_CARE_NAVIGATION_BOOKING: makeDollar(90), // Bone Density Scan booking\n DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION: makeDollar(90), // Bone Density Scan confirmation\n DIABETIC_RETINAL_SCAN: makeDollar(50), // Eye Exam\n HEIGHT_AND_WEIGHT_COLLECTION: makeDollar(0), // Height and Weight collection for AWV. Setting this to 0 since we will have a separate product price for AWV VISIT\n KIT_DELIVERY_AND_EDUCATION: makeDollar(20), // FIT Kit\n LAB_TEST: makeDollar(20), // Labs\n MAMMOGRAM_CARE_NAVIGATION_BOOKING: makeDollar(90), // Breast Cancer Screening booking\n MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION: makeDollar(90), // Breast Cancer Screening confirmation\n SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE: makeDollar(20), // SDOH Care Navigation questionnaire\n VITALS: makeDollar(10), // BP Check\n },\n priceUSD: makeDollar(149),\n productTypesRequiringRequisitions: [ProductType.LAB_TEST],\n requisitionUploadFromPartner: 'skip' as const,\n reschedulingCoordinator: 'sprinterHealth' as const,\n serviceRequestsAddByDefault: {\n [LabOrganization.SPRINTER_HEALTH]: [\n {\n exclusionEquivalentServiceRequestTypes: [\n {\n externalIDs: new Set(['PRAPARE_SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE']),\n labOrganization: LabOrganization.SPRINTER_HEALTH,\n },\n ],\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime' as const,\n },\n {\n exclusionEquivalentServiceRequestTypes: [\n {\n externalIDs: new Set(['PRAPARE_SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE']),\n labOrganization: LabOrganization.SPRINTER_HEALTH,\n },\n ],\n externalID: 'SDOH-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'ytd' as const,\n },\n {\n externalID: 'HEIGHT_AND_WEIGHT_COLLECTION',\n prerequisiteServiceTypes: [ServiceType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL],\n },\n {\n externalID: 'VITALS-CHECK',\n prerequisiteServiceTypes: [ServiceType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL],\n },\n ],\n },\n serviceRequestsFromPartner: 'required' as const,\n shortPartnerDisplayNameForMessaging: 'Humana',\n shouldGenerateEncounterSummaryForVitals: true,\n showDiagnosisCodes: true,\n skipCancelationFee: true,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n [ProductType.KIT_DELIVERY_AND_EDUCATION]: {\n defaultSprinterHealthExternalID: 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n displayName: 'Colorectal screening kit delivery and education',\n message: '',\n },\n },\n supportedProductTypes: [\n ProductType.VITALS,\n ProductType.LAB_TEST,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE,\n ProductType.DEXA_SCAN_CARE_NAVIGATION_BOOKING,\n ProductType.DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION,\n ProductType.MAMMOGRAM_CARE_NAVIGATION_BOOKING,\n ProductType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL,\n ],\n supportsEDILabOrdering: true as const,\n supportsPatientEncounterSummary: true as const,\n supportsPatientEncounterSummaryDirectMail: false as const,\n supportsReferrals: true as const,\n vertical: 'healthPlan' as const,\n};\n\nconst MOLINA_BASE = {\n ...GLOBAL_PARTNER_DEFAULTS,\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/molina/molina_logo.png',\n width: 92,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['sprinterhealth.com']),\n fullPartnerDisplayNameForMessaging: 'Molina Healthcare',\n insuranceUploadFromPartner: 'skip' as const,\n isAutofillingRequisitionsAllowed: true as const,\n isPartnerBookingAllowed: true as const,\n isReferralBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true as const,\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.MOLINA,\n partnerSupportResponsibleManager: 'Carole' as const,\n payer: 'partner' as const,\n paymentType: 'claims' as const,\n requisitionUploadFromPartner: 'skip' as const,\n reschedulingCoordinator: 'sprinterHealth' as const,\n serviceRequestsAddByDefault: {\n SPRINTER_HEALTH: [\n {\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime' as const,\n },\n {\n externalID: 'SDOH-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'ytd' as const,\n },\n ],\n },\n serviceRequestsFromPartner: 'required' as const,\n shortPartnerDisplayNameForMessaging: 'Molina',\n shouldGenerateEncounterSummaryForVitals: true as const,\n shouldIncludeFailedAppointmentsInClaims: true as const,\n showDiagnosisCodes: true as const,\n skipCancelationFee: true as const,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n [ProductType.KIT_DELIVERY_AND_EDUCATION]: {\n defaultSprinterHealthExternalID: 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n displayName: 'Colorectal screening kit delivery and education',\n message: '',\n },\n },\n supportsPatientEncounterSummary: true as const,\n supportsPatientEncounterSummaryDirectMail: false as const,\n supportsReferrals: true as const,\n vertical: 'healthPlan' as const,\n};\n\nconst STANDARD_CARE_FACILITY_PARTNER_BOOKING = {\n ...GLOBAL_PARTNER_DEFAULTS,\n automaticInvoiceSend: true,\n blockSharedSlotAppointments: true,\n defaultLabOrganization: STANDARD_REFERENCE_LAB_ORGANIZATION,\n insuranceUploadFromPartner: 'required' as const,\n invoiceEmailType: 'stripe' as const,\n invoiceTerm: 30 as const,\n isPartnerBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n labOrganizations: STANDARD_REFERENCE_LAB_ORGANIZATION_SETTINGS,\n maxAllowedPatientsPerBooking: MAX_PATIENTS_PER_APPOINTMENT as number,\n onlyOrdersSingleServiceRequests: false,\n payer: 'partner' as const,\n paymentType: 'invoice' as const,\n priceUSD: makeDollar(79),\n requisitionUploadFromPartner: 'required' as const,\n reschedulingCoordinator: 'partner' as const,\n serviceRequestsFromPartner: 'skip' as const,\n skipCancelationFee: false,\n supportedProductTypes: [ProductType.LAB_TEST],\n vertical: 'careFacility' as const,\n};\n\nconst STANDARD_SKILLED_NURSING_FACILITY_PARTNER_BOOKING = {\n ...GLOBAL_PARTNER_DEFAULTS,\n automaticInvoiceSend: true,\n defaultLabOrganization: STANDARD_REFERENCE_LAB_ORGANIZATION,\n insuranceUploadFromPartner: 'required' as const,\n invoiceEmailType: 'stripe' as const,\n invoiceTerm: 30 as const,\n isPartnerBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n labOrganizations: STANDARD_REFERENCE_LAB_ORGANIZATION_SETTINGS,\n maxAllowedPatientsPerBooking: MAX_PATIENTS_PER_APPOINTMENT as number,\n onlyOrdersSingleServiceRequests: false,\n payer: 'partner' as const,\n paymentType: 'invoice' as const,\n priceUSD: makeDollar(79),\n requisitionUploadFromPartner: 'required' as const,\n reschedulingCoordinator: 'partner' as const,\n serviceRequestsFromPartner: 'skip' as const,\n skipCancelationFee: false,\n supportedProductTypes: [ProductType.LAB_TEST],\n vertical: 'skilledNursingFacility' as const,\n};\n\nconst HOME_HEALTH_RESOURCE_GROUP_BASE = {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n automaticInvoiceSend: false as const,\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['hhrgconnect.com']),\n insuranceUploadFromPartner: 'required' as const,\n invoiceEmailType: 'stripe' as const,\n invoiceTerm: 30 as const,\n isPartnerBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.HOMEHEALTHRESOURCEGROUP as const,\n patientSupportEmail: 'yves.delfin@hhrgconnect.com' as const,\n patientSupportPhoneE164: '+18772320807' as const,\n payer: 'partner' as const,\n priceUSD: makeDollar(79),\n requisitionUploadFromPartner: 'required' as const,\n reschedulingCoordinator: 'partner' as const,\n serviceRequestsFromPartner: 'skip' as const,\n skipCancelationFee: false as const,\n};\n\n/**\n * The configurations for each partner.\n *\n * Built from https://docs.google.com/spreadsheets/d/1QtRJxSmL--w_LS6A9z2bQQfx10uKcwBiVU_baUEo704.\n *\n * NOTE: Prefer `getPartnerConfig()`, which handles D2C, unless you are iterating over the partners\n * list.\n * Any sensitive partner information like Stripe IDs should go in getSensitivePartnerConfig.ts\n */\nexport const PARTNER_CONFIGS: {\n [partnerOrganization in PartnerOrganization]: PartnerConfig;\n} = {\n // Please try to keep this sorted.\n A1HOMEHEALTHANDHOSPICE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'A1 Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['a1hch.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.A1HOMEHEALTHANDHOSPICE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'intake@a1hch.com',\n patientSupportPhoneE164: '+19167063647',\n priceUSD: makeDollar(79),\n },\n AAHCKINDREDALAMEDA: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Asian American Home Care Alameda',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['gentiva.com']),\n fullPartnerDisplayNameForMessaging: 'Asian American Home Care',\n partnerOrganizationGroup: PartnerOrganizationGroup.AAHCKINDRED,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'yingyu.gao@gentiva.com',\n patientSupportPhoneE164: '+14082835100',\n },\n AAHCKINDREDSANJOSE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Asian American Home Care San Jose',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['gentiva.com']),\n fullPartnerDisplayNameForMessaging: 'Asian American Home Care',\n partnerOrganizationGroup: PartnerOrganizationGroup.AAHCKINDRED,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'qianyi.huang@gentiva.com',\n patientSupportPhoneE164: '+14082835100',\n priceUSD: makeDollar(99),\n },\n ABLHEALTHCARE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'ABL Health Care',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['ablhealthcare.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.ABLHEALTHCARE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@ablhealthcare.com',\n patientSupportPhoneE164: '+16502570559',\n },\n ACCOMPANYHEALTHMI: {\n ...GLOBAL_PARTNER_DEFAULTS,\n appointmentReportEmails: ['accompanydetroit.navigators@accompany.health'],\n automaticInvoiceSend: false,\n blockSharedSlotAppointments: false,\n canEditServicesAfterBooking: true,\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Accompany Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['accompany.health']),\n encounterSummaryReportingModel: 'partner' as const,\n excludeBillingForFailedAppointments: true,\n ignoreAbstentionsMessaging: false,\n insuranceUploadFromPartner: 'skip' as const,\n invoiceEmailType: 'stripe',\n invoiceTerm: 30,\n isGuestReschedulingAllowed: true,\n isPartnerBookingAllowed: true,\n isReferralBookingAllowed: false,\n isSelfBookingAllowed: false,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.URINE],\n [LabOrganization.SPRINTER_HEALTH]: [ServiceType.DIABETIC_RETINAL_SCAN],\n },\n maxAllowedPatientsPerBooking: 1 as number,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.ACCOMPANYHEALTH,\n partnerSupportResponsibleManager: 'Madi',\n patientConfig: PATIENT_CONFIG.ACCOMPANYHEALTHMI,\n payer: 'partner',\n paymentType: 'invoice',\n priceForProductsUSD: {\n DIABETIC_RETINAL_SCAN: makeDollar(50),\n LAB_TEST: makeDollar(20),\n },\n priceUSD: makeDollar(79),\n productTypesRequiringRequisitions: [ProductType.LAB_TEST],\n requisitionUploadFromPartner: 'required',\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsFromPartner: 'skip',\n shouldExportAppointmentsForBilling: true,\n shouldGenerateEncounterSummaryForVitals: true,\n showDiagnosisCodes: true,\n skipCancelationFee: true,\n supportedProductTypes: [ProductType.DIABETIC_RETINAL_SCAN, ProductType.LAB_TEST],\n vertical: 'healthPlan',\n zendeskOrganizationName: 'Accompany Health - Michigan',\n },\n AETNA: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: [\n '375', // eGFR/Creatinine\n '496', // Quest A1C\n '6517', // uACR/Microalbumin\n ],\n SPRINTER_HEALTH: [\n // TODO(aetna): support mailer and Relay\n // TODO(aetna)(86b44rua0): support Care Nav Booking Only workflow\n // TODO(aetna)(86b43yvth): add IHA service type and CPT code\n 'BLOOD-PRESSURE-CHECK',\n 'DIABETIC-RETINAL-SCAN',\n 'COLOGUARD-KIT-EDUCATION',\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n 'TOPICAL_FLUORIDE',\n 'PRAPARE_SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE',\n 'DEXA_SCAN_CARE_NAVIGATION_BOOKING', // For this partner, we are only getting paid for scheduling (not for confirmation)\n 'DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION',\n 'MAMMOGRAM_CARE_NAVIGATION_BOOKING',\n 'MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION',\n 'PCP_VISIT_CARE_NAVIGATION_BOOKING',\n 'PCP_VISIT_CARE_NAVIGATION_CONFIRMATION',\n 'WEIGHT_COUNSELING_FOR_CHILDREN',\n ],\n },\n appointmentReportEmails: [], // TODO(aetna): add emails once we have them; still waiting on partner, but should not block launch\n blockSharedSlotAppointments: false,\n canEditServicesAfterBooking: false,\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Aetna',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['']), // TODO(aetna): get the domain allow list; not launch blocking\n excludeBillingForFailedAppointments: true,\n fullPartnerDisplayNameForMessaging: 'Aetna',\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: '', // TODO(aetna)(86b43z2v5): create the internal coordinator if we still need one\n isAutofillingRequisitionsAllowed: true as const,\n isGuestReschedulingAllowed: true as const,\n isPartnerBookingAllowed: true as const, // The partner will not actually use a portal\n isReferralBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.URINE],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.COLOGUARD_KIT_EDUCATION,\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ServiceType.TOPICAL_FLUORIDE,\n ServiceType.SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE,\n ServiceType.DEXA_SCAN_CARE_NAVIGATION_BOOKING,\n ServiceType.DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.MAMMOGRAM_CARE_NAVIGATION_BOOKING,\n ServiceType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.PCP_VISIT_CARE_NAVIGATION_BOOKING,\n ServiceType.PCP_VISIT_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.WEIGHT_COUNSELING_FOR_CHILDREN,\n ],\n },\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.AETNA,\n partnerSupportResponsibleManager: 'Cameron',\n patientConfig: PATIENT_CONFIG.AETNA,\n patientSupportPhoneE164: '+18663294701',\n payer: 'partner',\n paymentType: 'claims',\n priceUSD: makeDollar(150),\n productTypesRequiringRequisitions: [ProductType.LAB_TEST],\n referralCoordinatorID: '', // TODO(aetna)(86b43z2v5): create the referral coordinator for bulk uploads\n requisitionUploadFromPartner: 'skip',\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsAddByDefault: {\n [LabOrganization.SPRINTER_HEALTH]: [\n {\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime',\n },\n ],\n },\n serviceRequestsFromPartner: 'skip',\n shortPartnerDisplayNameForMessaging: 'Aetna',\n shouldExportAppointmentsForBilling: true,\n shouldGenerateEncounterSummaryForVitals: true,\n shouldIncludeFailedAppointmentsInClaims: false,\n shouldUsePartnerBrands: true,\n showDiagnosisCodes: true,\n skipCancelationFee: true,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n },\n supportedProductTypes: [\n ProductType.VITALS,\n ProductType.LAB_TEST,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.COLOGUARD_KIT_EDUCATION,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.TOPICAL_FLUORIDE,\n ProductType.SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE,\n ProductType.DEXA_SCAN_CARE_NAVIGATION_BOOKING,\n ProductType.DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION,\n ProductType.MAMMOGRAM_CARE_NAVIGATION_BOOKING,\n ProductType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION,\n ProductType.PCP_VISIT_CARE_NAVIGATION_BOOKING,\n ProductType.PCP_VISIT_CARE_NAVIGATION_CONFIRMATION,\n ProductType.WEIGHT_COUNSELING_FOR_CHILDREN,\n ],\n supportsEDILabOrdering: true,\n supportsPatientEncounterSummary: true as const,\n supportsPatientEncounterSummaryDirectMail: true as const,\n supportsReferrals: true,\n vertical: 'healthPlan',\n zendeskOrganizationName: 'Aetna',\n },\n AFFORDABLEPATERNITY: {\n ...GLOBAL_PARTNER_DEFAULTS,\n defaultLabOrganization: LabOrganization.AFFORDABLE_PATERNITY,\n displayName: 'Affordable Paternity',\n isPartnerBookingAllowed: false,\n isSelfBookingAllowed: false,\n labOrganizations: {\n [LabOrganization.AFFORDABLE_PATERNITY]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n maxAllowedPatientsPerBooking: MAX_PATIENTS_PER_APPOINTMENT as number,\n onlyOrdersSingleServiceRequests: true,\n partnerOrganizationGroup: PartnerOrganizationGroup.AFFORDABLEPATERNITY,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'affordablednapaternitytesting@gmail.com',\n patientSupportPhoneE164: '+16502810610',\n payer: 'patient',\n supportedProductTypes: [ProductType.LAB_TEST],\n supportsReferrals: false as const,\n vertical: 'specialtyLab',\n },\n ALIGNMENTCAREEXTENSION: {\n ...GLOBAL_PARTNER_DEFAULTS,\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/alignment/alignment_logo.png',\n width: 112,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Alignment Health Clinical Team',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'ahcusa.com',\n 'sprinterhealth.com',\n ]),\n faxNumbersE164: ['+17146024885'],\n fullPartnerDisplayNameForMessaging: 'Alignment Health',\n insuranceUploadFromPartner: 'skip' as const,\n internalCoordinatorID: '25202a95-1cab-44f2-ade3-848ccc22ea0a' as const,\n isPartnerBookingAllowed: true as const,\n isReferralBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.LABCORP]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.CARE_NAVIGATION,\n ServiceType.ECG,\n ServiceType.VITALS,\n ],\n },\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.ALIGNMENTHEALTH,\n partnerSupportResponsibleManager: 'Carole',\n patientBookingAppointmentPhoneE164: '+18334139745',\n patientConfig: PATIENT_CONFIG.ALIGNMENTCAREEXTENSION,\n patientSupportPhoneE164: '+18332422223' as const,\n payer: 'partner' as const,\n paymentType: 'claims' as const,\n priceUSD: makeDollar(79),\n referralCoordinatorID: '282d86dd-d1ca-4e76-a018-42b15ab9e37d' as const,\n requisitionUploadFromPartner: 'required_after_booking' as const,\n reschedulingCoordinator: 'partner' as const,\n serviceRequestsFromPartner: 'skip' as const,\n shortPartnerDisplayNameForMessaging: 'Alignment',\n shouldGenerateEncounterSummaryForVitals: true,\n shouldIncludeFailedAppointmentsInClaims: true,\n shouldSendAppointmentReportToCoordinator: true,\n skipCancelationFee: true as const,\n supportedProductTypes: [\n ProductType.CARE_NAVIGATION_DROP_IN,\n ProductType.LAB_TEST,\n ProductType.ECG,\n ProductType.VITALS,\n ],\n supportedServiceRegions: [...DEFAULT_SUPPORTED_REGIONS, ...ALIGNMENT_EXTRA_SERVICE_AREAS],\n supportsReferrals: true as const,\n vertical: 'healthPlan',\n },\n ALIGNMENTSTARS: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: ['496', '375', '6517'],\n SPRINTER_HEALTH: [\n 'BLOOD-PRESSURE-CHECK',\n 'DIABETIC-RETINAL-SCAN',\n 'CONSULT-FECAL-OCCULT-BLOOD-TEST-KIT-DELIVERY',\n ],\n },\n appointmentReportEmails: ['stars@ahcusa.com'],\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/alignment/alignment_logo.png',\n width: 112,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Alignment Health STARS Team',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'sprinterhealth.com',\n 'ahcusa.com',\n ]),\n fullPartnerDisplayNameForMessaging: 'Alignment Health',\n insuranceUploadFromPartner: 'skip' as const,\n internalCoordinatorID: '1cb252a1-689d-4040-abbb-aae3a999d508' as const,\n isAutofillingRequisitionsAllowed: true,\n isPartnerBookingAllowed: true as const,\n isReferralBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.KIT_DELIVERY,\n ServiceType.VITALS,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ],\n },\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.ALIGNMENTHEALTH,\n partnerSupportResponsibleManager: 'Carole',\n patientConfig: PATIENT_CONFIG.ALIGNMENTSTARS,\n patientSupportPhoneE164: '+18332422223' as const,\n payer: 'partner' as const,\n paymentType: 'claims' as const,\n priceUSD: makeDollar(79),\n referralCoordinatorID: 'b6fc2bcd-8234-47fb-bdfc-bf56e251c683' as const,\n referralLandingPageUrlPath: 'alignment-health',\n referralVerificationPageUrlPath: 'alignment-health',\n requisitionUploadFromPartner: 'skip' as const,\n reschedulingCoordinator: 'sprinterHealth' as const,\n serviceRequestsFromPartner: 'required' as const,\n shortPartnerDisplayNameForMessaging: 'Alignment',\n shouldGenerateEncounterSummaryForVitals: true,\n shouldIncludeFailedAppointmentsInClaims: true,\n showDiagnosisCodes: true,\n skipCancelationFee: true as const,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n [ProductType.KIT_DELIVERY]: {\n defaultSprinterHealthExternalID: 'CONSULT-FECAL-OCCULT-BLOOD-TEST-KIT-DELIVERY',\n displayName: 'Colorectal screening kit delivery',\n message: '',\n },\n },\n supportedProductTypes: [\n ProductType.LAB_TEST,\n ProductType.KIT_DELIVERY,\n ProductType.VITALS,\n ProductType.DIABETIC_RETINAL_SCAN,\n ],\n supportsEDILabOrdering: false,\n supportsReferrals: true as const,\n vertical: 'healthPlan',\n },\n ALLIANCEHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Alliance Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['alliancehhllc.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.ALLIANCEHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'clopez@alliancehhllc.com',\n patientSupportPhoneE164: '+16502852503',\n priceUSD: makeDollar(99),\n },\n ALPHACARE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'AlphaCare',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'alphacarehomehealth.com',\n ]),\n partnerOrganizationGroup: PartnerOrganizationGroup.ALPHACARE,\n partnerSupportResponsibleManager: 'Sengyeon',\n },\n AMOREHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Amore Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['amorehomehealth.org']),\n partnerOrganizationGroup: PartnerOrganizationGroup.AMOREHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@amorehomehealth.org',\n patientSupportPhoneE164: '+14086492370',\n },\n APOLLOHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Apollo',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['apollohomehc.org']),\n partnerOrganizationGroup: PartnerOrganizationGroup.APOLLOHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@apollohomehc.com',\n patientSupportPhoneE164: '+19255878244',\n },\n ASIANNETWORKPACIFICHOMECARE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Asian Network Pacific Home Care',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['anphc.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.ASIANNETWORKPACIFICHOMECARE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'asianet@sbcglobal.net',\n patientSupportPhoneE164: '+15102681118',\n },\n ASSISTONCALL: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Assist On Call',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['assistoncallprof.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.ASSISTONCALL,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@assistoncallprof.com',\n patientSupportPhoneE164: '+19259697634',\n },\n BESTHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Best Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['besthhp.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.BESTHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@besthhp.com',\n patientSupportPhoneE164: '+15107831274',\n },\n BMC: {\n ...BMC_BASE,\n defaultLabOrganization: LabOrganization.BMC_LAB,\n // TODO(dhruv): Rename BMC to BMCGeriatric\n // This is the Partner Org for the BMC Geriatric Department\n displayName: 'BMC Geriatrics Home Care',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['bmc.org']),\n ignoreAbstentionsMessaging: true,\n insuranceUploadFromPartner: 'optional',\n labOrganizations: {\n [LabOrganization.BMC_LAB]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.VITALS,\n ServiceType.FIT_KIT_PICKUP,\n ],\n },\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.BMC,\n patientSupportEmail: 'conceicao.montrond@bmc.org',\n requisitionUploadFromPartner: 'required_after_booking',\n skipCancelationFee: true,\n supportedProductTypes: [ProductType.LAB_TEST, ProductType.FIT_KIT_PICKUP],\n },\n BMCDEMO: {\n ...STANDARD_HEALTH_SYSTEM_PARTNER_BOOKING,\n automaticInvoiceSend: false,\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'BMC Demo',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['sprinterhealth.com']),\n insuranceUploadFromPartner: 'skip',\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerFeedbackLink: 'https://sprinterhealth.com/feedback_bmc',\n partnerOrganizationGroup: PartnerOrganizationGroup.BMCDEMO,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.BMC,\n paymentType: 'invoice' as const,\n requisitionUploadFromPartner: 'optional',\n shouldSendAppointmentReportToCoordinator: true,\n skipCancelationFee: true,\n },\n BMCEVANS: {\n ...BMC_BASE,\n canEditServicesAfterBooking: true,\n defaultLabOrganization: LabOrganization.BMC_LAB,\n displayName: 'BMC Adult Primary Care',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'bmc.org',\n 'sprinterhealth.com',\n ]),\n ignoreAbstentionsMessaging: true,\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: 'e6528c40-1335-40f3-bd15-004090ab9217',\n labOrganizations: {\n [LabOrganization.BMC_LAB]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.VITALS,\n ServiceType.FIT_KIT_PICKUP,\n ],\n },\n nurseVitalsUrgencyLineInformation: {\n phoneNumbers: [\n {\n extension: '9871',\n phoneE164: '+16174145951',\n },\n ],\n },\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.BMCEVANS,\n patientSupportEmail: 'conceicao.montrond@bmc.org',\n priceForProductsUSD: {\n DIABETIC_RETINAL_SCAN: makeDollar(129),\n FIT_KIT_PICKUP: makeDollar(59),\n LAB_TEST: makeDollar(79),\n VITALS: makeDollar(59),\n },\n requisitionUploadFromPartner: 'required_after_booking',\n shouldSendAppointmentReportToCoordinator: true,\n skipCancelationFee: true,\n supportedProductTypes: [\n ProductType.LAB_TEST,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.VITALS,\n ProductType.FIT_KIT_PICKUP,\n ],\n vitalsThresholds: VITALS_CONFIG.BMCEVANS,\n },\n BMCFAMILYMEDICINE: {\n ...BMC_BASE,\n canEditServicesAfterBooking: true,\n defaultLabOrganization: LabOrganization.BMC_LAB,\n displayName: 'BMC Family Medicine',\n faxNumbersE164: ['+18575046220'],\n ignoreAbstentionsMessaging: true,\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: 'e97daa03-5d78-4f41-862b-84968111cf1c',\n labOrganizations: {\n [LabOrganization.BMC_LAB]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.VITALS,\n ServiceType.FIT_KIT_PICKUP,\n ],\n },\n nurseVitalsUrgencyLineInformation: {\n phoneNumbers: [\n {\n extension: '2076',\n phoneE164: '+18573010504',\n },\n ],\n },\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.BMCFAMILYMEDICINE,\n patientSupportEmail: 'conceicao.montrond@bmc.org',\n priceForProductsUSD: {\n DIABETIC_RETINAL_SCAN: makeDollar(129),\n FIT_KIT_PICKUP: makeDollar(59),\n LAB_TEST: makeDollar(79),\n VITALS: makeDollar(59),\n },\n requisitionUploadFromPartner: 'required_after_booking',\n shouldSendAppointmentReportToCoordinator: true,\n skipCancelationFee: true,\n supportedProductTypes: [\n ProductType.LAB_TEST,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.VITALS,\n ProductType.FIT_KIT_PICKUP,\n ],\n vitalsThresholds: VITALS_CONFIG.BMCFAMILYMEDICINE,\n },\n BRADFORDRABINMDANDHIROYUHATANOMD: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Bradford Rabin MD and Hiroyu Hatano MD',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['gmail.com']),\n insuranceUploadFromPatient: 'required',\n isMultiPatientBookingAllowed: false,\n isSelfBookingAllowed: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n maxAllowedPatientsPerBooking: 1,\n partnerOrganizationGroup: PartnerOrganizationGroup.BRADFORDRABINMDANDHIROYUHATANOMD,\n partnerSupportResponsibleManager: 'Sengyeon',\n priceUSD: makeDollar(99),\n requisitionUploadFromPatient: 'required',\n },\n CAPITOLHEALTHCARE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Capitol Healthcare',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'capitol-healthcare.com',\n 'gmail.com',\n ]),\n partnerOrganizationGroup: PartnerOrganizationGroup.CAPITOLHEALTHCARE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@capitol-healthcare.com',\n patientSupportPhoneE164: '+18883021215',\n },\n CAREINTOUCHHOMEHEALTHAGENCY: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Care In Touch Home Health Agency',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['careintouch.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.CAREINTOUCHHOMEHEALTHAGENCY,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'intake@careintouch.com',\n patientSupportPhoneE164: '+15106518500',\n priceUSD: makeDollar(99),\n },\n CAREMUST: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Care Must',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['caremust.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.CAREMUST,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'intake@caremust.com',\n patientSupportPhoneE164: '+14087551215',\n },\n CEDARSSINAI: {\n ...STANDARD_HEALTH_SYSTEM_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Cedars-Sinai',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['cshs.org', 'csmns.org']),\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerOrganizationGroup: PartnerOrganizationGroup.CEDARSSINAI,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.CEDARSSINAI,\n patientSupportPhoneE164: '+13102488311',\n paymentType: 'claims' as const,\n shouldIncludeFailedAppointmentsInClaims: true,\n },\n // Fields like fullPartnerDisplayNameForMessaging, cobranding will be applied at the brand level\n // and will be defined in the brand config\n // referralVerificationPageUrlPath isn't defined as we will just direct either via brand slug or just use the partner org\n CENTENECA: {\n ...CENTENE_BASE,\n displayName: 'Centene California',\n internalCoordinatorID: '9f4db1ff-cb30-4ace-9110-9813bcb43041',\n patientConfig: PATIENT_CONFIG.CENTENECA,\n referralCoordinatorID: '6003cc1a-2410-447a-8e6e-afd8a63cd3a2',\n zendeskOrganizationName: 'Centene - California',\n },\n CENTENECT: {\n ...CENTENE_BASE,\n allowedServiceRequests: {\n ...CENTENE_BASE.allowedServiceRequests,\n QUEST: [], // Labs isn't setup as we don't have insurance info yet\n },\n displayName: 'Centene Connecticut',\n internalCoordinatorID: 'e57c7eb5-c658-4b0d-8a62-e0de0be40aef',\n isAutofillingRequisitionsAllowed: false,\n patientConfig: PATIENT_CONFIG.CENTENECT,\n referralCoordinatorID: '10e60a21-d8bf-4ff4-b6b9-570f6e7aaceb',\n serviceRequestsAddByDefault: {\n [LabOrganization.SPRINTER_HEALTH]: [\n {\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime',\n },\n ],\n },\n supportedProductTypes: [\n // We don't have insurance info yet, so we can't support LAB_TEST\n ProductType.VITALS,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.QUESTIONNAIRES,\n ],\n supportsEDILabOrdering: false,\n zendeskOrganizationName: 'Centene - Connecticut',\n },\n CENTENEFL: {\n ...CENTENE_BASE,\n allowedServiceRequests: {\n ...CENTENE_BASE.allowedServiceRequests,\n QUEST: [], // Labs isn't setup as we don't have insurance info yet\n },\n displayName: 'Centene Florida',\n internalCoordinatorID: 'a7597a10-737b-496b-8e2d-d6102cbc39c3',\n isAutofillingRequisitionsAllowed: false,\n patientConfig: PATIENT_CONFIG.CENTENEFL,\n referralCoordinatorID: 'd37aadd3-e490-420d-bbd3-d43c1472b21b',\n supportedProductTypes: [\n // We don't have insurance info yet, so we can't support LAB_TEST\n ProductType.VITALS,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.QUESTIONNAIRES,\n ],\n supportsEDILabOrdering: false,\n zendeskOrganizationName: 'Centene - Florida',\n },\n CENTENEGA: {\n ...CENTENE_BASE,\n displayName: 'Centene Georgia',\n internalCoordinatorID: '94245058-b78b-47d6-ad36-786697126ccd',\n patientConfig: PATIENT_CONFIG.CENTENEGA,\n referralCoordinatorID: '0c753b05-13bd-4c5d-a1a4-fec4837e7294',\n zendeskOrganizationName: 'Centene - Georgia',\n },\n CENTENEIN: {\n ...CENTENE_BASE,\n allowedServiceRequests: {\n ...CENTENE_BASE.allowedServiceRequests,\n QUEST: [], // Labs isn't setup as we don't have insurance info yet\n },\n displayName: 'Centene Indiana',\n internalCoordinatorID: 'bfed8d8e-9838-4516-9885-1bb22587cccd',\n isAutofillingRequisitionsAllowed: false,\n patientConfig: PATIENT_CONFIG.CENTENEIN,\n referralCoordinatorID: '5771bc30-1c61-4629-a4a2-cb0588cdaca8',\n serviceRequestsAddByDefault: {\n [LabOrganization.SPRINTER_HEALTH]: [\n {\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime',\n },\n ],\n },\n supportedProductTypes: [\n // We don't have insurance info yet, so we can't support LAB_TEST\n ProductType.VITALS,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.QUESTIONNAIRES,\n ],\n supportsEDILabOrdering: false,\n zendeskOrganizationName: 'Centene - Indiana',\n },\n CENTENEKY: {\n ...CENTENE_BASE,\n allowedServiceRequests: {\n QUEST: [\n '375', // eGFR/Creatinine\n '496', // Quest A1C\n '6517', // uACR/Microalbumin\n '8293', // Direct LDL/Cholesterol\n ],\n SPRINTER_HEALTH: [\n 'BLOOD-PRESSURE-CHECK',\n 'DIABETIC-RETINAL-SCAN',\n 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n 'SDOH-QUESTIONNAIRE',\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n 'MAMMOGRAM_CARE_NAVIGATION_BOOKING',\n 'MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION',\n 'PAIN_SCREENING',\n 'WEIGHT_COUNSELING_FOR_CHILDREN',\n ],\n },\n careNavigationEpisodeSummaryReportingModel: 'none',\n displayName: 'Centene Kentucky',\n internalCoordinatorID: '2b8a8aea-3a52-44ad-9c8c-ff87eb056437',\n labOrganizations: {\n ...CENTENE_BASE.labOrganizations,\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.MAMMOGRAM_CARE_NAVIGATION_BOOKING,\n ServiceType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ServiceType.RACE_AND_ETHNICITY,\n ServiceType.SDOH_QUESTIONNAIRE,\n ServiceType.PAIN_SCREENING,\n ServiceType.WEIGHT_COUNSELING_FOR_CHILDREN,\n ],\n },\n patientConfig: PATIENT_CONFIG.CENTENEKY,\n priceForProductsUSD: {\n ...CENTENE_BASE.priceForProductsUSD,\n MAMMOGRAM_CARE_NAVIGATION_BOOKING: makeDollar(135),\n MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION: makeDollar(0),\n },\n referralCoordinatorID: 'f943b9e4-2485-4437-9379-b6d393d12564',\n serviceRequestsAddByDefault: {\n SPRINTER_HEALTH: [\n {\n exclusionEquivalentServiceRequestTypes: [\n {\n externalIDs: new Set(['WEIGHT_COUNSELING_FOR_CHILDREN']),\n labOrganization: LabOrganization.SPRINTER_HEALTH,\n },\n ],\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime' as const,\n },\n {\n exclusionEquivalentServiceRequestTypes: [\n {\n externalIDs: new Set(['WEIGHT_COUNSELING_FOR_CHILDREN']),\n labOrganization: LabOrganization.SPRINTER_HEALTH,\n },\n ],\n externalID: 'SDOH-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'ytd' as const,\n },\n ],\n },\n supportedProductTypes: [\n ...CENTENE_BASE.supportedProductTypes,\n ProductType.MAMMOGRAM_CARE_NAVIGATION_BOOKING,\n ProductType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION,\n ProductType.PAIN_SCREENING,\n ProductType.WEIGHT_COUNSELING_FOR_CHILDREN,\n ],\n zendeskOrganizationName: 'Centene - Kentucky',\n },\n CENTENEMA: {\n ...CENTENE_BASE,\n displayName: 'Centene Massachusetts',\n internalCoordinatorID: 'bdb29c91-5fbe-4799-8578-6918fa75a79e',\n patientConfig: PATIENT_CONFIG.CENTENEMA,\n referralCoordinatorID: 'c971aef4-e72f-43db-bd67-cebef136c365',\n zendeskOrganizationName: 'Centene - Massachusetts',\n },\n CENTENEME: {\n ...CENTENE_BASE,\n displayName: 'Centene Maine',\n internalCoordinatorID: '8a69c684-0dcf-4d08-91c2-001799811e83',\n patientConfig: PATIENT_CONFIG.CENTENEME,\n referralCoordinatorID: '2672fb38-3831-4516-a9b3-3c4af72a2424',\n serviceRequestsAddByDefault: {\n [LabOrganization.SPRINTER_HEALTH]: [\n {\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime',\n },\n ],\n },\n zendeskOrganizationName: 'Centene - Maine',\n },\n CENTENEMI: {\n ...CENTENE_BASE,\n displayName: 'Centene Michigan',\n internalCoordinatorID: '8b574147-eb51-479e-86f9-8581c682213c',\n patientConfig: PATIENT_CONFIG.CENTENEMI,\n referralCoordinatorID: 'e1da13ba-50eb-4183-afff-0b3ceed67669',\n serviceRequestsAddByDefault: {\n [LabOrganization.SPRINTER_HEALTH]: [\n {\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime',\n },\n {\n externalID: 'SDOH-QUESTIONNAIRE',\n prerequisiteCampaign:\n CampaignName.CENTENE_MICHIGAN_DUAL_MEDICAID_MEDICARE_INITIAL_ENGAGEMENT_2024,\n serviceSuccessfullyProvidedCutoffPeriod: 'ytd',\n },\n ],\n },\n zendeskOrganizationName: 'Centene - Michigan',\n },\n CENTENENH: {\n ...CENTENE_BASE,\n displayName: 'Centene New Hampshire',\n internalCoordinatorID: 'e9cd4815-982c-4c8a-a177-81256985d098',\n patientConfig: PATIENT_CONFIG.CENTENENH,\n referralCoordinatorID: '20ee2007-7ba6-418d-8fa7-a6026e40aaba',\n zendeskOrganizationName: 'Centene - New Hampshire',\n },\n CENTENEOH: {\n // Centene Ohio supports Cologuard, which requires overrides on a few fields below.\n ...CENTENE_BASE,\n allowedServiceRequests: {\n QUEST: [\n '375', // eGFR/Creatinine\n '496', // Quest A1C\n '6517', // uACR/Microalbumin\n ],\n SPRINTER_HEALTH: [\n 'BLOOD-PRESSURE-CHECK',\n 'DIABETIC-RETINAL-SCAN',\n 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n 'SDOH-QUESTIONNAIRE',\n 'COLOGUARD-KIT-EDUCATION', // Cologuard Kit Education externalID\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION', // If a patient fails contraindications for Cologuard, they will get FIT Kit\n ],\n },\n displayName: 'Centene Ohio',\n internalCoordinatorID: 'ca4656e0-da34-4940-987d-f34ffaad9173',\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.URINE],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.RACE_AND_ETHNICITY,\n ServiceType.SDOH_QUESTIONNAIRE,\n ServiceType.COLOGUARD_KIT_EDUCATION,\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ],\n },\n patientConfig: PATIENT_CONFIG.CENTENEOH,\n referralCoordinatorID: '47f7fe85-5e28-4205-a14e-d77144381f0e',\n serviceRequestsAddByDefault: {\n [LabOrganization.SPRINTER_HEALTH]: [\n {\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime',\n },\n {\n externalID: 'SDOH-QUESTIONNAIRE',\n prerequisiteCampaign: CampaignName.CENTENE_OHIO_MEDICAID_INITIAL_ENGAGEMENT_2024,\n serviceSuccessfullyProvidedCutoffPeriod: 'ytd',\n },\n ],\n },\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n },\n supportedProductTypes: [\n ProductType.LAB_TEST,\n ProductType.VITALS,\n ProductType.COLOGUARD_KIT_EDUCATION,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.QUESTIONNAIRES,\n ],\n zendeskOrganizationName: 'Centene - Ohio',\n },\n CENTENETX: {\n ...CENTENE_BASE,\n allowedServiceRequests: {\n ...CENTENE_BASE.allowedServiceRequests,\n QUEST: [], // Labs isn't setup as we don't have insurance info yet\n },\n displayName: 'Centene Texas',\n internalCoordinatorID: '87d60510-c34c-41f7-a3cf-de4ef3a94559',\n isAutofillingRequisitionsAllowed: false,\n patientConfig: PATIENT_CONFIG.CENTENETX,\n referralCoordinatorID: '52bb560c-311a-4dd8-985f-de9bde0331bb',\n serviceRequestsAddByDefault: {\n [LabOrganization.SPRINTER_HEALTH]: [\n {\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime',\n },\n ],\n },\n supportedProductTypes: [\n // We don't have insurance info yet, so we can't support LAB_TEST\n ProductType.VITALS,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.QUESTIONNAIRES,\n ],\n supportsEDILabOrdering: false,\n zendeskOrganizationName: 'Centene - Texas',\n },\n CENTRALCALIFORNIAALLIANCEFORHEALTH: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: [\n '496', // Quest A1C\n '39027', // QUest lead screening (capillary)\n ],\n SPRINTER_HEALTH: [\n 'BLOOD-PRESSURE-CHECK',\n 'COLOGUARD-KIT-EDUCATION',\n 'DIABETIC-RETINAL-SCAN',\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n 'PRAPARE_SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE',\n 'TOPICAL_FLUORIDE',\n 'WEIGHT_COUNSELING_FOR_CHILDREN',\n ],\n },\n appointmentReportEmails: [], // TODO(engagement): add emails once we have them; still waiting on partner, but should not block launch\n blockSharedSlotAppointments: false,\n canEditServicesAfterBooking: false,\n cobrandingLogo: {\n height: 32,\n uri: 'https://app.sprinterhealth.com/central-california-alliance-for-health/ccah_logo.png',\n width: 100,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Central California Alliance for Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['@thealliance.health']),\n excludeBillingForFailedAppointments: true,\n fullPartnerDisplayNameForMessaging: 'Central California Alliance for Health',\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: 'c61ea1bd-651e-46e8-b244-a0eb3894eb68',\n isAutofillingRequisitionsAllowed: true as const,\n isGuestReschedulingAllowed: true as const,\n isPartnerBookingAllowed: true as const,\n isReferralBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.CAPILLARY_BLOOD_DRAW],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.COLOGUARD_KIT_EDUCATION,\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ServiceType.SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE,\n ServiceType.TOPICAL_FLUORIDE,\n ServiceType.VITALS,\n ServiceType.WEIGHT_COUNSELING_FOR_CHILDREN,\n ],\n },\n leadScreeningEligibilityRequirements: HEDIS_LEAD_SCREENING_AGE_REQUIREMENTS,\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.CENTRALCALIFORNIAALLIANCEFORHEALTH,\n partnerSupportResponsibleManager: 'Miranda',\n patientConfig: PATIENT_CONFIG.CENTRALCALIFORNIAALLIANCEFORHEALTH,\n patientSupportPhoneE164: '+18007003874',\n payer: 'partner',\n paymentType: 'claims',\n priceUSD: makeDollar(149),\n productTypesRequiringRequisitions: [ProductType.LAB_TEST],\n referralCoordinatorID: '092fa6b1-5b28-43e5-992c-e58b0273b3f4',\n referralLandingPageUrlPath: 'ccah', // TODO(engagement): remove the referral landing page in subsequent PR\n referralVerificationPageUrlPath: 'ccah',\n requisitionUploadFromPartner: 'skip',\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsAddByDefault: {\n SPRINTER_HEALTH: [\n {\n externalID: 'PRAPARE_SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE',\n serviceSuccessfullyProvidedCutoffPeriod: 'ytd' as const,\n },\n ],\n },\n serviceRequestsFromPartner: 'required',\n shortPartnerDisplayNameForMessaging: 'The Alliance',\n shouldExportAppointmentsForBilling: true,\n shouldGenerateEncounterSummaryForVitals: true,\n shouldIncludeFailedAppointmentsInClaims: false,\n shouldSkipPriorLeadScreeningsQuestion: true,\n showDiagnosisCodes: true,\n skipCancelationFee: true,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n },\n supportedProductTypes: [\n ProductType.COLOGUARD_KIT_EDUCATION,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.LAB_TEST,\n ProductType.SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE,\n ProductType.TOPICAL_FLUORIDE,\n ProductType.VITALS,\n ProductType.WEIGHT_COUNSELING_FOR_CHILDREN,\n ],\n supportsEDILabOrdering: true,\n supportsPatientEncounterSummary: true as const,\n supportsPatientEncounterSummaryDirectMail: true as const,\n supportsReferrals: true,\n vertical: 'healthPlan',\n zendeskOrganizationName: 'Central California Alliance',\n },\n CHARLESRIVERFAMILYMEDICINE: {\n ...BMC_BASE,\n canEditServicesAfterBooking: true,\n defaultLabOrganization: LabOrganization.BMC_LAB,\n displayName: 'BMC Charles River Family Medicine',\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: '5630a386-2c0c-496c-93fd-b40933cc3c8b',\n labOrganizations: {\n [LabOrganization.BMC_LAB]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.VITALS,\n ServiceType.FIT_KIT_PICKUP,\n ],\n },\n nurseVitalsUrgencyLineInformation: {\n phoneNumbers: [\n {\n phoneE164: '+16174149660',\n },\n ],\n },\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.CHARLESRIVERFAMILYMEDICINE,\n patientSupportPhoneE164: '+16176385829' as const,\n requisitionUploadFromPartner: 'required_after_booking',\n skipCancelationFee: true,\n supportedProductTypes: [\n ProductType.VITALS,\n ProductType.FIT_KIT_PICKUP,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.LAB_TEST,\n ],\n },\n CODMAN: {\n ...BMC_BASE,\n canEditServicesAfterBooking: true,\n defaultLabOrganization: LabOrganization.CODMAN_LAB,\n displayName: 'Codman',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'codman.org',\n 'sprinterhealth.com',\n ]),\n ignoreAbstentionsMessaging: true,\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: '05098ab6-fc19-4389-b794-c873b67a92f7',\n labOrganizations: {\n [LabOrganization.CODMAN_LAB]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.VITALS,\n ServiceType.FIT_KIT_PICKUP,\n ],\n },\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.CODMAN,\n patientSupportPhoneE164: '+16178228189',\n priceForProductsUSD: {\n DIABETIC_RETINAL_SCAN: makeDollar(129),\n FIT_KIT_PICKUP: makeDollar(59),\n LAB_TEST: makeDollar(79),\n VITALS: makeDollar(59),\n },\n requisitionUploadFromPartner: 'required_after_booking',\n shouldSendAppointmentReportToCoordinator: true,\n skipCancelationFee: true,\n supportedProductTypes: [\n ProductType.LAB_TEST,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.VITALS,\n ProductType.FIT_KIT_PICKUP,\n ],\n vitalsThresholds: VITALS_CONFIG.CODMAN,\n },\n COMFORTHOMEHEALTHCARE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Comfort Home Health Care',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'yahoo.com',\n 'gmail.com',\n ]),\n partnerOrganizationGroup: PartnerOrganizationGroup.COMFORTHOMEHEALTHCARE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'comforthomehealth2021@yahoo.com',\n patientSupportPhoneE164: '+14084525927',\n },\n CONCIERGEMDLA: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n displayName: 'Concierge MD LA',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['conciergemdla.com']),\n invoiceEmailType: 'custom' as const,\n maxAllowedPatientsPerBooking: 1,\n partnerOrganizationGroup: PartnerOrganizationGroup.CONCIERGEMDLA,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'operations@conciergemdla.com',\n patientSupportPhoneE164: '+13239314662',\n priceUSD: makeDollar(99),\n },\n DEMOLAB: {\n ...STANDARD_SPECIALTY_LAB_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.DEMO_LAB,\n displayName: 'Widget Labs',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([]), // since this is a test org\n labOrganizations: {\n [LabOrganization.DEMO_LAB]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerOrganizationGroup: PartnerOrganizationGroup.DEMOLAB,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'support@widgetlabs.com',\n patientSupportPhoneE164: '+15551234567',\n },\n DEMOPROVIDER: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Widget MD',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([]), // since this is a test org\n insuranceUploadFromPartner: 'optional',\n partnerOrganizationGroup: PartnerOrganizationGroup.DEMOPROVIDER,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'support@widgetmd.com',\n patientSupportPhoneE164: '+15551234567',\n requisitionUploadFromPartner: 'optional',\n },\n DEVOTEDHEALTH: {\n ...GLOBAL_PARTNER_DEFAULTS,\n automaticInvoiceSend: false,\n canEditServicesAfterBooking: true,\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Devoted Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['devoted.com']),\n encounterSummaryReportingModel: 'partner',\n faxNumbersE164: ['+18665772322'],\n insuranceUploadFromPartner: 'skip',\n invoiceEmailType: 'stripe',\n invoiceTerm: 60,\n isAutofillingRequisitionsAllowed: false,\n isGuestReschedulingAllowed: true,\n isPartnerBookingAllowed: true,\n isReferralBookingAllowed: false,\n isSelfBookingAllowed: false,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.URINE],\n [LabOrganization.SPRINTER_HEALTH]: [ServiceType.DIABETIC_RETINAL_SCAN],\n },\n maxAllowedPatientsPerBooking: 2,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.DEVOTEDHEALTH,\n partnerSupportResponsibleManager: 'Madi' as PartnerResponsibleManager,\n patientConfig: PATIENT_CONFIG.DEVOTEDHEALTH,\n patientSupportPhoneE164: '+18888022738',\n payer: 'partner',\n paymentType: 'invoice',\n priceForProductsUSD: {\n COLOGUARD_KIT_EDUCATION: makeDollar(20),\n DIABETIC_RETINAL_SCAN: makeDollar(50),\n LAB_TEST: makeDollar(20),\n VITALS: makeDollar(10), // BP check\n },\n priceUSD: makeDollar(130),\n productTypesRequiringRequisitions: [ProductType.LAB_TEST],\n requisitionUploadFromPartner: 'required',\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsFromPartner: 'skip',\n shortPartnerDisplayNameForMessaging: 'Devoted',\n shouldExportAppointmentsForBilling: true,\n shouldSkipPriorLeadScreeningsQuestion: true,\n showDiagnosisCodes: false,\n skipCancelationFee: false,\n supportedProductTypes: [ProductType.LAB_TEST, ProductType.DIABETIC_RETINAL_SCAN],\n supportsPatientEncounterSummary: false,\n vertical: 'healthPlan',\n zendeskOrganizationName: 'Devoted Health',\n },\n DISCOVERHEALTH: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n displayName: 'Discover Health MD',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['discoverhealthmd.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.DISCOVERHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'office@discoverhealthmd.com',\n patientSupportPhoneE164: '+14157327029',\n priceUSD: makeDollar(99),\n requisitionUploadFromPartner: 'required_after_booking',\n skipCancelationFee: true,\n supportedProductTypes: [ProductType.LAB_TEST],\n vitalsThresholds: VITALS_CONFIG.DISCOVERHEALTH,\n },\n DOTHOUSE: {\n ...BMC_BASE,\n canEditServicesAfterBooking: true,\n defaultLabOrganization: LabOrganization.DOTHOUSE_LAB,\n displayName: 'Dothouse',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'dothousehealth.org',\n 'sprinterhealth.com',\n ]),\n ignoreAbstentionsMessaging: true,\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: '5205534e-3874-465e-aaa2-71f7ecf1cc93',\n labOrganizations: {\n [LabOrganization.DOTHOUSE_LAB]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.VITALS,\n ServiceType.FIT_KIT_PICKUP,\n ],\n },\n nurseVitalsUrgencyLineInformation: {\n phoneNumbers: [\n {\n extension: '6286',\n phoneE164: '+16172883230',\n },\n ],\n },\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.DOTHOUSE,\n priceForProductsUSD: {\n DIABETIC_RETINAL_SCAN: makeDollar(129),\n FIT_KIT_PICKUP: makeDollar(59),\n LAB_TEST: makeDollar(79),\n VITALS: makeDollar(59),\n },\n requisitionUploadFromPartner: 'required_after_booking',\n skipCancelationFee: true,\n supportedProductTypes: [\n ProductType.LAB_TEST,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.VITALS,\n ProductType.FIT_KIT_PICKUP,\n ],\n },\n DRIPHYDRATION: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Drip Hydration',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'driphydration.com',\n 'dripecm.com',\n ]),\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.LABCORP]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerOrganizationGroup: PartnerOrganizationGroup.DRIPHYDRATION,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'dispatch@dripecm.com',\n patientSupportPhoneE164: '+17867789641',\n },\n DRIPHYDRATIONPALOALTO: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n displayName: 'Drip Hydration',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'driphydration.com',\n 'gmail.com',\n 'icloud.com',\n ]),\n partnerOrganizationGroup: PartnerOrganizationGroup.DRIPHYDRATION,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'eric@driphydration.com',\n patientSupportPhoneE164: '+16503915465',\n },\n DRVILLIVALAM: {\n ...GLOBAL_PARTNER_DEFAULTS,\n defaultLabOrganization: STANDARD_REFERENCE_LAB_ORGANIZATION,\n displayName: 'Dr. Villivalam',\n insuranceUploadFromPatient: 'required',\n isMultiPatientBookingAllowed: true,\n isPartnerBookingAllowed: false,\n isSelfBookingAllowed: true,\n labOrganizations: STANDARD_REFERENCE_LAB_ORGANIZATION_SETTINGS,\n maxAllowedPatientsPerBooking: MAX_PATIENTS_PER_APPOINTMENT as number,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.DRVILLIVALAM,\n partnerSupportResponsibleManager: 'Sengyeon',\n payer: 'patient',\n requisitionUploadFromPatient: 'required',\n supportedProductTypes: [ProductType.LAB_TEST],\n vertical: 'drVillivalam',\n },\n ELDERCAREMANAGEMENT: {\n ...STANDARD_HEALTH_SYSTEM_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Elder Care Management',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'eldercm.com',\n 'elderm.com',\n ]),\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.LABCORP]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerOrganizationGroup: PartnerOrganizationGroup.ELDERCAREMANAGEMENT,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@eldercm.com',\n patientSupportPhoneE164: '+19162064420',\n },\n // Fields like fullPartnerDisplayNameForMessaging are applied at the brand level\n // and are defined in the brand config\n ELEVANCEHEALTH: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: [\n '375', // eGFR/Creatinine\n '496', // Quest A1C\n '6517', // uACR/Microalbumin\n ],\n SPRINTER_HEALTH: [\n 'ANNUAL_WELLNESS_VISIT_PROVIDER_CALL',\n 'BLOOD-PRESSURE-CHECK',\n 'DEXA_SCAN_CARE_NAVIGATION_BOOKING',\n 'DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION',\n 'DIABETIC-RETINAL-SCAN',\n 'HEIGHT_AND_WEIGHT_COLLECTION',\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n 'MAMMOGRAM_CARE_NAVIGATION_BOOKING',\n 'MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION',\n 'MINI_OMNI_BONE_DENSITY_SCAN',\n 'PCP_VISIT_CARE_NAVIGATION_BOOKING',\n 'PCP_VISIT_CARE_NAVIGATION_CONFIRMATION',\n 'PRAPARE_SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE',\n 'STATIN_ADHERENCE_ASSESSMENT',\n ],\n },\n automaticInvoiceSend: false,\n careNavigationEpisodeSummaryReportingModel: 'partnerSFTPAndPractitioner',\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Elevance Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['elevancehealth.com']),\n encounterSummaryReportingModel: 'practitionerOrThrow', // We will be sending the report to the partner as well via SFTP\n excludeBillingForFailedAppointments: true,\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: '2e77d405-24e2-4b9e-af35-95ffefb12e17',\n invoiceEmailType: 'stripe',\n invoiceTerm: 60,\n isAutofillingRequisitionsAllowed: true,\n isGuestReschedulingAllowed: true,\n isPartnerBookingAllowed: true as const,\n isReferralBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.URINE],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL,\n ServiceType.BONE_DENSITY_SCAN,\n ServiceType.VITALS,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.DEXA_SCAN_CARE_NAVIGATION_BOOKING,\n ServiceType.DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.MAMMOGRAM_CARE_NAVIGATION_BOOKING,\n ServiceType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.PCP_VISIT_CARE_NAVIGATION_BOOKING,\n ServiceType.PCP_VISIT_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ServiceType.SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE,\n ServiceType.HEIGHT_AND_WEIGHT_COLLECTION,\n ServiceType.STATIN_ADHERENCE_ASSESSMENT,\n ],\n },\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.ELEVANCEHEALTH,\n partnerSupportResponsibleManager: 'Carole',\n patientConfig: PATIENT_CONFIG.ELEVANCEHEALTH,\n // There is no patientSupportPhone & patientSupportEmail for Elevance Health\n payer: 'partner' as const,\n paymentType: 'invoice',\n priceForProductsUSD: {\n ANNUAL_WELLNESS_VISIT_PROVIDER_CALL: makeDollar(420), // AWV Provider Call\n BONE_DENSITY_SCAN: makeDollar(650), // Bone Density Scan in home service\n DEXA_SCAN_CARE_NAVIGATION_BOOKING: makeDollar(90), // Bone Density Scan booking\n DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION: makeDollar(90), // Bone Density Scan confirmation\n DIABETIC_RETINAL_SCAN: makeDollar(50), // Eye Exam\n HEIGHT_AND_WEIGHT_COLLECTION: makeDollar(0), // Height and Weight collection for AWV. Setting this to 0 since we will have a separate product price for AWV VISIT\n KIT_DELIVERY_AND_EDUCATION: makeDollar(15), // Insure One Fit Kit\n LAB_TEST: makeDollar(20), // Labs\n MAMMOGRAM_CARE_NAVIGATION_BOOKING: makeDollar(90), // Breast Cancer Screening booking\n MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION: makeDollar(90), // Breast Cancer Screening confirmation\n PCP_VISIT_CARE_NAVIGATION_BOOKING: makeDollar(90), // PCP visit booking\n PCP_VISIT_CARE_NAVIGATION_CONFIRMATION: makeDollar(90), // PCP visit confirmation\n SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE: makeDollar(20), // SDOH Care Navigation questionnaire\n VITALS: makeDollar(5), // BP Check\n },\n priceUSD: makeDollar(145),\n referralCoordinatorID: '9e047f7d-ae2d-4c92-b47e-5d9762aac668',\n referralVerificationPageUrlPath: 'elevancehealth',\n requisitionUploadFromPartner: 'skip',\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsAddByDefault: {\n SPRINTER_HEALTH: [\n {\n externalID: 'HEIGHT_AND_WEIGHT_COLLECTION',\n prerequisiteServiceTypes: [ServiceType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL],\n },\n {\n externalID: 'VITALS-CHECK',\n prerequisiteServiceTypes: [ServiceType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL],\n },\n ],\n },\n serviceRequestsFromPartner: 'required',\n shouldExportAppointmentsForBilling: true,\n shouldGenerateEncounterSummaryForVitals: true,\n shouldHideSprinterHealthSupportEmailInReferralsFlow: true,\n shouldUsePartnerBrands: true as const,\n showDiagnosisCodes: true,\n skipCancelationFee: true,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n },\n supportedProductTypes: [\n ProductType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL,\n ProductType.BONE_DENSITY_SCAN,\n ProductType.VITALS,\n ProductType.LAB_TEST,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.DEXA_SCAN_CARE_NAVIGATION_BOOKING,\n ProductType.DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION,\n ProductType.HEIGHT_AND_WEIGHT_COLLECTION,\n ProductType.MAMMOGRAM_CARE_NAVIGATION_BOOKING,\n ProductType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION,\n ProductType.PCP_VISIT_CARE_NAVIGATION_BOOKING,\n ProductType.PCP_VISIT_CARE_NAVIGATION_CONFIRMATION,\n ProductType.SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE,\n ProductType.STATIN_ADHERENCE_ASSESSMENT,\n ],\n supportsEDILabOrdering: true,\n supportsPatientEncounterSummary: true as const,\n supportsPatientEncounterSummaryDirectMail: true as const,\n supportsReferrals: true,\n vertical: 'healthPlan',\n zendeskOrganizationName: 'Elevance Health',\n },\n EMMANUELHEALTHCAREINC: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Emmanuel Healthcare',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['emmanuelhc.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.EMMANUELHEALTHCAREINC,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'intake@emmanuelhc.com',\n patientSupportPhoneE164: '+15108944139',\n },\n ESSENTIALSHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Essentials Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'essentialshomehealth.com',\n ]),\n partnerOrganizationGroup: PartnerOrganizationGroup.ESSENTIALSHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'maininbox@essentialshomehealth.com',\n patientSupportPhoneE164: '+15102395337',\n priceUSD: makeDollar(99),\n },\n EXACTSCIENCES: {\n ...STANDARD_SPECIALTY_LAB_PARTNER_BOOKING,\n ...STANDARD_SPECIALTY_LAB_SELF_BOOKING,\n cobrandingLogo: {\n height: 200,\n uri: 'https://app.sprinterhealth.com/images/exact-sciences-logo.png',\n width: 200,\n },\n defaultLabOrganization: LabOrganization.EXACT_SCIENCES,\n displayName: 'Exact Sciences',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['exactsciences.com']),\n isMultiPatientBookingAllowed: false,\n labOrganizations: {\n [LabOrganization.EXACT_SCIENCES]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n onlyOrdersSingleServiceRequests: true,\n partnerOrganizationGroup: PartnerOrganizationGroup.EXACTSCIENCES,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'oglclientaccountrep@exactsciences.com',\n patientSupportPhoneE164: '+18448708870',\n requisitionUploadFromPartner: 'optional',\n schedulingTimeRangeRules: SCHEDULING_TIME_RANGE_CONFIGS.EXACTSCIENCES,\n serviceRequestsFormatType: 'N',\n serviceRequestsFromPartner: 'required',\n },\n FIREFLYHEALTH: {\n ...GLOBAL_PARTNER_DEFAULTS,\n automaticInvoiceSend: false,\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/firefly/firefly_logo.png',\n width: 112,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Firefly',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['firefly.health']),\n faxNumbersE164: ['+18573438192'],\n insuranceUploadFromPartner: 'skip',\n invoiceEmailType: 'stripe',\n invoiceTerm: 30,\n isPartnerBookingAllowed: true,\n isReferralBookingAllowed: true,\n isSelfBookingAllowed: false,\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.DIABETIC_FOOT_SCREENING,\n ServiceType.CARDIAC_AUSCULTATION,\n ServiceType.ECG,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ],\n },\n maxAllowedPatientsPerBooking: 1 as number,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.FIREFLYHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.FIREFLYHEALTH,\n patientSupportPhoneE164: '+18888971887',\n payer: 'partner',\n paymentType: 'invoice',\n priceUSD: makeDollar(79),\n referralCoordinatorID: 'bb98f99f-dab8-48d7-944f-54a4843a3c2f',\n referralLandingPageUrlPath: 'firefly-health',\n requisitionUploadFromPartner: 'required',\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsFromPartner: 'skip',\n shouldExportAppointmentsForBilling: true,\n shouldGenerateEncounterSummaryForVitals: true,\n skipCancelationFee: false,\n supportedProductTypes: [\n ProductType.VITALS,\n ProductType.DIABETIC_FOOT_SCREENING,\n ProductType.CARDIAC_AUSCULTATION,\n ProductType.ECG,\n ProductType.LAB_TEST,\n ProductType.DIABETIC_RETINAL_SCAN,\n ],\n supportsReferrals: true,\n vertical: 'healthPlan',\n vitalsThresholds: VITALS_CONFIG.FIREFLYHEALTH,\n },\n FIRSTCHOICEHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: '1st Choice Home Health & Hospice',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['firstchoice-hha.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.FIRSTCHOICEHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'aamir@firstchoice-hha.com',\n patientSupportPhoneE164: '+16503935936',\n },\n FOUNDATIONMEDICINE: {\n ...STANDARD_SPECIALTY_LAB_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.FOUNDATION_MEDICINE,\n displayName: 'Foundation Medicine',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'foundationmedicine.com',\n ]),\n invoiceEmailType: 'custom' as const,\n invoiceTerm: 60 as const,\n labOrganizations: {\n [LabOrganization.FOUNDATION_MEDICINE]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerOrganizationGroup: PartnerOrganizationGroup.FOUNDATIONMEDICINE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'client.services@foundationmedicine.com',\n patientSupportPhoneE164: '+18889883639',\n priceUSD: makeDollar(75),\n skipCancelationFee: true,\n },\n GEORGIAHANDSHOULDERELBOW: {\n ...GLOBAL_PARTNER_DEFAULTS,\n blockSharedSlotAppointments: true,\n defaultLabOrganization: LabOrganization.SPRINTER_HEALTH,\n disallowedServiceRequests: { SPRINTER_HEALTH: ['BD-C19-AG'] },\n displayName: 'Georgia Hand, Shoulder & Elbow',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'gahand.org',\n 'oxos.com',\n ]),\n insuranceUploadFromPartner: 'skip',\n isPartnerBookingAllowed: true,\n isSelfBookingAllowed: false,\n labOrganizations: { [LabOrganization.SPRINTER_HEALTH]: [ServiceType.XRAY] },\n maxAllowedPatientsPerBooking: MAX_PATIENTS_PER_APPOINTMENT as number,\n onlyOrdersSingleServiceRequests: true,\n partnerOrganizationGroup: PartnerOrganizationGroup.GEORGIAHANDSHOULDERELBOW,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportPhoneE164: '+14043523522',\n payer: 'none',\n priceUSD: ZERO_DOLLARS,\n requisitionUploadFromPartner: 'skip',\n reschedulingCoordinator: 'partner',\n serviceRequestsFormatType: 'N C',\n serviceRequestsFromPartner: 'required',\n supportedProductTypes: [ProductType.XRAY],\n vertical: 'concierge',\n },\n GRAIL: {\n ...STANDARD_SPECIALTY_LAB_PARTNER_BOOKING,\n ...STANDARD_SPECIALTY_LAB_SELF_BOOKING,\n defaultLabOrganization: LabOrganization.GRAIL,\n displayName: 'GRAIL',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['grailbio.com']),\n invoiceTerm: 60 as const,\n labOrganizations: {\n [LabOrganization.GRAIL]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerFeedbackLink: 'https://sprinterhealth.com/feedback_grail',\n partnerOrganizationGroup: PartnerOrganizationGroup.GRAIL,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'customerservice@grail.com',\n patientSupportPhoneE164: '+18336942553',\n priceUSD: makeDollar(75),\n skipCancelationFee: true,\n },\n GUARDANT: {\n ...STANDARD_SPECIALTY_LAB_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.GUARDANT,\n disallowedServiceRequests: { GUARDANT: ['GuardantShield'] },\n displayName: 'Guardant',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['guardanthealth.com']),\n labOrganizations: {\n [LabOrganization.GUARDANT]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerFeedbackLink: 'https://sprinterhealth.com/feedback_guardant',\n partnerOrganizationGroup: PartnerOrganizationGroup.GUARDANT,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'clientservices@guardanthealth.com',\n patientSupportPhoneE164: '+18556988887',\n priceUSD: makeDollar(75),\n requisitionUploadFromPartner: 'required',\n },\n GUARDANTSHIELD: {\n ...STANDARD_SPECIALTY_LAB_PARTNER_BOOKING,\n allowedServiceRequests: { GUARDANT: ['GuardantShield'] },\n defaultLabOrganization: LabOrganization.GUARDANT,\n displayName: 'Guardant Shield',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['guardanthealth.com']),\n labOrganizations: {\n [LabOrganization.GUARDANT]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerFeedbackLink: 'https://sprinterhealth.com/feedback_guardant',\n partnerOrganizationGroup: PartnerOrganizationGroup.GUARDANT,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'clientservices@guardanthealth.com',\n patientSupportPhoneE164: '+18557227335',\n priceUSD: makeDollar(75),\n requisitionUploadFromPartner: 'optional',\n selectSingleServiceRequestExternalID: 'GuardantShield',\n },\n GUARDIANANGELHOMECARE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Guardian Angel Home Care',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['gahc94.com']),\n invoiceEmailType: 'custom' as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.GUARDIANANGELHOMECARE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'sanjoseintake@gahc94.com',\n patientSupportPhoneE164: '+14082611120',\n },\n HALESPORTS: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n displayName: 'HALE Sports',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'halesports.com',\n 'gmail.com',\n 'adaptandperform.com',\n ]),\n partnerOrganizationGroup: PartnerOrganizationGroup.HALESPORTS,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'contact@halesports.com',\n patientSupportPhoneE164: '+16465490630',\n },\n HARMONYHHPLEASANTHILL: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Harmony Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['harmonyhcare.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.HARMONYHH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'zoen@harmonyhcare.com',\n patientSupportPhoneE164: '+19253325422',\n priceUSD: makeDollar(99),\n },\n HARMONYHHSANTACLARA: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Harmony Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['harmonyhcare.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.HARMONYHH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'zoen@harmonyhcare.com',\n patientSupportPhoneE164: '+14082607062',\n priceUSD: makeDollar(99),\n },\n HEALTHFLEXHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'HealthFlex',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['healthflex.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.HEALTHFLEX,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'labs@healthflex.com',\n patientSupportPhoneE164: '+15105531900',\n priceUSD: makeDollar(99),\n },\n HEALTHFLEXHOSPICE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'HealthFlex Hospice',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['healthflex.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.HEALTHFLEX,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'barbara@healthflex.com',\n patientSupportPhoneE164: '+16508252802',\n vertical: 'hospice',\n },\n HHRGCARELINK: {\n ...HOME_HEALTH_RESOURCE_GROUP_BASE,\n automaticInvoiceSend: true,\n displayName: 'Carelink Home Health',\n partnerSupportResponsibleManager: 'Sengyeon',\n },\n HHRGELIXIR: {\n ...HOME_HEALTH_RESOURCE_GROUP_BASE,\n displayName: 'Elixir',\n partnerSupportResponsibleManager: 'Sengyeon',\n },\n HHRGGOLDENPACIFICHOMEHEALTH: {\n ...HOME_HEALTH_RESOURCE_GROUP_BASE,\n displayName: 'Golden Pacific Home Health',\n partnerSupportResponsibleManager: 'Sengyeon',\n },\n HHRGHELPINGHANDS: {\n ...HOME_HEALTH_RESOURCE_GROUP_BASE,\n displayName: 'Helping Hands',\n partnerSupportResponsibleManager: 'Sengyeon',\n },\n HHRGMARYSHELP: {\n ...HOME_HEALTH_RESOURCE_GROUP_BASE,\n displayName: \"Mary's Help\",\n partnerSupportResponsibleManager: 'Sengyeon',\n },\n HHRGNORCAL: {\n ...HOME_HEALTH_RESOURCE_GROUP_BASE,\n displayName: 'Nor-Cal',\n partnerSupportResponsibleManager: 'Sengyeon',\n },\n HOMEHEALTHBAYAREAINC: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Home Health Bay Area',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['homehealthbayarea.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.HOMEHEALTHBAYAREAINC,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'Nicole@homehealthbayarea.com',\n patientSupportPhoneE164: '+16505908300',\n },\n HUMANA: {\n ...HUMANA_BASE,\n displayName: 'Humana National',\n internalCoordinatorID: '3963e020-f1d3-4983-97f8-dcebb5aebb5c',\n patientConfig: PATIENT_CONFIG.HUMANA,\n referralCoordinatorID: '0bd392d8-67cd-487f-af43-3b1fe4f1aff4',\n referralLandingPageUrlPath: 'humana',\n referralVerificationPageUrlPath: 'humana',\n shouldExportAppointmentsForBilling: true,\n zendeskOrganizationName: 'Humana - National',\n },\n HUMANAMI: {\n ...HUMANA_BASE,\n displayName: 'Humana MI',\n internalCoordinatorID: 'a6149584-4449-4a16-9147-b8c48173bc87',\n patientConfig: PATIENT_CONFIG.HUMANAMI,\n referralCoordinatorID: '594786dd-0dd7-459d-ab30-2eb4f3dcb980',\n referralLandingPageUrlPath: 'humana-mi',\n referralVerificationPageUrlPath: 'humana-mi',\n shouldExportAppointmentsForBilling: true,\n zendeskOrganizationName: 'Humana - Michigan',\n },\n HUMANANY: {\n ...HUMANA_BASE,\n displayName: 'Humana NY',\n internalCoordinatorID: 'e68ac8a6-03a3-4ff4-bfa2-cae0a5631029',\n patientConfig: PATIENT_CONFIG.HUMANANY,\n referralCoordinatorID: '591442f7-e344-4b1c-b230-7492c00dfde8',\n referralLandingPageUrlPath: 'humana-ny',\n referralVerificationPageUrlPath: 'humana-ny',\n shouldExportAppointmentsForBilling: true,\n zendeskOrganizationName: 'Humana - New York',\n },\n INTERMOUNTAINCANCERCENTERRIVERTON: {\n ...INTERMOUNTAIN_CANCER_CENTER_BASE,\n displayName: 'Intermountain Cancer Center Riverton',\n fullPartnerDisplayNameForMessaging: 'Intermountain Cancer Center',\n },\n INTERMOUNTAINCANCERCENTERSALTLAKE: {\n ...INTERMOUNTAIN_CANCER_CENTER_BASE,\n displayName: 'Intermountain Cancer Center Salt Lake City',\n fullPartnerDisplayNameForMessaging: 'Intermountain Cancer Center',\n },\n INTERMOUNTAINCANCERCENTERSTGEORGE: {\n ...INTERMOUNTAIN_CANCER_CENTER_BASE,\n displayName: 'Intermountain Cancer Center St George',\n fullPartnerDisplayNameForMessaging: 'Intermountain Cancer Center',\n },\n INTOUCHHOMECARE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'InTouch Home Care',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['intouchhc.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.INTOUCHHOMECARE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'haidee@intouchhc.com',\n patientSupportPhoneE164: '+14086107110',\n },\n JOHNMUIRHEALTH: {\n ...STANDARD_HEALTH_SYSTEM_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.MUIRLAB,\n displayName: 'John Muir Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['johnmuirhealth.com']),\n insuranceUploadFromPartner: 'optional',\n labOrganizations: {\n [LabOrganization.MUIRLAB]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerOrganizationGroup: PartnerOrganizationGroup.JOHNMUIRHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportPhoneE164: '+18667512459',\n },\n KANEHEALTH: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n displayName: 'Kane Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['kane.health']),\n partnerOrganizationGroup: PartnerOrganizationGroup.KANEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'backoffice@kane.health',\n patientSupportPhoneE164: '+16509354490',\n priceUSD: makeDollar(99),\n },\n KRISTARAMONASMD: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n displayName: 'Krista Ramonas, MD',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['healthnavigators.org']),\n partnerOrganizationGroup: PartnerOrganizationGroup.KRISTARAMONASMD,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'drramonas@healthnavigators.org',\n patientSupportPhoneE164: '+14158285228',\n },\n LEBAE: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n displayName: 'Lebae',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['lebae.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.LEBAE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@lebae.com',\n patientSupportPhoneE164: '+13108494578',\n },\n LONETREEPOSTACUTE: {\n ...STANDARD_SKILLED_NURSING_FACILITY_PARTNER_BOOKING,\n displayName: 'Lone Tree Post Acute',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['lonetreepa.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.LONETREEPOSTACUTE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'kenneth.lim@lonetreepa.com',\n patientSupportPhoneE164: '+19257540470',\n },\n MARSHALLMEDICALCENTER: {\n ...STANDARD_HEALTH_SYSTEM_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.MARSHALL_LABORATORY,\n displayName: 'Marshall Medical Center',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['marshallmedical.org']),\n insuranceUploadFromPartner: 'optional',\n labOrganizations: {\n [LabOrganization.MARSHALL_LABORATORY]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerOrganizationGroup: PartnerOrganizationGroup.MARSHALLMEDICALCENTER,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'tmoody@marshallmedical.org',\n patientSupportPhoneE164: '+15306262793',\n },\n MATTAPAN: {\n ...BMC_BASE,\n canEditServicesAfterBooking: true,\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Mattapan',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'matchc.org',\n 'sprinterhealth.com',\n ]),\n ignoreAbstentionsMessaging: true,\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: '3008cb61-b19c-43ad-88f0-bc2594f4bce4',\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.VITALS,\n ServiceType.FIT_KIT_PICKUP,\n ],\n },\n nurseVitalsUrgencyLineInformation: {\n phoneNumbers: [\n { phoneE164: '+16178989075' },\n { phoneE164: '+16178989188' },\n { phoneE164: '+16175045500' },\n ],\n },\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.MATTAPAN,\n patientSupportPhoneE164: '+16178989075',\n priceForProductsUSD: {\n DIABETIC_RETINAL_SCAN: makeDollar(129),\n FIT_KIT_PICKUP: makeDollar(59),\n LAB_TEST: makeDollar(79),\n VITALS: makeDollar(59),\n },\n requisitionUploadFromPartner: 'required_after_booking',\n shouldSendAppointmentReportToCoordinator: true,\n skipCancelationFee: true,\n supportedProductTypes: [\n ProductType.LAB_TEST,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.VITALS,\n ProductType.FIT_KIT_PICKUP,\n ],\n vitalsThresholds: VITALS_CONFIG.MATTAPAN,\n },\n MERIDIANHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Meridian Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'meridiancarehomehealth.com',\n ]),\n partnerOrganizationGroup: PartnerOrganizationGroup.MERIDIANHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@meridiancarehomehealth.com',\n patientSupportPhoneE164: '+15107939255',\n priceUSD: makeDollar(99),\n },\n MOLINACA: {\n ...MOLINA_BASE,\n allowedServiceRequests: {\n QUEST: [\n '496', // Quest A1C\n '375', // Quest eGFR (creatinine)\n '6517', // Quest uACR\n '39027', // QUest lead screening (capillary)\n '599', // QUest lead screening (venous)\n ],\n SPRINTER_HEALTH: [\n 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n 'SDOH-QUESTIONNAIRE',\n 'BLOOD-PRESSURE-CHECK',\n 'DIABETIC-RETINAL-SCAN',\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n 'COLOGUARD-KIT-EDUCATION',\n 'TOPICAL_FLUORIDE',\n ],\n },\n displayName: 'Molina Healthcare California',\n encounterSummaryReportingModel: 'practitionerOrThrow',\n internalCoordinatorID: 'daf275d9-1aed-4960-be93-d24bc03e318f',\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.RACE_AND_ETHNICITY,\n ServiceType.SDOH_QUESTIONNAIRE,\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ServiceType.COLOGUARD_KIT_EDUCATION,\n ServiceType.TOPICAL_FLUORIDE,\n ],\n },\n leadScreeningEligibilityRequirements: CALIFORNIA_LEAD_SCREENING_AGE_REQUIREMENTS,\n patientConfig: PATIENT_CONFIG.MOLINACA,\n patientSupportPhoneE164: '+18556654627',\n priceUSD: makeDollar(134),\n referralCoordinatorID: '3330e47f-614f-49d9-961f-02ea12894901',\n referralLandingPageUrlPath: 'molina-ca',\n referralVerificationPageUrlPath: 'molina-ca',\n shouldSkipPriorLeadScreeningsQuestion: true,\n supportedProductTypes: [\n ProductType.VITALS,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.LAB_TEST,\n ProductType.QUESTIONNAIRES,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.COLOGUARD_KIT_EDUCATION,\n ProductType.TOPICAL_FLUORIDE,\n ],\n supportsEDILabOrdering: true,\n zendeskOrganizationName: 'Molina - California',\n },\n MOLINAFL: {\n ...MOLINA_BASE,\n allowedServiceRequests: {\n QUEST: [\n '496', // Quest A1C\n '39027', // Quest lead screening\n ],\n SPRINTER_HEALTH: [\n 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n 'SDOH-QUESTIONNAIRE',\n 'BLOOD-PRESSURE-CHECK',\n 'DIABETIC-RETINAL-SCAN',\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n 'COLOGUARD-KIT-EDUCATION',\n ],\n },\n displayName: 'Molina Healthcare Florida',\n encounterSummaryReportingDefaultCaseManagerEmail: 'MFLMemberIncentives@MolinaHealthcare.com',\n encounterSummaryReportingModel: 'practitionerWithDefaultCaseManagerFallBack',\n excludeBillingForFailedAppointments: true,\n internalCoordinatorID: '71915602-d725-4984-946f-7c3f0813ba0b',\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.RACE_AND_ETHNICITY,\n ServiceType.SDOH_QUESTIONNAIRE,\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ServiceType.COLOGUARD_KIT_EDUCATION,\n ],\n },\n leadScreeningEligibilityRequirements: HEDIS_LEAD_SCREENING_AGE_REQUIREMENTS,\n patientConfig: PATIENT_CONFIG.MOLINAFL,\n patientSupportPhoneE164: '+18664724585',\n priceUSD: makeDollar(134),\n referralCoordinatorID: '28934941-8f79-4a79-bfcc-634eb6f74b52',\n referralLandingPageUrlPath: 'molina-fl',\n referralVerificationPageUrlPath: 'molina-fl',\n shouldSkipPriorLeadScreeningsQuestion: true,\n supportedProductTypes: [\n ProductType.VITALS,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.LAB_TEST,\n ProductType.QUESTIONNAIRES,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.COLOGUARD_KIT_EDUCATION,\n ],\n supportsEDILabOrdering: true,\n zendeskOrganizationName: 'Molina - Florida',\n },\n MOLINAMI: {\n ...MOLINA_BASE,\n allowedServiceRequests: {\n QUEST: [\n '496', // Quest A1C\n '375', // Quest eGFR (creatinine)\n '6517', // Quest uACR\n '39027', // Quest lead screening\n ],\n SPRINTER_HEALTH: [\n 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n 'SDOH-QUESTIONNAIRE',\n 'BLOOD-PRESSURE-CHECK',\n 'DIABETIC-RETINAL-SCAN',\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n 'COLOGUARD-KIT-EDUCATION',\n ],\n },\n displayName: 'Molina Healthcare Michigan',\n encounterSummaryReportingDefaultCaseManagerEmail: 'Karen.Unholz@molinahealthcare.com',\n encounterSummaryReportingModel: 'practitionerWithDefaultCaseManagerFallBack',\n excludeBillingForFailedAppointments: true,\n internalCoordinatorID: 'dd542bfb-6eff-40d7-924c-508c8053eb9c',\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.RACE_AND_ETHNICITY,\n ServiceType.SDOH_QUESTIONNAIRE,\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ServiceType.COLOGUARD_KIT_EDUCATION,\n ],\n },\n leadScreeningEligibilityRequirements: HEDIS_LEAD_SCREENING_AGE_REQUIREMENTS,\n patientConfig: PATIENT_CONFIG.MOLINAMI,\n patientSupportPhoneE164: '+18888987969',\n priceUSD: makeDollar(134),\n referralCoordinatorID: '65a6c859-074c-4448-b59c-34a0261688b2',\n referralLandingPageUrlPath: 'molina-mi',\n referralVerificationPageUrlPath: 'molina-mi',\n shouldSkipPriorLeadScreeningsQuestion: true,\n supportedProductTypes: [\n ProductType.VITALS,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.LAB_TEST,\n ProductType.QUESTIONNAIRES,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.COLOGUARD_KIT_EDUCATION,\n ],\n supportsEDILabOrdering: true,\n zendeskOrganizationName: 'Molina - Michigan',\n },\n MOLINAUT: {\n ...MOLINA_BASE,\n allowedServiceRequests: {\n LETS_GET_CHECKED_LAB: ['LETS-GET-CHECKED-COLON-CANCER-SCREENING'],\n QUEST: [\n '496', // Quest A1C\n '375', // Quest eGFR (creatinine)\n '6517', // Quest uACR\n ],\n SPRINTER_HEALTH: [\n 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n 'SDOH-QUESTIONNAIRE',\n 'BLOOD-PRESSURE-CHECK',\n 'DIABETIC-RETINAL-SCAN',\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n 'COLOGUARD-KIT-EDUCATION',\n 'PCP_VISIT_CARE_NAVIGATION_BOOKING',\n 'PCP_VISIT_CARE_NAVIGATION_CONFIRMATION',\n 'MAMMOGRAM_CARE_NAVIGATION_BOOKING',\n 'MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION',\n ],\n },\n careNavigationEpisodeSummaryReportingModel: 'none',\n displayName: 'Molina Healthcare Utah',\n encounterSummaryReportingDefaultCaseManagerEmail: 'MHUTCASEMANAGEMENT@molinahealthcare.com',\n encounterSummaryReportingModel: 'practitionerWithDefaultCaseManagerFallBack',\n internalCoordinatorID: 'fa38d135-ec7b-4dbe-8e87-a8fe69ae652c',\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.LETS_GET_CHECKED_LAB]: [ServiceType.FIT_KIT_PICKUP],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.SDOH_QUESTIONNAIRE,\n ServiceType.RACE_AND_ETHNICITY,\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ServiceType.COLOGUARD_KIT_EDUCATION,\n ],\n },\n patientConfig: PATIENT_CONFIG.MOLINAUT,\n patientSupportPhoneE164: '+18884830760',\n priceUSD: makeDollar(79),\n referralCoordinatorID: '0a10cad6-ceb5-4699-aabe-6b4defda868f',\n referralLandingPageUrlPath: 'molina-ut',\n referralVerificationPageUrlPath: 'molina-ut',\n shouldSkipPriorLeadScreeningsQuestion: true,\n supportedProductTypes: [\n ProductType.LAB_TEST,\n ProductType.VITALS,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.QUESTIONNAIRES,\n ProductType.FIT_KIT_PICKUP,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.COLOGUARD_KIT_EDUCATION,\n ],\n supportsEDILabOrdering: true,\n zendeskOrganizationName: 'Molina - Utah',\n },\n MYDOCTORMEDICALGROUP: {\n ...GLOBAL_PARTNER_DEFAULTS,\n blockSharedSlotAppointments: true,\n defaultLabOrganization: STANDARD_REFERENCE_LAB_ORGANIZATION,\n displayName: 'My Doctor Medical Group',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['mydoctorsf.com']),\n insuranceUploadFromPartner: 'skip',\n insuranceUploadFromPatient: 'skip',\n isMultiPatientBookingAllowed: true,\n isPartnerBookingAllowed: true,\n isSelfBookingAllowed: true,\n labOrganizations: STANDARD_REFERENCE_LAB_ORGANIZATION_SETTINGS,\n maxAllowedPatientsPerBooking: MAX_PATIENTS_PER_APPOINTMENT as number,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.MYDOCTORMEDICALGROUP,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'office@mydoctorsf.com',\n patientSupportPhoneE164: '+14159634431',\n payer: 'patient',\n requisitionUploadFromPartner: 'required',\n requisitionUploadFromPatient: 'required',\n reschedulingCoordinator: 'partner',\n serviceRequestsFromPartner: 'skip',\n supportedProductTypes: [ProductType.LAB_TEST],\n vertical: 'concierge',\n },\n MYDOCTORMEDICALGROUPVIP: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n displayName: 'My Doctor Medical Group',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['mydoctorsf.com']),\n insuranceUploadFromPartner: 'optional',\n invoiceEmailType: 'custom',\n partnerOrganizationGroup: PartnerOrganizationGroup.MYDOCTORMEDICALGROUP,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'office@mydoctorsf.com',\n patientSupportPhoneE164: '+14159634431',\n priceUSD: makeDollar(99),\n requisitionUploadFromPartner: 'required',\n },\n NATERA: {\n ...STANDARD_SPECIALTY_LAB_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.NATERA,\n displayName: 'Natera',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['sprinterhealth.com']),\n isGuestReschedulingAllowed: true,\n labOrganizations: {\n [LabOrganization.NATERA]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.NATERA,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'support@natera.com',\n patientSupportPhoneE164: '+18447784700',\n // Natera is billing manually through Stripe. Specifically,\n // total appointment volume is gathered from MPX and then an invoice\n // is created manually in Stripe. Thus, we don't need to add appointment charges\n // in Stripe, but we do need to keep their account open.\n payer: 'none',\n reschedulingCoordinator: 'sprinterHealth',\n // Natera appointments are booked by our CMs, this is used to turn off appointment failure fees\n skipCancelationFee: true,\n sprinterHealthSupportPhoneE164: '+12096770049',\n zendeskOrganizationName: 'Natera',\n },\n NAVERIS: {\n ...STANDARD_SPECIALTY_LAB_PARTNER_BOOKING,\n ...STANDARD_SPECIALTY_LAB_SELF_BOOKING,\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/naveris/navdx_logo_32h.png',\n width: 112,\n },\n defaultLabOrganization: LabOrganization.NAVERIS,\n displayName: 'Naveris',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'sprinterhealth.com',\n 'naveris.com',\n ]),\n labOrganizations: {\n [LabOrganization.NAVERIS]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerFeedbackLink: 'https://sprinterhealth.com/feedback_naveris',\n partnerOrganizationGroup: PartnerOrganizationGroup.NAVERIS,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'support@naveris.com',\n patientSupportPhoneE164: '+18336283747',\n priceUSD: makeDollar(75),\n selectSingleServiceRequestExternalID: 'NavDx',\n skipCancelationFee: true,\n },\n NORTHBAYPRIVATEMEDICINE: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n displayName: 'North Bay Private Medicine',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['nbpmd.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.NORTHBAYPRIVATEMEDICINE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'kori@nbpmd.com',\n patientSupportPhoneE164: '+14155006220',\n priceUSD: makeDollar(99),\n },\n NURSINGANDREHABATHOME: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Nursing and Rehab at Home',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['rehabathome.org']),\n partnerOrganizationGroup: PartnerOrganizationGroup.NURSINGANDREHABATHOME,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'psandhu@rehabathome.org',\n patientSupportPhoneE164: '+16502864272',\n },\n OPOHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Opo Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['OPOHealth.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.OPOHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'Info@OPOHealth.com',\n patientSupportPhoneE164: '+16502880130',\n },\n OSCAR: {\n // A.k.a. \"Oscar Care\" or \"Oscar VPC\"\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: [\n '496', // Quest A1C\n '17674', // Quest Urine\n '10231', // Quest Metabolic Panel\n '7600', // Quest Lipid Panel\n ],\n SPRINTER_HEALTH: [\n 'CARDIAC-AUSCULTATION',\n 'DIABETIC-FOOT-SCREENING',\n 'DIABETIC-RETINAL-SCAN',\n 'ELECTROCARDIOGRAM-12-LEAD',\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n 'VITALS-CHECK',\n ],\n },\n appointmentReportEmails: ['omgmail@hioscar.com'],\n canEditServicesAfterBooking: true,\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/oscar/oscar_logo.png',\n width: 112,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Oscar Care',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'sprinterhealth.com',\n 'hioscar.com',\n ]),\n fullPartnerDisplayNameForMessaging: 'Oscar Care',\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: 'f516b328-5944-4b44-974f-7601fe28cba3',\n isPartnerBookingAllowed: true,\n isReferralBookingAllowed: true,\n isSelfBookingAllowed: false,\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.DIABETIC_FOOT_SCREENING,\n ServiceType.CARDIAC_AUSCULTATION,\n ServiceType.ECG,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ],\n },\n // TODO(shilpi): fix to handle retinal scan check for multiple patients.\n maxAllowedPatientsPerBooking: 1 as number,\n nurseVitalsUrgencyLineInformation: {\n phoneNumbers: [{ phoneE164: '+18559611942' }],\n },\n onlyOrdersSingleServiceRequests: false,\n partnerFeedbackLink: 'https://sprinterhealth.com/feedback_oscar',\n partnerOrganizationGroup: PartnerOrganizationGroup.OSCAR,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.OSCAR,\n patientSupportEmail: 'oscarcare@hioscar.com',\n patientSupportPhoneE164: '+18559611942',\n payer: 'partner',\n paymentType: 'claims',\n priceUSD: makeDollar(49),\n productTypesRequiringRequisitions: [\n ProductType.LAB_TEST,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ],\n referralCoordinatorID: '00e02dd0-03ab-4755-bd60-bafc2621761d',\n referralLandingPageUrlPath: 'oscar-care',\n referralVerificationPageUrlPath: 'oscar-care',\n requisitionUploadFromPartner: 'required_after_booking',\n rerouteCSREmailTo: { prod: 'oscarcare@hioscar.com', test: INTERNAL_ONLY_SPRINTER_HEALTH_EMAIL },\n rerouteFailureEmailTo: {\n prod: 'oscar.orders@sprinterhealth.com',\n test: INTERNAL_ONLY_REROUTE_FAILURE_EMAIL,\n },\n reschedulingCoordinator: 'sprinterHealth',\n schedulingTimeRangeRules: SCHEDULING_TIME_RANGE_CONFIGS.OSCAR,\n serviceRequestsFromPartner: 'skip',\n shortPartnerDisplayNameForMessaging: 'Oscar Care',\n shouldExportAppointmentsForBilling: true,\n shouldGenerateEncounterSummaryForVitals: true,\n shouldIncludeFailedAppointmentsInClaims: true,\n showDiagnosisCodes: true,\n skipCancelationFee: true,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.KIT_DELIVERY_AND_EDUCATION]: {\n defaultSprinterHealthExternalID: 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n displayName: 'Colorectal screening kit delivery and education',\n message: '',\n },\n },\n supportedProductTypes: [\n ProductType.VITALS,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.DIABETIC_FOOT_SCREENING,\n ProductType.CARDIAC_AUSCULTATION,\n ProductType.ECG,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.LAB_TEST,\n ],\n supportsReferrals: true,\n vertical: 'healthPlan',\n vitalsThresholds: VITALS_CONFIG.OSCAR,\n zendeskOrganizationName: 'Oscar Care',\n },\n OSCARDEMO: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: ['39027', '6517', '496'],\n SPRINTER_HEALTH: ['BLOOD-PRESSURE-CHECK', 'DIABETIC-RETINAL-SCAN', 'FIT-KIT-PICKUP'],\n },\n appointmentReportEmails: [INTERNAL_ONLY_SPRINTER_HEALTH_EMAIL],\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Oscar Demo',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['sprinterhealth.com']),\n encounterSummaryReportingDefaultCaseManagerEmail:\n 'test+oscardemocasemanager@sprinterhealth.com',\n encounterSummaryReportingModel: 'practitionerWithDefaultCaseManagerFallBack',\n insuranceUploadFromPartner: 'skip',\n isPartnerBookingAllowed: true,\n isSelfBookingAllowed: false,\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.DIABETIC_FOOT_SCREENING,\n ServiceType.CARDIAC_AUSCULTATION,\n ServiceType.ECG,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ],\n },\n leadScreeningEligibilityRequirements: STANDARD_LEAD_SCREENING_AGE_REQUIREMENTS,\n maxAllowedPatientsPerBooking: 2 as number,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.OSCARDEMO,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientBookingAppointmentPhoneE164: '+11111111111',\n patientConfig: PATIENT_CONFIG.OSCARDEMO,\n patientSupportEmail: INTERNAL_ONLY_SPRINTER_HEALTH_EMAIL,\n patientSupportPhoneE164: CUSTOMER_SUPPORT_PHONE,\n payer: 'partner',\n paymentType: 'claims',\n priceUSD: makeDollar(49),\n requisitionUploadFromPartner: 'required',\n rerouteCSREmailTo: {\n prod: INTERNAL_ONLY_SPRINTER_HEALTH_EMAIL,\n test: INTERNAL_ONLY_SPRINTER_HEALTH_EMAIL,\n },\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsFormatType: 'O N',\n serviceRequestsFromPartner: 'required',\n shouldGenerateEncounterSummaryForVitals: true,\n skipCancelationFee: true,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n },\n supportedProductTypes: [\n ProductType.LAB_TEST,\n ProductType.VITALS,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.FIT_KIT_PICKUP,\n ],\n vertical: 'healthPlan',\n vitalsThresholds: VITALS_CONFIG.OSCAR,\n },\n OSCARHEALTH: {\n // A.k.a. \"Oscar Stars\"\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: ['496', '6517', '375'],\n SPRINTER_HEALTH: [\n 'BLOOD-PRESSURE-CHECK',\n 'DIABETIC-RETINAL-SCAN',\n 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n ],\n },\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/oscarhealth/oscarhealth_logo.png',\n width: 112,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Oscar Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['hioscar.com']),\n encounterSummaryReportingModel: 'practitionerOrThrow',\n fullPartnerDisplayNameForMessaging: 'Oscar Health',\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: '3fa7c5ea-eab8-4dac-94b9-821608a5e69d',\n isAutofillingRequisitionsAllowed: true,\n isPartnerBookingAllowed: true as const,\n isReferralBookingAllowed: true,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.LABCORP]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.VITALS,\n ],\n },\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.OSCAR,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.OSCARHEALTH,\n patientSupportEmail: 'help@hioscar.com',\n patientSupportPhoneE164: '+18556722700',\n payer: 'partner' as const,\n paymentType: 'claims',\n priceUSD: makeDollar(59),\n referralCoordinatorID: '792c6fa7-99cb-449d-9403-d5ce8c5c4619',\n referralLandingPageUrlPath: 'oscar',\n referralVerificationPageUrlPath: 'oscar',\n requisitionUploadFromPartner: 'skip',\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsFromPartner: 'required',\n shortPartnerDisplayNameForMessaging: 'Oscar Health',\n shouldGenerateEncounterSummaryForVitals: true,\n shouldIncludeFailedAppointmentsInClaims: true,\n showDiagnosisCodes: true,\n skipCancelationFee: true as const,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n [ProductType.KIT_DELIVERY_AND_EDUCATION]: {\n defaultSprinterHealthExternalID: 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n displayName: 'Colorectal screening kit delivery and education',\n message: '',\n },\n },\n supportedProductTypes: [\n ProductType.LAB_TEST,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.VITALS,\n ProductType.DIABETIC_RETINAL_SCAN,\n ],\n supportsEDILabOrdering: false,\n supportsReferrals: true,\n vertical: 'healthPlan',\n zendeskOrganizationName: 'Oscar Health',\n },\n PENINSULADOCTOR: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n displayName: 'Peninsula Doctor',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['peninsuladoctor.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.PENINSULADOCTOR,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'susanna@peninsuladoctor.com',\n patientSupportPhoneE164: '+16508003365',\n },\n PERPETUALCAREHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Perpetual Care Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['pchha.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.PERPETUALCAREHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'admin@pchha.com',\n patientSupportPhoneE164: '+14082628801',\n priceUSD: makeDollar(99),\n },\n PINNACLEHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Pinnacle Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['pinnaclehha.org']),\n partnerOrganizationGroup: PartnerOrganizationGroup.PINNACLEHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'admin@pinnaclehha.com',\n patientSupportPhoneE164: '+15103517595',\n priceUSD: makeDollar(99),\n },\n PRIMELIVINGHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Primeliving Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'primelivinghomehealth.net',\n ]),\n partnerOrganizationGroup: PartnerOrganizationGroup.PRIMELIVINGHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@primelivinghomehealth.net',\n patientSupportPhoneE164: '+15107709810',\n },\n PULSEDEMO: {\n ...STANDARD_SPECIALTY_LAB_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.PULSE_DEMO,\n displayName: 'Pulse Demo',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([]),\n labOrganizations: {\n [LabOrganization.PULSE_DEMO]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerOrganizationGroup: PartnerOrganizationGroup.PULSEDEMO,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'demo@pulse.com',\n patientSupportPhoneE164: '+15551234567',\n requisitionUploadFromPartner: 'optional',\n serviceRequestsFormatType: 'N',\n },\n READY2NURSE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Ready2Nurse',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'ready2nurse.com',\n 'outlook.com',\n ]),\n partnerOrganizationGroup: PartnerOrganizationGroup.READY2NURSE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@ready2nurse.com',\n patientSupportPhoneE164: '+14085403255',\n priceUSD: makeDollar(99),\n },\n ROSLINDALE: {\n ...BMC_BASE,\n canEditServicesAfterBooking: true,\n defaultLabOrganization: LabOrganization.ROSLINDALE_LAB,\n displayName: 'Roslindale',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([]),\n ignoreAbstentionsMessaging: true,\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: '7f9edc5f-42d3-4b58-bf8e-ead7fa13c681',\n labOrganizations: {\n [LabOrganization.ROSLINDALE_LAB]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.VITALS,\n ServiceType.FIT_KIT_PICKUP,\n ],\n },\n nurseVitalsUrgencyLineInformation: {\n phoneNumbers: [{ phoneE164: '+16173631219' }],\n },\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.ROSLINDALE,\n patientSupportEmail: 'sherine.germain@bmc.org',\n priceForProductsUSD: {\n DIABETIC_RETINAL_SCAN: makeDollar(129),\n FIT_KIT_PICKUP: makeDollar(59),\n LAB_TEST: makeDollar(79),\n VITALS: makeDollar(59),\n },\n requisitionUploadFromPartner: 'required_after_booking',\n shouldSendAppointmentReportToCoordinator: true,\n skipCancelationFee: true,\n supportedProductTypes: [\n ProductType.LAB_TEST,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.VITALS,\n ProductType.FIT_KIT_PICKUP,\n ],\n vitalsThresholds: VITALS_CONFIG.ROSLINDALE,\n },\n RUPAHEALTH: {\n ...STANDARD_SPECIALTY_LAB_SELF_BOOKING,\n defaultLabOrganization: LabOrganization.RUPA_HEALTH,\n displayName: 'Rupa Health',\n isPartnerBookingAllowed: false,\n labOrganizations: {\n [LabOrganization.RUPA_HEALTH]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n maxAllowedPatientsPerBooking: MAX_PATIENTS_PER_APPOINTMENT as number,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.RUPAHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'phlebotomy@rupahealth.com',\n payer: 'patient',\n requisitionUploadFromPatient: 'required',\n },\n SEHAJHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Sehaj Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['sehajhomehealth.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.SEHAJHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'loleini@sehajhomehealth.com',\n patientSupportPhoneE164: '+15105732013',\n },\n SILVERADOBELMONTMEMORYCARE: {\n ...STANDARD_CARE_FACILITY_PARTNER_BOOKING,\n blockSharedSlotAppointments: true,\n displayName: 'Silverado Belmont Memory Care',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['silverado.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.SILVERADOBELMONTMEMORYCARE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'amyda.astrero@silverado.com',\n patientSupportPhoneE164: '+16506549700',\n priceUSD: makeDollar(99),\n shouldSendRequisitionUploadReviewZDTicket: true,\n },\n SILVERLINESTAFF: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Silverline Staff',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([]),\n partnerOrganizationGroup: PartnerOrganizationGroup.SILVERLINESTAFF,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'contact@silverlinestaff.com',\n patientSupportPhoneE164: '+19254765350',\n priceUSD: makeDollar(99),\n },\n SOCOLMD: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/socolmd/socolmd_logo_32h.png',\n width: 112,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'SocolMD',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['socolmd.com']),\n insuranceUploadFromPartner: 'optional',\n insuranceUploadFromPatient: 'optional',\n invoiceTerm: 60,\n isMultiPatientBookingAllowed: false,\n isSelfBookingAllowed: true,\n // TODO(alessio): add QUEST to labOrganizations when starting to support multiple dropoff time rules.\n // Appointments with a Cyrex kit should be dropped off at FedEx, while appointments w/o a Cyrex kit should be dropped off at Quest.\n // However, we are currently not supporting multiple dropoff, and I think we should be okay in using only Quest for now as dropoff rules are the same minus FedEx's holidays\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerOrganizationGroup: PartnerOrganizationGroup.SOCOLMD,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'david@socolmd.com',\n patientSupportPhoneE164: '+13239510200',\n requisitionUploadFromPartner: 'required',\n requisitionUploadFromPatient: 'required',\n },\n SONDERHEALTHCARE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Sonder Healthcare',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['sonderhealthcare.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.SONDERHEALTHCARE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'sangeeta@sonderhealthcare.com',\n patientSupportPhoneE164: '+19168649528',\n },\n STANFORDCANCERCENTER: {\n ...STANDARD_CANCER_CENTER_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.STANFORD_CANCER_CENTER,\n displayName: 'Stanford Cancer Center',\n domainAllowList: new Map([\n ['stanfordhealthcare.org', ['STANFORDHEALTHCAREOIDC']],\n ]),\n insuranceUploadFromPartner: 'skip',\n invoiceTerm: 60,\n isGuestReschedulingAllowed: false,\n labOrganizations: {\n [LabOrganization.STANFORD_CANCER_CENTER]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n maxAllowedPatientsPerBooking: 1 as number,\n partnerOrganizationGroup: PartnerOrganizationGroup.STANFORDCANCERCENTER,\n partnerSupportResponsibleManager: 'Carole',\n patientConfig: PATIENT_CONFIG.STANFORDCANCERCENTER,\n patientSupportPhoneE164: '+18334447622',\n requisitionUploadFromPartner: 'required_after_booking',\n reschedulingCoordinator: 'sprinterHealth',\n skipCancelationFee: true,\n sprinterHealthSupportPhoneE164: '+14155994152',\n supportedServiceRegions: [\n 'ca-bay-area-peninsula',\n 'ca-bay-area-palo-alto',\n 'ca-bay-area-south',\n 'ca-bay-area-san-jose-east',\n ],\n },\n STANFORDRESEARCH: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: { STANFORD_RESEARCH: ['BIOBANKING-STUDY'] },\n automaticInvoiceSend: true,\n defaultLabOrganization: LabOrganization.STANFORD_RESEARCH,\n displayName: 'Stanford Research',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['stanford.edu']),\n insuranceUploadFromPartner: 'skip',\n invoiceEmailType: 'stripe',\n invoiceTerm: 30,\n isGuestReschedulingAllowed: false,\n isPartnerBookingAllowed: true,\n isSelfBookingAllowed: false,\n labOrganizations: {\n [LabOrganization.STANFORD_RESEARCH]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n maxAllowedPatientsPerBooking: 1 as number,\n onlyOrdersSingleServiceRequests: true,\n partnerOrganizationGroup: PartnerOrganizationGroup.STANFORDRESEARCH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.STANFORDRESEARCH,\n patientSupportEmail: 'tlanz@stanford.edu',\n patientSupportPhoneE164: '+16506445396',\n payer: 'partner',\n paymentType: 'invoice',\n priceUSD: makeDollar(99),\n requisitionUploadFromPartner: 'required',\n reschedulingCoordinator: 'partner',\n selectSingleServiceRequestExternalID: 'BIOBANKING-STUDY',\n serviceRequestsFromPartner: 'required',\n skipCancelationFee: true,\n supportedProductTypes: [ProductType.LAB_TEST],\n supportedServiceRegions: [\n 'ca-bay-area-peninsula',\n 'ca-bay-area-palo-alto',\n 'ca-bay-area-south',\n 'ca-bay-area-san-jose-east',\n ],\n vertical: 'lifeSciences',\n },\n STORYHEALTH: {\n ...GLOBAL_PARTNER_DEFAULTS,\n automaticInvoiceSend: true,\n defaultLabOrganization: LabOrganization.INTERMOUNTAIN,\n displayName: 'Story Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['storyhealth.ai']),\n insuranceUploadFromPartner: 'skip',\n invoiceEmailType: 'stripe',\n invoiceTerm: 30,\n isPartnerBookingAllowed: true,\n isSelfBookingAllowed: false,\n labOrganizations: {\n [LabOrganization.INTERMOUNTAIN]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n maxAllowedPatientsPerBooking: 1 as number,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.STORYHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportPhoneE164: '+14352644854',\n payer: 'partner',\n paymentType: 'invoice',\n priceUSD: makeDollar(79),\n requisitionUploadFromPartner: 'required',\n reschedulingCoordinator: 'partner',\n serviceRequestsFromPartner: 'skip',\n skipCancelationFee: false,\n supportedProductTypes: [ProductType.LAB_TEST],\n vertical: 'healthPlan',\n },\n STPATRICKHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'St. Patrick Home Health Providers',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['gmail.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.STPATRICKHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'stpatrick440@gmail.com',\n patientSupportPhoneE164: '+14083893500',\n priceUSD: makeDollar(99),\n },\n SUNCRESTHOSPICE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Suncrest Home Heath & Hospice',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['suncrestcare.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.SUNCRESTHOSPICE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@suncrestcare.com',\n patientSupportPhoneE164: '+14089008838',\n shouldSendRequisitionUploadReviewZDTicket: true,\n vertical: 'hospice',\n },\n THEBODYWRX: {\n ...STANDARD_CONCIERGE_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'The Body WRX',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['thebodywrx.com']),\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerOrganizationGroup: PartnerOrganizationGroup.THEBODYWRX,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'michelle@thebodywrx.com',\n patientSupportPhoneE164: '+16619165951',\n },\n TRAININGPARTNER: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n LETS_GET_CHECKED_LAB: ['LETS-GET-CHECKED-COLON-CANCER-SCREENING'],\n QUEST: ['39027'],\n SPRINTER_HEALTH: [\n ...Object.values(PRODUCT_TYPE_CONFIGS)\n .map((config) => config.defaultSprinterHealthExternalID)\n .filter(Boolean),\n 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n 'SDOH-QUESTIONNAIRE',\n ],\n },\n blockSharedSlotAppointments: true,\n cobrandingLogo: {\n height: 0,\n uri: '',\n width: 0,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'Training Partner',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['sprinterhealth.com']),\n fullPartnerDisplayNameForMessaging: 'Training Partner',\n insuranceUploadFromPartner: 'skip' as const,\n insuranceUploadFromPatient: 'skip' as const,\n isMultiPatientBookingAllowed: true as const,\n isPartnerBookingAllowed: true as const,\n isReferralBookingAllowed: true as const,\n isSelfBookingAllowed: true as const,\n labOrganizations: {\n [LabOrganization.LETS_GET_CHECKED_LAB]: [ServiceType.FIT_KIT_PICKUP],\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.CARDIAC_AUSCULTATION,\n ServiceType.CARE_NAVIGATION,\n ServiceType.COLOGUARD_KIT_EDUCATION,\n ServiceType.DIABETIC_FOOT_SCREENING,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.ECG,\n ServiceType.FIT_KIT_PICKUP,\n ServiceType.KIT_DELIVERY,\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ServiceType.MISCELLANEOUS_SPECIMEN,\n ServiceType.SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE,\n ServiceType.RACE_AND_ETHNICITY,\n ServiceType.DEXA_SCAN_CARE_NAVIGATION_BOOKING,\n ServiceType.DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.MAMMOGRAM_CARE_NAVIGATION_BOOKING,\n ServiceType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.PCP_VISIT_CARE_NAVIGATION_BOOKING,\n ServiceType.PCP_VISIT_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.HEIGHT_AND_WEIGHT_COLLECTION,\n ServiceType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL,\n ServiceType.PAIN_SCREENING,\n ServiceType.BONE_DENSITY_SCAN,\n ServiceType.TOPICAL_FLUORIDE,\n ServiceType.WEIGHT_COUNSELING_FOR_CHILDREN,\n ],\n },\n leadScreeningEligibilityRequirements: STANDARD_LEAD_SCREENING_AGE_REQUIREMENTS,\n maxAllowedPatientsPerBooking: Math.max(\n MAX_PATIENTS_PER_APPOINTMENT_SPECIALITY_LABS,\n MAX_PATIENTS_PER_APPOINTMENT,\n MAX_PATIENTS_PER_APPOINTMENT_D2C,\n ),\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.TRAININGPARTNER,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.TRAININGPARTNER,\n patientSupportEmail: 'test+trainingpartner-patientsupport@sprinterhealth.com',\n patientSupportPhoneE164: CUSTOMER_SUPPORT_PHONE,\n payer: 'partner' as const,\n paymentType: 'claims' as const,\n priceUSD: makeDollar(0),\n referralCoordinatorID: 'd56fce3a-83fa-4389-ad42-1e846224bfcf',\n referralLandingPageUrlPath: 'training-partner',\n requisitionUploadFromPartner: 'skip' as const,\n requisitionUploadFromPatient: 'skip' as const,\n requisitionUploadFromScheduler: 'skip' as const,\n reschedulingCoordinator: 'partner' as const,\n serviceRequestsAddByDefault: {\n SPRINTER_HEALTH: [\n {\n externalID: 'HEIGHT_AND_WEIGHT_COLLECTION',\n prerequisiteServiceTypes: [ServiceType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL],\n },\n {\n externalID: 'VITALS-CHECK',\n prerequisiteServiceTypes: [ServiceType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL],\n },\n ],\n },\n serviceRequestsFromPartner: 'optional' as const,\n shortPartnerDisplayNameForMessaging: 'Training Partner',\n shouldSkipPriorLeadScreeningsQuestion: true as const,\n skipCancelationFee: true as const,\n supportedProductTypes: Object.values(ProductType),\n supportsPatientEncounterSummary: true as const,\n supportsPatientEncounterSummaryDirectMail: false as const,\n supportsReferrals: true as const,\n vertical: 'healthPlan' as const,\n },\n TRUEMED: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'TrueMed',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['mytruemed.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.TRUEMED,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'info@mytruemed.com',\n patientSupportPhoneE164: '+16505888331',\n },\n TRUEMEDSACRAMENTO: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'TrueMed Sacramento',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['mytruemed.com']),\n fullPartnerDisplayNameForMessaging: 'TrueMed',\n partnerOrganizationGroup: PartnerOrganizationGroup.TRUEMED,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'intake_sac@mytruemed.com',\n patientSupportPhoneE164: '+19163797790',\n },\n UCIHEALTH: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n [LabOrganization.SPRINTER_HEALTH]: ['DIABETIC-RETINAL-SCAN'],\n [LabOrganization.QUEST]: [\n '496', // A1C\n '375', // eGFR/Creatinine\n '6517', // uACR/Microalbumin\n '39027', // lead screening\n '40085', // HIV Viral Load\n '11363', // Chlamydia screening\n ],\n [LabOrganization.UCI_LAB]: [\n 'A1C',\n 'CREGFR', // eGFR/Creatinine\n 'MALCR', // Microalbumin\n 'LEADBL', // lead screening\n 'SHIVVL', // HIV Viral Load\n 'CTNG', // Clamydia screening\n ],\n [LabOrganization.LABCORP]: [\n '001453', // A1C\n '322000', // eGFR/Creatinine\n '140285', // Microalbumin\n '717016', // lead screening\n '550430', // HIV Viral Load\n '183194', // Chlamydia screening\n ],\n },\n appointmentReportEmails: ['uci-encounter-summaries@sprinterhealth.com'],\n automaticInvoiceSend: false,\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/ucihealth/ucihealth_logo.png',\n width: 112,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'UCI Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'sprinterhealth.com',\n 'hs.uci.edu',\n ]),\n fullPartnerDisplayNameForMessaging: 'UCI Health',\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: 'e4e55b53-c71e-4e98-9a3f-54185891d117',\n invoiceEmailType: 'stripe',\n invoiceTerm: 60,\n isPartnerBookingAllowed: true,\n isReferralBookingAllowed: true,\n isSelfBookingAllowed: false,\n labOrganizations: {\n [LabOrganization.QUEST]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.UCI_LAB]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.LABCORP]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n [LabOrganization.SPRINTER_HEALTH]: [ServiceType.DIABETIC_RETINAL_SCAN],\n },\n leadScreeningEligibilityRequirements: HEDIS_LEAD_SCREENING_AGE_REQUIREMENTS,\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.UCI,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.UCIHEALTH,\n patientSupportPhoneE164: '+17144567002',\n payer: 'partner',\n paymentType: 'invoice',\n priceForProductsUSD: {\n [ProductType.LAB_TEST]: makeDollar(20),\n [ProductType.KIT_DELIVERY_AND_EDUCATION]: makeDollar(20),\n [ProductType.FIT_KIT_PICKUP]: makeDollar(20),\n [ProductType.DIABETIC_RETINAL_SCAN]: makeDollar(50),\n },\n priceUSD: makeDollar(79),\n referralCoordinatorID: '7a53c57b-fdf3-4896-947d-2280db1effbd',\n // TODO(wendy): add fit kit; clickup task: 86ayhe9wb\n referralLandingPageUrlPath: 'ucihealth-medicaid',\n requisitionUploadFromPartner: 'required_after_booking',\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsFormatType: 'O N',\n serviceRequestsFromPartner: 'optional',\n shortPartnerDisplayNameForMessaging: 'UCI Health',\n shouldSkipPriorLeadScreeningsQuestion: true,\n showDiagnosisCodes: true,\n skipCancelationFee: true as const,\n supportedProductTypes: [ProductType.DIABETIC_RETINAL_SCAN, ProductType.LAB_TEST],\n supportsReferrals: true,\n vertical: 'healthSystem',\n zendeskOrganizationName: 'UCI Health',\n },\n UCLAHEALTH: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n [LabOrganization.SPRINTER_HEALTH]: [\n 'BLOOD-PRESSURE-CHECK',\n 'DIABETIC-RETINAL-SCAN',\n 'MAMMOGRAM_CARE_NAVIGATION_BOOKING',\n 'MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION',\n 'SDOH-QUESTIONNAIRE',\n ],\n [LabOrganization.QUEST]: [\n '496', // A1C\n '375', // eGFR/Creatinine\n '6517', // uACR/Microalbumin\n '39027', // lead screening\n ],\n },\n appointmentReportEmails: ['phi-ucla-encounter-summaries@sprinterhealth.com'],\n automaticInvoiceSend: false,\n cobrandingLogo: {\n height: 32,\n uri: 'https://app.sprinterhealth.com/uclahealth/uclahealth_logo.png',\n width: 152,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'UCLA Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider([\n 'sprinterhealth.com',\n 'mednet.ucla.edu',\n ]),\n encounterSummaryReportingModel: 'partnerAndPractitioner',\n fullPartnerDisplayNameForMessaging: 'UCLA Health',\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: '1d2f72e1-9cbf-42f3-9d1b-9214ea33db25',\n invoiceEmailType: 'stripe',\n invoiceTerm: 30,\n isAutofillingRequisitionsAllowed: true as const,\n isPartnerBookingAllowed: true as const,\n isReferralBookingAllowed: true as const,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.URINE],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.DIABETIC_RETINAL_SCAN,\n ServiceType.MAMMOGRAM_CARE_NAVIGATION_BOOKING,\n ServiceType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION,\n ServiceType.KIT_DELIVERY_AND_EDUCATION,\n ServiceType.SDOH_QUESTIONNAIRE,\n ],\n },\n leadScreeningEligibilityRequirements: STANDARD_LEAD_SCREENING_AGE_REQUIREMENTS,\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.UCLA,\n partnerSupportResponsibleManager: 'Miranda',\n patientConfig: PATIENT_CONFIG.UCLAHEALTH,\n payer: 'partner',\n paymentType: 'invoice',\n priceForProductsUSD: {\n [ProductType.VITALS]: makeDollar(10),\n [ProductType.LAB_TEST]: makeDollar(20),\n [ProductType.KIT_DELIVERY_AND_EDUCATION]: makeDollar(20),\n [ProductType.DIABETIC_RETINAL_SCAN]: makeDollar(50),\n [ProductType.QUESTIONNAIRES]: makeDollar(20),\n [ProductType.MAMMOGRAM_CARE_NAVIGATION_BOOKING]: makeDollar(90),\n [ProductType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION]: makeDollar(90),\n },\n priceUSD: makeDollar(79),\n referralCoordinatorID: '9b8e205c-c549-43a6-bc67-ee307296961f',\n referralLandingPageUrlPath: 'ucla-medicaid',\n requisitionUploadFromPartner: 'skip' as const,\n reschedulingCoordinator: 'sprinterHealth' as const,\n serviceRequestsAddByDefault: {\n SPRINTER_HEALTH: [\n {\n externalID: 'SDOH-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'ytd' as const,\n },\n ],\n },\n serviceRequestsFromPartner: 'required',\n shortPartnerDisplayNameForMessaging: 'UCLA Health',\n shouldSkipPriorLeadScreeningsQuestion: true,\n showDiagnosisCodes: true,\n skipCancelationFee: true as const,\n supportedProductTypes: [\n ProductType.VITALS,\n ProductType.LAB_TEST,\n ProductType.KIT_DELIVERY_AND_EDUCATION,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.QUESTIONNAIRES,\n ProductType.MAMMOGRAM_CARE_NAVIGATION_BOOKING,\n ProductType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION,\n ],\n supportsEDILabOrdering: true as const,\n supportsPatientEncounterSummary: true as const,\n supportsPatientEncounterSummaryDirectMail: true as const,\n supportsReferrals: true,\n vertical: 'healthSystem',\n zendeskOrganizationName: 'UCLA Health',\n },\n UCSDHEALTH: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n [LabOrganization.SPRINTER_HEALTH]: [\n 'BLOOD-PRESSURE-CHECK',\n 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n 'SDOH-QUESTIONNAIRE',\n ],\n [LabOrganization.QUEST]: [\n '496', // A1C\n '40085', // HIV Viral Load\n '375', // eGFR/Creatinine\n '6517', // uACR/Microalbumin\n ],\n [LabOrganization.LABCORP]: [\n '001453', // A1C\n '322000', // eGFR/Creatinine\n '140285', // uACR/Microalbumin\n '550430', // HIV Viral Load\n ],\n },\n appointmentReportEmails: ['phi-ucsd-encounter-summaries@sprinterhealth.com'],\n automaticInvoiceSend: false,\n blockSharedSlotAppointments: false,\n canEditServicesAfterBooking: false,\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/email/logo-full.png', // TODO(86b45bpcy): Replace this with actual UCSD logo before launch\n width: 112,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'UCSD Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['@health.ucsd.edu']),\n encounterSummaryReportingModel: 'partnerAndPractitioner',\n fullPartnerDisplayNameForMessaging: 'UC San Diego Health',\n insuranceUploadFromPartner: 'skip',\n // todo(#86b440gyq): Set this up after merging\n internalCoordinatorID: 'c6c87f60-4ac2-4e44-85c0-9d9f38db04a7',\n invoiceEmailType: 'stripe',\n invoiceTerm: 30,\n isGuestReschedulingAllowed: true,\n isPartnerBookingAllowed: true,\n isReferralBookingAllowed: true,\n isSelfBookingAllowed: false,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.URINE],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.RACE_AND_ETHNICITY,\n ServiceType.SDOH_QUESTIONNAIRE,\n ],\n [LabOrganization.LABCORP]: [ServiceType.BLOOD, ServiceType.URINE],\n },\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.UCSD,\n partnerSupportResponsibleManager: 'Miranda',\n patientConfig: PATIENT_CONFIG.UCSDHEALTH,\n patientSupportPhoneE164: '+18557674584',\n payer: 'partner',\n paymentType: 'invoice',\n priceForProductsUSD: {\n [ProductType.LAB_TEST]: makeDollar(20),\n [ProductType.QUESTIONNAIRES]: makeDollar(20),\n [ProductType.VITALS]: makeDollar(10),\n },\n priceUSD: makeDollar(79),\n productTypesRequiringRequisitions: [ProductType.LAB_TEST],\n // todo(#86b440gz7): Set this up after merging\n referralCoordinatorID: 'b0161e1f-4813-44b8-b4d1-fd48ee268d71',\n requisitionUploadFromPartner: 'required_after_booking',\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsAddByDefault: {\n SPRINTER_HEALTH: [\n {\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime' as const,\n },\n {\n externalID: 'SDOH-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'ytd' as const,\n },\n ],\n },\n serviceRequestsFromPartner: 'required',\n shortPartnerDisplayNameForMessaging: 'UCSD Health',\n shouldExportAppointmentsForBilling: true,\n shouldGenerateEncounterSummaryForVitals: true,\n shouldSkipPriorLeadScreeningsQuestion: false,\n shouldUsePartnerBrands: false as const,\n showDiagnosisCodes: true,\n skipCancelationFee: true as const,\n supportedProductTypes: [ProductType.VITALS, ProductType.LAB_TEST, ProductType.QUESTIONNAIRES],\n supportsEDILabOrdering: false,\n supportsPatientEncounterSummary: true as const,\n supportsPatientEncounterSummaryDirectMail: false as const,\n supportsReferrals: true,\n vertical: 'healthSystem',\n zendeskOrganizationName: 'UCSD Health',\n },\n UCSF: {\n ...STANDARD_HEALTH_SYSTEM_PARTNER_BOOKING,\n defaultLabOrganization: LabOrganization.UCSF_BLOOD_DRAW_LAB,\n displayName: 'UCSF',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['ucsf.edu']),\n insuranceUploadFromPartner: 'optional',\n labOrganizations: {\n [LabOrganization.UCSF_BLOOD_DRAW_LAB]: [\n ServiceType.BLOOD,\n ServiceType.URINE,\n ServiceType.CAPILLARY_BLOOD_DRAW,\n ],\n },\n partnerOrganizationGroup: PartnerOrganizationGroup.UCSF,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportPhoneE164: '+14155147293',\n },\n UHCMA: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: [\n '375', // eGFR/Creatinine\n '496', // Quest A1C\n '6517', // uACR/Microalbumin\n ],\n SPRINTER_HEALTH: [\n 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n 'SDOH-QUESTIONNAIRE',\n 'BLOOD-PRESSURE-CHECK',\n ],\n },\n blockSharedSlotAppointments: false,\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/uhc/uhc_logo.png',\n width: 94,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'UnitedHealthcare - Massachusetts',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['uhc.com']),\n encounterSummaryReportingModel: 'practitionerOrThrow',\n fullPartnerDisplayNameForMessaging: 'UnitedHealthcare',\n insuranceUploadFromPartner: 'skip' as const,\n internalCoordinatorID: 'b2968343-a68d-4ad4-9259-9503bdaa3b93',\n isAutofillingRequisitionsAllowed: true,\n isPartnerBookingAllowed: true,\n isReferralBookingAllowed: true,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.URINE],\n [LabOrganization.SPRINTER_HEALTH]: [\n ServiceType.VITALS,\n ServiceType.RACE_AND_ETHNICITY,\n ServiceType.SDOH_QUESTIONNAIRE,\n ],\n },\n maxAllowedPatientsPerBooking: 1,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.UHC,\n partnerSupportResponsibleManager: 'Ryan',\n patientConfig: PATIENT_CONFIG.UHCMA,\n patientSupportPhoneE164: '+18666334454',\n payer: 'partner',\n paymentType: 'claims',\n priceUSD: makeDollar(161),\n productTypesRequiringRequisitions: [ProductType.LAB_TEST],\n referralCoordinatorID: '9007cf0e-e28a-4074-970f-99062e7c13b8',\n referralLandingPageUrlPath: 'uhc-ma',\n referralVerificationPageUrlPath: 'uhc-ma',\n requisitionUploadFromPartner: 'required_after_booking',\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsAddByDefault: {\n SPRINTER_HEALTH: [\n {\n externalID: 'RACE-AND-ETHNICITY-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'lifetime' as const,\n },\n {\n externalID: 'SDOH-QUESTIONNAIRE',\n serviceSuccessfullyProvidedCutoffPeriod: 'ytd' as const,\n },\n ],\n },\n serviceRequestsFromPartner: 'required',\n shortPartnerDisplayNameForMessaging: 'UnitedHealthcare',\n shouldExportAppointmentsForBilling: true,\n shouldGenerateEncounterSummaryForVitals: true,\n showDiagnosisCodes: true,\n skipCancelationFee: true,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n },\n supportedProductTypes: [ProductType.VITALS, ProductType.LAB_TEST, ProductType.QUESTIONNAIRES],\n supportsEDILabOrdering: true,\n supportsPatientEncounterSummary: true as const,\n supportsPatientEncounterSummaryDirectMail: true as const,\n supportsReferrals: true,\n vertical: 'healthPlan' as const,\n zendeskOrganizationName: 'UnitedHealthcare - Massachusetts',\n },\n VNHOMEHEALTHCARE: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'VN Home Health Care',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['gmail.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.VNHOMEHEALTHCARE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'vnhomehealth@gmail.com',\n patientSupportPhoneE164: '+14089980550',\n priceUSD: makeDollar(99),\n },\n WELLSENSE: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: [\n '496', // Quest A1C\n '375', // Quest eGFR\n '6517', // Quest uACR\n ],\n SPRINTER_HEALTH: ['BLOOD-PRESSURE-CHECK', 'DIABETIC-RETINAL-SCAN'],\n },\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/wellsense/wellsense_logo.png',\n width: 92,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'WellSense',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['wellsense.org']),\n encounterSummaryReportingDefaultCaseManagerEmail: 'SCO_CareManagement@wellsense.org',\n encounterSummaryReportingModel: 'practitionerWithDefaultCaseManagerFallBack',\n fullPartnerDisplayNameForMessaging: 'WellSense Senior Care Options',\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: 'd527d650-1605-4c95-884e-8f332fe5bb03',\n isAutofillingRequisitionsAllowed: true,\n isPartnerBookingAllowed: true,\n isReferralBookingAllowed: true,\n isSelfBookingAllowed: false,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.URINE],\n [LabOrganization.SPRINTER_HEALTH]: [ServiceType.VITALS, ServiceType.DIABETIC_RETINAL_SCAN],\n },\n maxAllowedPatientsPerBooking: 1 as number,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.WELLSENSE,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.WELLSENSE,\n patientSupportEmail: 'MemberQuestions@wellsense.org',\n patientSupportPhoneE164: '+18558338125',\n payer: 'partner',\n paymentType: 'claims',\n priceUSD: makeDollar(79),\n referralCoordinatorID: '92d68dcb-98e4-40b5-965f-9a8922ceb8cc',\n referralLandingPageUrlPath: 'wellsense-ma',\n referralVerificationPageUrlPath: 'wellsense-ma',\n requisitionUploadFromPartner: 'skip',\n reschedulingCoordinator: 'partner',\n schedulingTimeRangeRules: SCHEDULING_TIME_RANGE_CONFIGS.WELLSENSE,\n serviceRequestsFromPartner: 'required',\n shortPartnerDisplayNameForMessaging: 'WellSense',\n shouldExportAppointmentsForBilling: true,\n shouldGenerateEncounterSummaryForVitals: true,\n shouldIncludeFailedAppointmentsInClaims: true,\n showDiagnosisCodes: true,\n skipCancelationFee: true,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n },\n supportedProductTypes: [\n ProductType.VITALS,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.LAB_TEST,\n ],\n supportsEDILabOrdering: false,\n supportsReferrals: true,\n vertical: 'healthPlan',\n vitalsThresholds: VITALS_CONFIG.WELLSENSE,\n zendeskOrganizationName: 'Wellsense - MA (Medicare)',\n },\n WELLSENSENHMEDICAID: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: [\n '496', // Quest A1C\n '39027', // Quest lead screening\n ],\n SPRINTER_HEALTH: ['BLOOD-PRESSURE-CHECK'],\n },\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/wellsense/wellsense_logo.png',\n width: 92,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'WellSense (NH Medicaid)',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['sprinterhealth.com']),\n encounterSummaryReportingDefaultCaseManagerEmail: 'NHCare.Management@Wellsense.org',\n encounterSummaryReportingModel: 'practitionerWithDefaultCaseManagerFallBack',\n fullPartnerDisplayNameForMessaging: 'WellSense Health Plan',\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: '3c980855-69f3-4ec5-ad33-fda56472b397',\n isAutofillingRequisitionsAllowed: true,\n isPartnerBookingAllowed: true,\n isReferralBookingAllowed: true,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.CAPILLARY_BLOOD_DRAW],\n [LabOrganization.SPRINTER_HEALTH]: [ServiceType.VITALS],\n },\n leadScreeningEligibilityRequirements: STANDARD_LEAD_SCREENING_AGE_REQUIREMENTS,\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.WELLSENSENH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.WELLSENSENHMEDICAID,\n patientSupportEmail: 'NHmembers@wellsense.org',\n patientSupportPhoneE164: '+18779571300',\n payer: 'partner',\n paymentType: 'claims',\n priceUSD: makeDollar(79),\n referralCoordinatorID: 'e4d29728-47d2-4759-8c45-87cffca2fc12',\n referralLandingPageUrlPath: 'wellsense-nh-medicaid',\n referralVerificationPageUrlPath: 'wellsense-nh-medicaid',\n requisitionUploadFromPartner: 'required_after_booking',\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsFromPartner: 'required',\n shortPartnerDisplayNameForMessaging: 'WellSense',\n shouldGenerateEncounterSummaryForVitals: true,\n shouldIncludeFailedAppointmentsInClaims: true,\n shouldSkipPriorLeadScreeningsQuestion: true,\n skipCancelationFee: true as const,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n },\n supportedProductTypes: [ProductType.VITALS, ProductType.LAB_TEST],\n supportsEDILabOrdering: false,\n supportsReferrals: true,\n vertical: 'healthPlan',\n zendeskOrganizationName: 'Wellsense - NH (Medicaid)',\n },\n WELLSENSENHMEDICARE: {\n ...GLOBAL_PARTNER_DEFAULTS,\n allowedServiceRequests: {\n QUEST: [\n '496', // Quest A1C\n '375', // Quest eGFR\n '6517', // Quest uACR\n ],\n SPRINTER_HEALTH: ['BLOOD-PRESSURE-CHECK', 'DIABETIC-RETINAL-SCAN'],\n },\n cobrandingLogo: {\n height: 28,\n uri: 'https://app.sprinterhealth.com/wellsense/wellsense_logo.png',\n width: 92,\n },\n defaultLabOrganization: LabOrganization.QUEST,\n displayName: 'WellSense (NH Medicare)',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['sprinterhealth.com']),\n encounterSummaryReportingDefaultCaseManagerEmail: 'NHCM.MedAdv@wellsense.org',\n encounterSummaryReportingModel: 'practitionerWithDefaultCaseManagerFallBack',\n fullPartnerDisplayNameForMessaging: 'WellSense Health Plan',\n insuranceUploadFromPartner: 'skip',\n internalCoordinatorID: '02d3c709-7ac3-4463-b743-04c742aabd59',\n isAutofillingRequisitionsAllowed: true,\n isPartnerBookingAllowed: true,\n isReferralBookingAllowed: true,\n isSelfBookingAllowed: false as const,\n isTestResultsUploadRequired: true,\n labOrganizations: {\n [LabOrganization.QUEST]: [ServiceType.BLOOD, ServiceType.URINE],\n [LabOrganization.SPRINTER_HEALTH]: [ServiceType.DIABETIC_RETINAL_SCAN, ServiceType.VITALS],\n },\n maxAllowedPatientsPerBooking: 1 as const,\n onlyOrdersSingleServiceRequests: false as const,\n partnerOrganizationGroup: PartnerOrganizationGroup.WELLSENSENH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientConfig: PATIENT_CONFIG.WELLSENSENHMEDICARE,\n patientSupportPhoneE164: '+18558338128',\n payer: 'partner',\n paymentType: 'claims',\n priceUSD: makeDollar(79),\n referralCoordinatorID: 'd0ef120c-f18a-4af3-8b4e-88e6491cde07',\n referralLandingPageUrlPath: 'wellsense-nh-medicare',\n referralVerificationPageUrlPath: 'wellsense-nh-medicare',\n requisitionUploadFromPartner: 'required_after_booking',\n reschedulingCoordinator: 'sprinterHealth',\n serviceRequestsFromPartner: 'required',\n shortPartnerDisplayNameForMessaging: 'WellSense',\n shouldGenerateEncounterSummaryForVitals: true,\n shouldIncludeFailedAppointmentsInClaims: true,\n showDiagnosisCodes: true,\n skipCancelationFee: true as const,\n sprinterHealthDefaultProductTypeMappingOverride: {\n [ProductType.VITALS]: {\n defaultSprinterHealthExternalID: 'BLOOD-PRESSURE-CHECK',\n displayName: 'Blood pressure collection',\n message: '',\n },\n },\n supportedProductTypes: [\n ProductType.VITALS,\n ProductType.DIABETIC_RETINAL_SCAN,\n ProductType.LAB_TEST,\n ],\n supportsEDILabOrdering: false,\n supportsReferrals: true,\n vertical: 'healthPlan',\n zendeskOrganizationName: 'Wellsense - NH (Medicare)',\n },\n YOURCHOICEHOMEHEALTH: {\n ...STANDARD_HOME_HEALTH_PARTNER_BOOKING,\n displayName: 'Your Choice Home Health',\n domainAllowList: normalizeEmailDomainsAndAssociateWithNativeProvider(['yahoo.com']),\n partnerOrganizationGroup: PartnerOrganizationGroup.YOURCHOICEHOMEHEALTH,\n partnerSupportResponsibleManager: 'Sengyeon',\n patientSupportEmail: 'yourchoice_h@yahoo.com',\n patientSupportPhoneE164: '+19164766037',\n },\n};\n\nconst DIRECT_TO_CONSUMER_CONFIG: PartnerConfig = {\n ...GLOBAL_PARTNER_DEFAULTS,\n defaultLabOrganization: STANDARD_REFERENCE_LAB_ORGANIZATION,\n // TODO(dhruv) Set displayName to D2C, ensuring all usages of displayName are\n // valid & contextually make sense.\n displayName: '',\n insuranceUploadFromPatient: 'required',\n isGuestReschedulingAllowed: false,\n isMultiPatientBookingAllowed: true,\n isPartnerBookingAllowed: false,\n isSelfBookingAllowed: true,\n labOrganizations: STANDARD_REFERENCE_LAB_ORGANIZATION_SETTINGS,\n maxAllowedPatientsPerBooking: MAX_PATIENTS_PER_APPOINTMENT_D2C as number,\n onlyOrdersSingleServiceRequests: false,\n partnerOrganizationGroup: PartnerOrganizationGroup.D2C,\n partnerSupportResponsibleManager: 'Sengyeon',\n payer: 'patient',\n requisitionUploadFromPatient: 'required',\n schedulingTimeRangeRules: D2C_TIME_RANGE_CONFIGS,\n skipCancelationFee: true,\n supportedProductTypes: [ProductType.LAB_TEST],\n vertical: 'directToConsumer' as const,\n};\n\nexport default function getPartnerConfig(\n partnerOrganization: PartnerOrganization | null | undefined,\n): PartnerConfig {\n return partnerOrganization == null\n ? DIRECT_TO_CONSUMER_CONFIG\n : PARTNER_CONFIGS[partnerOrganization];\n}\n\nexport function getPartnersForPartnerOrganizationGroup(\n partnerOrganizationGroup: PartnerOrganizationGroup,\n): PartnerOrganization[] {\n return Object.entries(PARTNER_CONFIGS)\n .filter(([, partnerConfig]) => {\n return partnerConfig.partnerOrganizationGroup === partnerOrganizationGroup;\n })\n .map(([partnerOrganization]) => partnerOrganization as PartnerOrganization);\n}\n\nexport function isPartnerConfigPartnerInvoiceable(partnerConfig: PartnerConfig): boolean {\n return partnerConfig.payer === 'partner' && partnerConfig.paymentType === 'invoice';\n}\n\nexport const mapAllowedDisallowedServiceRequests = (\n serviceRequests: { [key in LabOrganization]?: string[] },\n): { externalID: string; labOrganization: LabOrganization }[] => {\n return Object.keys(serviceRequests).flatMap((labOrganization) =>\n (serviceRequests?.[labOrganization as LabOrganization] ?? []).map(\n (serviceRequestExternalID) => ({\n externalID: serviceRequestExternalID,\n labOrganization: labOrganization as LabOrganization,\n }),\n ),\n );\n};\n","import { PartnerOrganization } from '../API';\nimport Optionality from '../types/Optionality';\n\nexport enum PatientField {\n EXTERNAL_ID,\n SECONDARY_EXTERNAL_ID,\n PLAN_NAME,\n ENABLE_DIABETIC_CHECK,\n}\n\nexport interface PatientIdentifier {\n label: string;\n pattern?: RegExp;\n placeholder?: string;\n}\n\nexport type PatientConfig = {\n externalID?: PatientIdentifier;\n planName?: PatientIdentifier;\n secondaryExternalID?: PatientIdentifier;\n enableDiabeticCheck?: boolean;\n showMailingAddress?: boolean;\n responsiblePractitionerOptionality?: Optionality;\n};\n\nconst BMC_GROUP_DEFAULT_PATIENT_CONFIG = {\n externalID: {\n label: 'MRN',\n pattern: /.*.{1,}/, // As part of initial BMC launch, we are not enforcing MRN external ID format\n placeholder: 'XXXXXXXXXX',\n },\n secondaryExternalID: {\n label: 'Member ID',\n placeholder: '123456789-01',\n },\n planName: {\n label: 'Plan name',\n placeholder: 'WellSense Community Alliance ACO',\n },\n};\n\nconst MOLINA_GROUP_DEFAULT_PATIENT_CONFIG = {\n externalID: {\n label: 'Member ID',\n pattern: /.{1,}/, // for initial launch require at least 1 character\n placeholder: '',\n },\n planName: {\n label: 'Plan name',\n pattern: /.{1,}/,\n placeholder: '',\n },\n enableDiabeticCheck: true,\n responsiblePractitionerOptionality: 'optional' as const,\n};\nconst WELLSENSENH_GROUP_DEFAULT_PATIENT_CONFIG = {\n externalID: {\n label: 'WellSense ID',\n pattern: /.{1,}/, // for initial launch require at least 1 character\n placeholder: '',\n },\n secondaryExternalID: {\n label: 'Member ID',\n pattern: /.{1,}/,\n placeholder: '',\n },\n planName: {\n label: 'Plan name',\n placeholder: 'WellSense Health Plan',\n },\n responsiblePractitionerOptionality: 'optional' as const,\n};\n\nconst ELEVANCE_HEALTH_GROUP_DEFAULT_PATIENT_CONFIG = {\n externalID: {\n label: 'Member ID',\n pattern: /.+/, // for initial launch require at least 1 character\n placeholder: '',\n },\n responsiblePractitionerOptionality: 'optional' as const,\n};\n\nconst CENTENE_GROUP_DEFAULT_PATIENT_CONFIG = {\n externalID: {\n label: 'Member ID',\n pattern: /.+/, // for initial launch require at least 1 character\n placeholder: '',\n },\n planName: {\n label: 'Plan name',\n },\n responsiblePractitionerOptionality: 'optional' as const,\n enableDiabeticCheck: true,\n};\n\nconst HUMANA_GROUP_DEFAULT_PATIENT_CONFIG = {\n externalID: {\n label: 'Member ID',\n pattern: /.{1,}/,\n placeholder: 'XXXXXXXXXXXXX',\n },\n planName: {\n label: 'Plan name',\n placeholder: '',\n },\n responsiblePractitionerOptionality: 'optional' as const,\n enableDiabeticCheck: true,\n};\n\nexport const PATIENT_CONFIG: {\n [partnerOrganization in PartnerOrganization]?: PatientConfig;\n} = {\n CEDARSSINAI: {\n externalID: { label: 'MRN', pattern: /^[a-zA-Z0-9]{9}$/, placeholder: 'XXXXXXXXX' },\n },\n CENTRALCALIFORNIAALLIANCEFORHEALTH: {\n externalID: {\n label: 'member_id',\n pattern: /.{1,}/, // Require at least 1 character\n placeholder: '',\n },\n },\n AETNA: {\n // TODO(aetna): confirm against the gap list\n externalID: {\n label: 'Member ID',\n pattern: /.+/, // for initial launch require at least 1 character\n placeholder: '',\n },\n planName: {\n label: 'Plan name',\n },\n responsiblePractitionerOptionality: 'optional' as const,\n enableDiabeticCheck: true,\n },\n OSCAR: {\n externalID: {\n label: 'Oscar ID',\n pattern: /^OSC[0-9]{8}-[0-9]{2}$/,\n placeholder: 'OSC01234567-01',\n },\n planName: {\n label: 'Plan name',\n placeholder: 'Bronze Classic',\n },\n enableDiabeticCheck: true,\n },\n OSCARHEALTH: {\n externalID: {\n label: 'Oscar ID',\n pattern: /^OSC[0-9]{8}-[0-9]{2}$/,\n placeholder: 'OSC01234567-01',\n },\n secondaryExternalID: {\n label: 'Policy ID',\n placeholder: 'OSC01234567',\n },\n planName: {\n label: 'Plan name',\n placeholder: 'Bronze Classic',\n },\n enableDiabeticCheck: true,\n responsiblePractitionerOptionality: 'required',\n },\n OSCARDEMO: {\n externalID: {\n label: 'MRN',\n pattern: /.*/,\n placeholder: 'XXXXXXXXXX',\n },\n enableDiabeticCheck: true,\n responsiblePractitionerOptionality: 'required',\n },\n BMC: BMC_GROUP_DEFAULT_PATIENT_CONFIG,\n DOTHOUSE: BMC_GROUP_DEFAULT_PATIENT_CONFIG,\n MATTAPAN: {\n ...BMC_GROUP_DEFAULT_PATIENT_CONFIG,\n enableDiabeticCheck: true,\n },\n CODMAN: {\n ...BMC_GROUP_DEFAULT_PATIENT_CONFIG,\n enableDiabeticCheck: true,\n },\n BMCEVANS: {\n ...BMC_GROUP_DEFAULT_PATIENT_CONFIG,\n enableDiabeticCheck: true,\n },\n BMCFAMILYMEDICINE: {\n ...BMC_GROUP_DEFAULT_PATIENT_CONFIG,\n enableDiabeticCheck: true,\n },\n ROSLINDALE: {\n ...BMC_GROUP_DEFAULT_PATIENT_CONFIG,\n enableDiabeticCheck: true,\n },\n CHARLESRIVERFAMILYMEDICINE: { ...BMC_GROUP_DEFAULT_PATIENT_CONFIG, enableDiabeticCheck: true },\n STANFORDCANCERCENTER: {\n externalID: {\n label: 'MRN',\n pattern: /.*/, // As part of initial stanford cancer center launch, we are not enforcing MRN external ID format\n placeholder: 'XXXXXXXXXX',\n },\n },\n STANFORDRESEARCH: {\n externalID: {\n label: 'MRN',\n pattern: /.*/, // We are not enforcing MRN external ID format\n placeholder: 'XXXXXXXXXX',\n },\n },\n TRAININGPARTNER: {\n externalID: {\n label: 'MRN',\n pattern: /.*/, // We are not enforcing MRN external ID format\n placeholder: 'XXXXXXXXXX',\n },\n responsiblePractitionerOptionality: 'optional' as const,\n },\n WELLSENSE: {\n enableDiabeticCheck: true,\n secondaryExternalID: {\n label: 'Member ID',\n pattern: /.{1,}/,\n placeholder: '12345678901',\n },\n planName: {\n label: 'Plan name',\n placeholder: 'Senior Care Options',\n },\n responsiblePractitionerOptionality: 'optional' as const,\n },\n FIREFLYHEALTH: {\n enableDiabeticCheck: true,\n },\n ALIGNMENTCAREEXTENSION: {\n externalID: {\n label: 'Member ID',\n pattern: /^[\\w]{1,11}$/,\n placeholder: 'XXXXXXXXXX',\n },\n },\n ALIGNMENTSTARS: {\n externalID: {\n label: 'Member ID',\n pattern: /^[\\w]{1,11}$/,\n placeholder: 'XXXXXXXXXX',\n },\n enableDiabeticCheck: true,\n },\n MOLINAUT: MOLINA_GROUP_DEFAULT_PATIENT_CONFIG,\n MOLINAMI: MOLINA_GROUP_DEFAULT_PATIENT_CONFIG,\n MOLINACA: {\n ...MOLINA_GROUP_DEFAULT_PATIENT_CONFIG,\n responsiblePractitionerOptionality: 'required',\n },\n MOLINAFL: MOLINA_GROUP_DEFAULT_PATIENT_CONFIG,\n WELLSENSENHMEDICARE: { ...WELLSENSENH_GROUP_DEFAULT_PATIENT_CONFIG, enableDiabeticCheck: true },\n WELLSENSENHMEDICAID: WELLSENSENH_GROUP_DEFAULT_PATIENT_CONFIG,\n UCIHEALTH: {\n externalID: {\n label: 'Member ID',\n pattern: /^.{1,}$/,\n placeholder: 'XXXXXXX',\n },\n },\n UCLAHEALTH: {\n enableDiabeticCheck: true,\n // TODO(86b2x1mhm): Verify that this pattern for externalID is correct\n // For now, we are assuming that UCLA follows the same format at UCI\n externalID: {\n label: 'Member ID',\n pattern: /^.{1,}$/,\n placeholder: 'XXXXXXX',\n },\n responsiblePractitionerOptionality: 'optional',\n },\n ELEVANCEHEALTH: ELEVANCE_HEALTH_GROUP_DEFAULT_PATIENT_CONFIG,\n CENTENECA: CENTENE_GROUP_DEFAULT_PATIENT_CONFIG,\n CENTENEFL: CENTENE_GROUP_DEFAULT_PATIENT_CONFIG,\n CENTENEGA: CENTENE_GROUP_DEFAULT_PATIENT_CONFIG,\n CENTENEKY: CENTENE_GROUP_DEFAULT_PATIENT_CONFIG,\n CENTENEMA: CENTENE_GROUP_DEFAULT_PATIENT_CONFIG,\n CENTENEMI: CENTENE_GROUP_DEFAULT_PATIENT_CONFIG,\n CENTENENH: CENTENE_GROUP_DEFAULT_PATIENT_CONFIG,\n CENTENEOH: CENTENE_GROUP_DEFAULT_PATIENT_CONFIG,\n CENTENEME: CENTENE_GROUP_DEFAULT_PATIENT_CONFIG,\n CENTENEIN: CENTENE_GROUP_DEFAULT_PATIENT_CONFIG,\n CENTENECT: CENTENE_GROUP_DEFAULT_PATIENT_CONFIG,\n CENTENETX: CENTENE_GROUP_DEFAULT_PATIENT_CONFIG,\n UHCMA: {\n externalID: {\n label: 'Member ID',\n pattern: /^[0-9]{3}_[0-9]{10}$/,\n placeholder: 'XXX_XXXXXXXXXX',\n },\n planName: {\n label: 'Plan name',\n placeholder: '',\n },\n responsiblePractitionerOptionality: 'required',\n },\n HUMANA: {\n ...HUMANA_GROUP_DEFAULT_PATIENT_CONFIG,\n },\n HUMANANY: {\n ...HUMANA_GROUP_DEFAULT_PATIENT_CONFIG,\n },\n HUMANAMI: {\n ...HUMANA_GROUP_DEFAULT_PATIENT_CONFIG,\n },\n ACCOMPANYHEALTHMI: {\n externalID: {\n label: 'MRN',\n pattern: /^.{1,}$/,\n placeholder: 'XXXXXXXXXX',\n },\n enableDiabeticCheck: true,\n responsiblePractitionerOptionality: 'skip',\n },\n DEVOTEDHEALTH: {\n enableDiabeticCheck: true,\n responsiblePractitionerOptionality: 'skip',\n externalID: {\n label: 'Member ID',\n pattern: /^.*$/, // Match any string; TODO(ruben): add validation once we have the format from Partnerships\n },\n },\n UCSDHEALTH: {\n externalID: {\n label: 'Member ID',\n pattern: /^.{1,}$/,\n placeholder: 'XXXXXXXX',\n },\n enableDiabeticCheck: true,\n responsiblePractitionerOptionality: 'optional',\n },\n};\n","import { LabOrganization, ProductType, QualificationType, ServiceType } from '../API';\nimport { MINUTE_IN_SECONDS } from '../constants';\nimport isNotNullish from '../isNotNullish';\nimport ConditionalFields from '../types/ConditionalFields';\n\nconst DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW = 18;\ntype ProductTypeConfig = {\n minPatientsYearsOfAge?: number; // inclusive\n maxPatientsYearsOfAge?: number; // inclusive (ie. 20 -> 20 year olds allowed, 21 year olds not allowed)\n estimatedServiceDurationSeconds: number;\n serviceType: ServiceType[];\n defaultSprinterHealthExternalID: string;\n isDropOffRequired?: boolean;\n isCareNavigationProductType?: boolean;\n} & ConditionalFields<\n { isEligibleToSkipPrereview: true },\n {\n eligibleServicesToSkipPrereview: { [key in LabOrganization]?: string[] };\n minAgeToSkipPrereview: number; // exclusive (ie. if the age limit is 18, then 18 year olds are allowed to skip)\n }\n> &\n ConditionalFields<\n { hasRemoteComponent: true }, // whether or not this service includes a video call with a remote tech\n { remoteTechQualificationTypeRequired: QualificationType }\n >;\n\nexport const PRODUCT_TYPE_CONFIGS: {\n [productType in ProductType]: ProductTypeConfig;\n} = {\n [ProductType.CARDIAC_AUSCULTATION]: {\n estimatedServiceDurationSeconds: 4 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.CARDIAC_AUSCULTATION],\n defaultSprinterHealthExternalID: 'CARDIAC-AUSCULTATION',\n isEligibleToSkipPrereview: false,\n hasRemoteComponent: false,\n },\n [ProductType.DIABETIC_FOOT_SCREENING]: {\n estimatedServiceDurationSeconds: 6 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.DIABETIC_FOOT_SCREENING],\n defaultSprinterHealthExternalID: 'DIABETIC-FOOT-SCREENING',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['DIABETIC-FOOT-SCREENING'],\n },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.DIABETIC_RETINAL_SCAN]: {\n estimatedServiceDurationSeconds: 10 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.DIABETIC_RETINAL_SCAN],\n defaultSprinterHealthExternalID: 'DIABETIC-RETINAL-SCAN',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['DIABETIC-RETINAL-SCAN'],\n },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.ECG]: {\n estimatedServiceDurationSeconds: 15 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.ECG],\n defaultSprinterHealthExternalID: 'ELECTROCARDIOGRAM-12-LEAD',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['ELECTROCARDIOGRAM-12-LEAD'],\n },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.LAB_TEST]: {\n estimatedServiceDurationSeconds: 10 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.BLOOD, ServiceType.URINE, ServiceType.CAPILLARY_BLOOD_DRAW],\n isDropOffRequired: true,\n defaultSprinterHealthExternalID: '',\n // In general, lab tests (e.g., blood or urine services) are not eligible to skip pre-review because the test codes\n // must be entered into the requisition during pre-review. However, for specialty labs and some exceptions (lead screening), we do allow the skipping of pre-review.\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: { QUEST: ['39027'] },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: 13,\n },\n [ProductType.RAPID_COVID_TEST]: {\n estimatedServiceDurationSeconds: 15 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.RAPID_COVID_TEST],\n defaultSprinterHealthExternalID: '',\n isEligibleToSkipPrereview: false,\n hasRemoteComponent: false,\n },\n [ProductType.VITALS]: {\n estimatedServiceDurationSeconds: 3 * MINUTE_IN_SECONDS,\n minPatientsYearsOfAge: 18,\n serviceType: [ServiceType.VITALS],\n defaultSprinterHealthExternalID: 'VITALS-CHECK',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: { SPRINTER_HEALTH: ['VITALS-CHECK', 'BLOOD-PRESSURE-CHECK'] },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.XRAY]: {\n estimatedServiceDurationSeconds: 20 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.XRAY],\n defaultSprinterHealthExternalID: '',\n isEligibleToSkipPrereview: false,\n hasRemoteComponent: false,\n },\n [ProductType.FIT_KIT_PICKUP]: {\n estimatedServiceDurationSeconds: 3 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.FIT_KIT_PICKUP],\n isDropOffRequired: true,\n defaultSprinterHealthExternalID: 'FIT-KIT-PICKUP',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: { SPRINTER_HEALTH: ['FIT-KIT-PICKUP'] },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.CARE_NAVIGATION_DROP_IN]: {\n estimatedServiceDurationSeconds: 10 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.CARE_NAVIGATION],\n isDropOffRequired: false,\n defaultSprinterHealthExternalID: 'PRACTITIONER-APPOINTMENT-SCHEDULING',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: { SPRINTER_HEALTH: ['PRACTITIONER-APPOINTMENT-SCHEDULING'] },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.KIT_DELIVERY_AND_EDUCATION]: {\n estimatedServiceDurationSeconds: 10 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.KIT_DELIVERY_AND_EDUCATION],\n isDropOffRequired: false,\n defaultSprinterHealthExternalID: 'INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['INSURE-ONE-FIT-KIT-DELIVERY-AND-EDUCATION'],\n },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.QUESTIONNAIRES]: {\n estimatedServiceDurationSeconds: 5 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.RACE_AND_ETHNICITY, ServiceType.SDOH_QUESTIONNAIRE],\n isDropOffRequired: false,\n defaultSprinterHealthExternalID: '',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['RACE-AND-ETHNICITY-QUESTIONNAIRE', 'SDOH-QUESTIONNAIRE'],\n },\n hasRemoteComponent: false,\n // this is a service that should not be done alone generally and should not block other services from being auto pre-reviewed\n minAgeToSkipPrereview: 0,\n },\n [ProductType.SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE]: {\n estimatedServiceDurationSeconds: 10 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE],\n isDropOffRequired: false,\n defaultSprinterHealthExternalID: 'PRAPARE_SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['PRAPARE_SDOH_CARE_NAVIGATION_RESOURCE_GUIDANCE'],\n },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.KIT_DELIVERY]: {\n estimatedServiceDurationSeconds: 5 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.KIT_DELIVERY],\n isDropOffRequired: false,\n defaultSprinterHealthExternalID: 'CONSULT-FECAL-OCCULT-BLOOD-TEST-KIT-DELIVERY',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['CONSULT-FECAL-OCCULT-BLOOD-TEST-KIT-DELIVERY'],\n },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.DEXA_SCAN_CARE_NAVIGATION_BOOKING]: {\n estimatedServiceDurationSeconds: 0 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.DEXA_SCAN_CARE_NAVIGATION_BOOKING],\n defaultSprinterHealthExternalID: 'DEXA_SCAN_CARE_NAVIGATION_BOOKING',\n isEligibleToSkipPrereview: false,\n isCareNavigationProductType: true,\n hasRemoteComponent: false,\n },\n [ProductType.DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION]: {\n estimatedServiceDurationSeconds: 0 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION],\n defaultSprinterHealthExternalID: 'DEXA_SCAN_CARE_NAVIGATION_CONFIRMATION',\n isEligibleToSkipPrereview: false,\n isCareNavigationProductType: true,\n hasRemoteComponent: false,\n },\n [ProductType.MAMMOGRAM_CARE_NAVIGATION_BOOKING]: {\n estimatedServiceDurationSeconds: 0 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.MAMMOGRAM_CARE_NAVIGATION_BOOKING],\n defaultSprinterHealthExternalID: 'MAMMOGRAM_CARE_NAVIGATION_BOOKING',\n isEligibleToSkipPrereview: false,\n isCareNavigationProductType: true,\n hasRemoteComponent: false,\n },\n [ProductType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION]: {\n estimatedServiceDurationSeconds: 0 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION],\n defaultSprinterHealthExternalID: 'MAMMOGRAM_CARE_NAVIGATION_CONFIRMATION',\n isEligibleToSkipPrereview: false,\n isCareNavigationProductType: true,\n hasRemoteComponent: false,\n },\n [ProductType.PCP_VISIT_CARE_NAVIGATION_BOOKING]: {\n estimatedServiceDurationSeconds: 0 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.PCP_VISIT_CARE_NAVIGATION_BOOKING],\n defaultSprinterHealthExternalID: 'PCP_VISIT_CARE_NAVIGATION_BOOKING',\n isEligibleToSkipPrereview: false,\n isCareNavigationProductType: true,\n hasRemoteComponent: false,\n },\n [ProductType.PCP_VISIT_CARE_NAVIGATION_CONFIRMATION]: {\n estimatedServiceDurationSeconds: 0 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.PCP_VISIT_CARE_NAVIGATION_CONFIRMATION],\n defaultSprinterHealthExternalID: 'PCP_VISIT_CARE_NAVIGATION_CONFIRMATION',\n isEligibleToSkipPrereview: false,\n isCareNavigationProductType: true,\n hasRemoteComponent: false,\n },\n [ProductType.HEIGHT_AND_WEIGHT_COLLECTION]: {\n estimatedServiceDurationSeconds: 5 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.HEIGHT_AND_WEIGHT_COLLECTION],\n defaultSprinterHealthExternalID: 'HEIGHT_AND_WEIGHT_COLLECTION',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['HEIGHT_AND_WEIGHT_COLLECTION'],\n },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.COLOGUARD_KIT_EDUCATION]: {\n estimatedServiceDurationSeconds: 10 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.COLOGUARD_KIT_EDUCATION],\n defaultSprinterHealthExternalID: 'COLOGUARD-KIT-EDUCATION',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['COLOGUARD-KIT-EDUCATION'],\n },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.COLOGUARD_KIT_ORDERING]: {\n estimatedServiceDurationSeconds: 0 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.COLOGUARD_KIT_ORDERING],\n defaultSprinterHealthExternalID: 'COLOGUARD_KIT_ORDERING',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['COLOGUARD_KIT_ORDERING'],\n },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL]: {\n estimatedServiceDurationSeconds: 45 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.ANNUAL_WELLNESS_VISIT_PROVIDER_CALL],\n defaultSprinterHealthExternalID: 'ANNUAL_WELLNESS_VISIT_PROVIDER_CALL',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['ANNUAL_WELLNESS_VISIT_PROVIDER_CALL'],\n },\n hasRemoteComponent: true,\n remoteTechQualificationTypeRequired: QualificationType.NURSE_PRACTITIONER,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.ADULT_PREVENTIVE_VISIT]: {\n estimatedServiceDurationSeconds: 45 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.ADULT_PREVENTIVE_VISIT],\n defaultSprinterHealthExternalID: 'ADULT_PREVENTIVE_VISIT',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['ADULT_PREVENTIVE_VISIT'],\n },\n hasRemoteComponent: true,\n remoteTechQualificationTypeRequired: QualificationType.NURSE_PRACTITIONER,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.PAIN_SCREENING]: {\n estimatedServiceDurationSeconds: 1 * MINUTE_IN_SECONDS, // TODO(Efficiency): verify if one minute makes sense\n serviceType: [ServiceType.PAIN_SCREENING],\n defaultSprinterHealthExternalID: 'PAIN_SCREENING',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['PAIN_SCREENING'],\n },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.BONE_DENSITY_SCAN]: {\n estimatedServiceDurationSeconds: 60 * MINUTE_IN_SECONDS,\n serviceType: [ServiceType.BONE_DENSITY_SCAN],\n defaultSprinterHealthExternalID: 'MINI_OMNI_BONE_DENSITY_SCAN',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['MINI_OMNI_BONE_DENSITY_SCAN'],\n },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.TOPICAL_FLUORIDE]: {\n estimatedServiceDurationSeconds: 10 * MINUTE_IN_SECONDS,\n minPatientsYearsOfAge: 1,\n maxPatientsYearsOfAge: 20,\n serviceType: [ServiceType.TOPICAL_FLUORIDE],\n defaultSprinterHealthExternalID: 'TOPICAL_FLUORIDE',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['TOPICAL_FLUORIDE'],\n },\n hasRemoteComponent: false,\n minAgeToSkipPrereview: 1, // we expect 1 year olds to be doing this service\n },\n [ProductType.STATIN_ADHERENCE_ASSESSMENT]: {\n estimatedServiceDurationSeconds: 0, // Service duration is covered by the AWV\n minPatientsYearsOfAge: 21,\n maxPatientsYearsOfAge: 75,\n serviceType: [ServiceType.STATIN_ADHERENCE_ASSESSMENT],\n defaultSprinterHealthExternalID: 'STATIN_ADHERENCE_ASSESSMENT',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['STATIN_ADHERENCE_ASSESSMENT'],\n },\n hasRemoteComponent: true,\n remoteTechQualificationTypeRequired: QualificationType.NURSE_PRACTITIONER,\n minAgeToSkipPrereview: DEFAULT_MIN_PATIENT_AGE_TO_SKIP_PREREVIEW,\n },\n [ProductType.WEIGHT_COUNSELING_FOR_CHILDREN]: {\n estimatedServiceDurationSeconds: 30 * MINUTE_IN_SECONDS,\n minPatientsYearsOfAge: 3,\n maxPatientsYearsOfAge: 17,\n serviceType: [ServiceType.WEIGHT_COUNSELING_FOR_CHILDREN],\n defaultSprinterHealthExternalID: 'WEIGHT_COUNSELING_FOR_CHILDREN',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['WEIGHT_COUNSELING_FOR_CHILDREN'],\n },\n hasRemoteComponent: true,\n remoteTechQualificationTypeRequired: QualificationType.NURSE_PRACTITIONER,\n minAgeToSkipPrereview: 3,\n },\n [ProductType.RISK_ASSESSMENT]: {\n // todo(https://app.clickup.com/t/86b3rp076): Reevaluate this product & service type outside of AWV context.\n estimatedServiceDurationSeconds: 0,\n serviceType: [ServiceType.RISK_ASSESSMENT],\n defaultSprinterHealthExternalID: 'RISK_ASSESSMENT',\n isEligibleToSkipPrereview: true,\n eligibleServicesToSkipPrereview: {\n SPRINTER_HEALTH: ['RISK_ASSESSMENT'],\n },\n hasRemoteComponent: true,\n remoteTechQualificationTypeRequired: QualificationType.NURSE_PRACTITIONER,\n minAgeToSkipPrereview: 3,\n },\n};\n\n/**\n * Returns the product type config for the given product type.\n * Helpful for determining the minimum age of the patient for a product type or similar constraints such as the service delivery window.\n * @param productType - The product type to get the config for\n */\nexport default function getProductTypeConfig(productType: ProductType): ProductTypeConfig {\n return PRODUCT_TYPE_CONFIGS[productType];\n}\n\nexport const getMinPatientsYearsOfAgeFromProductTypes = (\n productTypesForPatient: ProductType[],\n): number => {\n let minPatientsYearsOfAgeFromProductTypes: number | null = null;\n\n for (const productType of productTypesForPatient) {\n const { minPatientsYearsOfAge } = getProductTypeConfig(productType);\n\n if (\n isNotNullish(minPatientsYearsOfAge) &&\n minPatientsYearsOfAge < (minPatientsYearsOfAgeFromProductTypes ?? Infinity)\n ) {\n minPatientsYearsOfAgeFromProductTypes = minPatientsYearsOfAge;\n }\n }\n\n return minPatientsYearsOfAgeFromProductTypes ?? -Infinity;\n};\n\n/**\n * Returns the maximum of the minimum ages that patients are allowed to skip pre-review for the given product types\n * For product types with no minimum age, the minimum age is Infinity (because the field minAgeToSkipPrereview is required if isEligibleToSkipPrereview is true)\n */\nexport function getMinAgeToSkipPrereviewFromProductTypes(productTypes: ProductType[]): number {\n let maxPatientsAgeYearsAllowedToSkipPrereview: number | null = null;\n\n for (const productType of productTypes) {\n const { minAgeToSkipPrereview } = getProductTypeConfig(productType);\n\n if (\n minAgeToSkipPrereview == null ||\n maxPatientsAgeYearsAllowedToSkipPrereview == null ||\n minAgeToSkipPrereview > maxPatientsAgeYearsAllowedToSkipPrereview\n ) {\n maxPatientsAgeYearsAllowedToSkipPrereview = minAgeToSkipPrereview ?? null;\n }\n }\n\n return maxPatientsAgeYearsAllowedToSkipPrereview == null\n ? Infinity\n : maxPatientsAgeYearsAllowedToSkipPrereview;\n}\n","import nullThrows from 'nullthrows';\n\nconst BLOOD_PRESSURE_REGEX = /[0-9]{2,3}/;\n\n/**\n * Parse blood pressure values that are stored as \"/\" and returns their object\n * representation if they are correctly set as 2 or 3 digits numbers.\n * @param bloodPressure A string of format \"/\"\"\n * @returns Returns an object representing the systolic and diastolic values. They will contain the original number or null, depending whether they are correctly set as 2 or 3 digits or not.\n */\nexport default function parseBloodPressure(\n bloodPressure: string,\n): { systolic: string | null; diastolic: string | null } {\n // Split the systolic and diastolic values and match both against the RegEx above.\n // If they match the RegEx, we return the original values. Otherwise, we return null.\n const [systolic = null, diastolic = null] = bloodPressure\n .split('/')\n .map((bp) => (BLOOD_PRESSURE_REGEX.exec(bp)?.[0] === bp ? bp : null));\n\n return {\n systolic,\n diastolic,\n };\n}\n\nexport function parseBloodPressureOrThrow(\n bloodPressure: string,\n): { systolic: string; diastolic: string } {\n // Split the systolic and diastolic values and match both against the RegEx above.\n // If they match the RegEx, we return the original values. Otherwise, we return null.\n const { systolic, diastolic } = parseBloodPressure(bloodPressure);\n\n return {\n systolic: nullThrows(systolic),\n diastolic: nullThrows(diastolic),\n };\n}\n","import { PartnerOrganization } from '../API';\nimport assertExhaustiveSwitch from '../assertExhaustiveSwitch';\nimport getAWSTimestampNow from '../getAWSTimestampNow';\nimport { parseBloodPressureOrThrow } from '../parseBloodPressure';\nimport { UrgencyThreshold, Vital, VitalRange, VitalReading, VitalThreshold } from '../types/Vitals';\n\nexport function parseVitalValues(value: string): VitalReading {\n // need try/catch block since JSON throws an error if we try to parse 120/80 str(old way to store BP)\n try {\n const parsedValue = JSON.parse(value) as VitalReading;\n if (typeof parsedValue === 'number') return { reading: parsedValue };\n return parsedValue;\n } catch (error) {\n const bloodPressure = parseBloodPressureOrThrow(value);\n return {\n reading: parseFloat(bloodPressure.diastolic),\n subreading: parseFloat(bloodPressure.systolic),\n };\n }\n}\n\nexport function constructVitalString({\n reading,\n vitalType,\n subreading,\n}: {\n reading: number;\n vitalType: Vital;\n subreading?: number;\n}): string {\n if (vitalType !== Vital.SYSTOLIC_BLOOD_PRESSURE) {\n return reading.toString();\n }\n if (subreading != null) return `${subreading}/${reading}`;\n return '';\n}\n\nexport const ordinal = (idx: number): string => {\n return idx === 0 ? '1st read' : idx === 1 ? '2nd read' : '3rd read';\n};\n\nexport function adjustVitalsBeforeSaving(\n vitalType: Vital,\n value: string,\n readingType: 'reading' | 'subreading',\n previousValue: VitalReading | null,\n): VitalReading {\n switch (vitalType) {\n case Vital.RESPIRATORY_RATE:\n return { reading: value ? parseFloat(value) * 2 : null, updatedAt: getAWSTimestampNow() };\n case Vital.SYSTOLIC_BLOOD_PRESSURE:\n return {\n reading:\n readingType === 'reading'\n ? value // if value is empty string set to null\n ? parseFloat(value)\n : null\n : previousValue?.reading != null\n ? previousValue.reading\n : null,\n ...(readingType === 'subreading'\n ? { subreading: value ? parseFloat(value) : undefined } // if value is empty string set subreading to undefined\n : previousValue?.subreading != null\n ? { subreading: previousValue.subreading }\n : {}),\n updatedAt: getAWSTimestampNow(),\n };\n default:\n return { reading: value ? parseFloat(value) : null, updatedAt: getAWSTimestampNow() };\n }\n}\n\nconst DEFAULT_VITALS_URGENCY_THRESHOLD: VitalThreshold = {\n systolicBloodPressureThresholds: {\n normal: {\n min: 90,\n max: 139,\n },\n abnormal: {\n min: 140,\n max: 179,\n },\n abnormalEscalated: {\n min: 80,\n max: 89,\n },\n invalid: {\n min: 60,\n max: 320,\n },\n },\n diastolicBloodPressureThresholds: {\n normal: {\n min: 60,\n max: 89,\n },\n abnormal: {\n min: 90,\n max: 99,\n },\n invalid: {\n min: 40,\n max: 180,\n },\n },\n heartRateThresholds: {\n normal: {\n min: 60,\n max: 100,\n },\n abnormal: {\n min: 50,\n max: 109,\n },\n abnormalEscalated: {\n min: 110,\n max: 119,\n },\n invalid: {\n min: 20,\n max: 250,\n },\n },\n temperatureThresholds: {\n normal: {\n min: 96.8,\n max: 99.9,\n },\n abnormal: {\n min: 96,\n max: 102.9,\n },\n abnormalEscalated: {\n // Prevents readings from being critical emergent\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n },\n invalid: {\n min: 91.4,\n max: 107.6,\n },\n },\n oxygenSaturationThresholds: {\n normal: {\n min: 93,\n max: 100,\n },\n abnormal: {\n min: 90,\n max: 92.9,\n },\n invalid: {\n min: 70,\n max: 100,\n },\n },\n respirationRateThresholds: {\n normal: {\n min: 12,\n max: 20,\n },\n abnormal: {\n min: 9,\n max: 25,\n },\n invalid: {\n min: 4,\n max: 45,\n },\n },\n};\n\nexport const VITALS_CONFIG: {\n [partnerOrganization in PartnerOrganization]?: VitalThreshold;\n} = {\n DISCOVERHEALTH: DEFAULT_VITALS_URGENCY_THRESHOLD,\n OSCAR: DEFAULT_VITALS_URGENCY_THRESHOLD,\n FIREFLYHEALTH: DEFAULT_VITALS_URGENCY_THRESHOLD,\n MATTAPAN: DEFAULT_VITALS_URGENCY_THRESHOLD,\n CODMAN: DEFAULT_VITALS_URGENCY_THRESHOLD,\n BMCEVANS: DEFAULT_VITALS_URGENCY_THRESHOLD,\n BMCFAMILYMEDICINE: DEFAULT_VITALS_URGENCY_THRESHOLD,\n ROSLINDALE: DEFAULT_VITALS_URGENCY_THRESHOLD,\n WELLSENSE: DEFAULT_VITALS_URGENCY_THRESHOLD,\n};\n\nexport function getVitalConfigOrThrow(\n vitalType: Vital,\n partnerOrganization: PartnerOrganization | null,\n): UrgencyThreshold {\n let config;\n if (partnerOrganization != null) {\n config = VITALS_CONFIG[partnerOrganization];\n }\n config = config ?? DEFAULT_VITALS_URGENCY_THRESHOLD;\n switch (vitalType) {\n case Vital.SYSTOLIC_BLOOD_PRESSURE:\n return config.systolicBloodPressureThresholds;\n case Vital.DIASTOLIC_BLOOD_PRESSURE:\n return config.diastolicBloodPressureThresholds;\n case Vital.OXYGEN_SATURATION:\n return config.oxygenSaturationThresholds;\n case Vital.PULSE:\n return config.heartRateThresholds;\n case Vital.TEMPERATURE:\n return config.temperatureThresholds;\n case Vital.RESPIRATORY_RATE:\n return config.respirationRateThresholds;\n default:\n return assertExhaustiveSwitch(vitalType);\n }\n}\n\nexport function getVitalRange(\n vital: Vital,\n reading: number,\n partnerOrganization: PartnerOrganization | null,\n): VitalRange {\n const vitalConfig = getVitalConfigOrThrow(vital, partnerOrganization);\n if (reading < vitalConfig.invalid.min || reading > vitalConfig.invalid.max)\n return VitalRange.INVALID;\n if (reading >= vitalConfig.normal.min && reading <= vitalConfig.normal.max)\n return VitalRange.NORMAL;\n if (reading >= vitalConfig.abnormal.min && reading <= vitalConfig.abnormal.max)\n return VitalRange.ABNORMAL;\n if (\n vitalConfig.abnormalEscalated &&\n reading >= vitalConfig.abnormalEscalated.min &&\n reading <= vitalConfig.abnormalEscalated.max\n )\n return VitalRange.ABNORMAL_ESCALATED;\n // every value out of critical urgent range is critical emergent\n return VitalRange.CRITICAL_EMERGENT;\n}\n\nexport function isVitalRangeCritical(x: VitalRange): boolean {\n return x === VitalRange.CRITICAL_EMERGENT;\n}\n\nexport function isVitalRangeAbnormal(x: VitalRange): boolean {\n return [VitalRange.ABNORMAL, VitalRange.ABNORMAL_ESCALATED].includes(x);\n}\n\nexport function isVitalRangeEscalated(x: VitalRange): boolean {\n return [VitalRange.CRITICAL_EMERGENT, VitalRange.ABNORMAL_ESCALATED].includes(x);\n}\n\nexport function isVitalRangeInvalid(x: VitalRange): boolean {\n return x === VitalRange.INVALID;\n}\n","export default function releaseNameOrEmptyObject(): Record | { release: string } {\n if (process.env.RELEASE_NAME != null)\n return {\n release: process.env.RELEASE_NAME,\n };\n return {};\n}\n","export interface Threshold {\n min: number;\n max: number;\n}\n\nexport interface UrgencyThreshold {\n normal: Threshold;\n abnormal: Threshold;\n abnormalEscalated?: Threshold;\n invalid: Threshold;\n}\n\nexport interface VitalThreshold {\n systolicBloodPressureThresholds: UrgencyThreshold;\n diastolicBloodPressureThresholds: UrgencyThreshold;\n heartRateThresholds: UrgencyThreshold;\n respirationRateThresholds: UrgencyThreshold;\n temperatureThresholds: UrgencyThreshold;\n oxygenSaturationThresholds: UrgencyThreshold;\n}\n\nexport enum Vital {\n TEMPERATURE = 'TEMPERATURE',\n OXYGEN_SATURATION = 'OXYGEN_SATURATION',\n SYSTOLIC_BLOOD_PRESSURE = 'SYSTOLIC_BLOOD_PRESSURE',\n DIASTOLIC_BLOOD_PRESSURE = 'DIASTOLIC_BLOOD_PRESSURE',\n PULSE = 'PULSE',\n RESPIRATORY_RATE = 'RESPIRATORY_RATE',\n}\n\nexport enum VitalRange {\n NORMAL = 'NORMAL',\n ABNORMAL = 'ABNORMAL',\n ABNORMAL_ESCALATED = 'ABNORMAL_ESCALATED',\n CRITICAL_EMERGENT = 'CRITICAL_EMERGENT',\n INVALID = 'INVALID',\n}\n\nexport interface VitalReading {\n reading: number | null;\n subreading?: number;\n updatedAt?: number;\n}\n","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"us-west-2\",\n \"aws_appsync_graphqlEndpoint\": \"https://hwuxnserjbdstallqjeanwlxiq.appsync-api.us-west-2.amazonaws.com/graphql\",\n \"aws_appsync_region\": \"us-west-2\",\n \"aws_appsync_authenticationType\": \"AMAZON_COGNITO_USER_POOLS\",\n \"aws_cloud_logic_custom\": [\n {\n \"name\": \"wwwREST\",\n \"endpoint\": \"https://0tnxl1quu6.execute-api.us-west-2.amazonaws.com/prod\",\n \"region\": \"us-west-2\"\n }\n ],\n \"aws_cognito_identity_pool_id\": \"us-west-2:d4633661-af62-451a-8298-61b479bd8ee3\",\n \"aws_cognito_region\": \"us-west-2\",\n \"aws_user_pools_id\": \"us-west-2_LPAPJr2vw\",\n \"aws_user_pools_web_client_id\": \"2msae2j7of4gktkkpisti6firq\",\n \"oauth\": {\n \"domain\": \"www-identity-sprinter-health-prod.auth.us-west-2.amazoncognito.com\",\n \"scope\": [\n \"openid\",\n \"email\",\n \"profile\"\n ],\n \"redirectSignIn\": \"https://e2e-one.d1j7gv4p0wvp5e.amplifyapp.com,https://clitestnet.dysrf8h3m670v.amplifyapp.com/,https://app.sprinterhealth.com/,http://localhost:3000/,https://jamesnet.d1j7gv4p0wvp5e.amplifyapp.com/,https://testnet-latest.d1j7gv4p0wvp5e.amplifyapp.com/,https://testnet.d1j7gv4p0wvp5e.amplifyapp.com/,https://testnet-ii.d1j7gv4p0wvp5e.amplifyapp.com/\",\n \"redirectSignOut\": \"https://e2e-one.d1j7gv4p0wvp5e.amplifyapp.com,https://clitestnet.dysrf8h3m670v.amplifyapp.com,https://app.sprinterhealth.com/,http://localhost:3000/,https://jamesnet.d1j7gv4p0wvp5e.amplifyapp.com/,https://testnet-latest.d1j7gv4p0wvp5e.amplifyapp.com/,https://testnet.d1j7gv4p0wvp5e.amplifyapp.com/,https://testnet-ii.d1j7gv4p0wvp5e.amplifyapp.com/\",\n \"responseType\": \"code\"\n },\n \"federationTarget\": \"COGNITO_USER_POOLS\",\n \"aws_cognito_username_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_social_providers\": [],\n \"aws_cognito_signup_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_mfa_configuration\": \"OPTIONAL\",\n \"aws_cognito_mfa_types\": [\n \"SMS\"\n ],\n \"aws_cognito_password_protection_settings\": {\n \"passwordPolicyMinLength\": 8,\n \"passwordPolicyCharacters\": [\n \"REQUIRES_LOWERCASE\",\n \"REQUIRES_UPPERCASE\",\n \"REQUIRES_NUMBERS\"\n ]\n },\n \"aws_cognito_verification_mechanisms\": [\n \"EMAIL\"\n ],\n \"aws_user_files_s3_bucket\": \"www42faeb05513049ec9991b79ddefc34d5111115-prod\",\n \"aws_user_files_s3_bucket_region\": \"us-west-2\"\n};\n\n\nexport default awsmobile;\n","import { captureException } from '@sentry/react';\nimport { HOME_PAGE_URL, HOUR_IN_MILLISECONDS, TESTNET_PAGE_URL } from 'khshared/constants';\nimport nullThrows from 'nullthrows';\nimport { useState } from 'react';\nimport { Platform } from 'react-native';\n\nimport getAppVersionOrNull from './getAppVersionOrNull';\nimport isProduction from './isProduction';\n\nconst DEFAULT_POLLING_INTERVAL = 2 * HOUR_IN_MILLISECONDS;\n\nconst VERSION_PATH = `${isProduction() ? HOME_PAGE_URL : TESTNET_PAGE_URL}/versions.json`;\n\ntype LatestAppVersions = { minimumPreferred: number | null };\n\nlet timer: NodeJS.Timer | null = null;\n\nasync function genFetchPreferredAppVersions(): Promise {\n try {\n const response = await fetch(VERSION_PATH);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const result = await response.json();\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const latestAppVersion = result[Platform.OS][isProduction() ? 'prod' : 'dev'];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return nullThrows(latestAppVersion, 'Unable to fetch app version');\n } catch (e) {\n captureException(e);\n return { minimumPreferred: null };\n }\n}\n\nexport default function useAppVersion(): [\n showWarningDialog: boolean,\n setDismissWarningDialog: () => void,\n] {\n const [showWarningDialog, setShowWarningDialog] = useState(false);\n\n async function genFetchAppVersionsWithUpdate() {\n const { minimumPreferred } = await genFetchPreferredAppVersions();\n const currentAppVersion = getAppVersionOrNull();\n\n const doesAppNeedUpdate =\n currentAppVersion == null || minimumPreferred == null\n ? false\n : minimumPreferred > currentAppVersion;\n\n if (doesAppNeedUpdate) {\n setShowWarningDialog(true);\n }\n }\n\n if (timer == null) {\n void genFetchAppVersionsWithUpdate();\n\n timer = setInterval(() => {\n void genFetchAppVersionsWithUpdate();\n }, DEFAULT_POLLING_INTERVAL);\n }\n\n const dismissWarning = () => setShowWarningDialog(false);\n\n return [showWarningDialog, dismissWarning];\n}\n","import React from 'react';\nimport { Linking } from 'react-native';\n\nimport { KHModalDialog } from '../../khui';\nimport getAndroidAppInstallURL from '../../utils/getAndroidAppInstallURL';\nimport useAppVersion from '../../utils/useAppVersion';\nimport useLogger from '../../utils/useLogger';\n\nexport default function AppVersionWarningModal(): JSX.Element {\n const [showWarning, dismissWarning] = useAppVersion();\n\n const logger = useLogger();\n\n return showWarning ? (\n \n New update available!\n \n \n There is a new version available, please update the app to receive new features and bug\n fixes.\n \n\n {\n dismissWarning();\n void Linking.openURL(getAndroidAppInstallURL());\n }}\n logger={logger}\n loggerEventName=\"appVersionWarningUpdateNowButtonClick\"\n >\n Update now\n \n }\n secondary={\n dismissWarning()}\n logger={logger}\n loggerEventName=\"appVersionWarningDismissButtonClick\"\n >\n I'll update later\n \n }\n />\n \n \n ) : (\n <>\n );\n}\n","export default function getAppVersionOrNull(): number | null {\n return process.env.AWS_JOB_ID != null ? parseInt(process.env.AWS_JOB_ID, 10) : null;\n}\n","import React, { useEffect } from 'react';\nimport { Platform } from 'react-native';\nimport { Redirect, Route } from 'react-router';\n\nexport default function DevRoute({\n desktopOnly,\n ...props\n}: React.ComponentProps & { desktopOnly?: boolean }): JSX.Element {\n useEffect(() => {\n const rootTag = Platform.OS === 'web' ? document.getElementById('root') : null;\n if (!rootTag) return;\n\n rootTag.classList[desktopOnly ? 'remove' : 'add']('pillarbox');\n\n // Intentionally skip cleaning up to avoid a flash of pillarboxed content when navigating\n // between desktop-only pages (e.g. the partner/scheduler portals).\n }, [desktopOnly]);\n\n if (!__DEV__) {\n return ;\n }\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return ;\n}\n","import React, { useEffect } from 'react';\nimport { Platform } from 'react-native';\nimport { Route } from 'react-router-dom';\n\nexport default function PublicRoute({\n desktopOnly,\n ...props\n}: React.ComponentProps & {\n desktopOnly?: boolean;\n}): JSX.Element {\n useEffect(() => {\n const rootTag = Platform.OS === 'web' ? document.getElementById('root') : null;\n if (!rootTag) return;\n\n rootTag.classList[desktopOnly ? 'remove' : 'add']('pillarbox');\n\n // Intentionally skip cleaning up to avoid a flash of pillarboxed content when navigating\n // between desktop-only pages (e.g. the partner/scheduler portals).\n }, [desktopOnly]);\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return ;\n}\n","import React from 'react';\nimport { Redirect, useLocation } from 'react-router-dom';\n\nimport KHAuth from '../utils/KHAuth';\nimport PublicRoute from './PublicRoute';\n\nexport default function PrivateRoute({\n authorizedGroups,\n ...props\n}: React.ComponentProps & {\n authorizedGroups: (\n | 'Schedulers'\n | 'Techs'\n | 'Coordinators'\n | 'Partners'\n | 'PatientEngagementCSRs'\n | 'RemoteTechs'\n | 'CaseManagers'\n | 'CMSManagers'\n )[];\n}): JSX.Element {\n const location = useLocation();\n\n const userGroups = KHAuth.getGroupsOrNull();\n if (userGroups == null || !authorizedGroups.some((group) => userGroups.includes(group))) {\n return (\n \n );\n }\n\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n return ;\n}\n","import React, { Suspense, lazy } from 'react';\nimport { Platform, SafeAreaView, ViewStyle } from 'react-native';\nimport { Redirect, Switch } from 'react-router';\n\nimport AppVersionWarningModal from './components/tech/AppVersionWarningModal';\nimport KHErrorBoundary from './khui/KHErrorBoundary';\nimport DevRoute from './routing/DevRoute';\nimport PrivateRoute from './routing/PrivateRoute';\nimport PublicRoute from './routing/PublicRoute';\nimport LoadingScreen from './screens/LoadingScreen';\nimport AlertXAPI from './xapis/AlertXAPI';\nimport Router from './xapis/RouterXAPI';\n\n// Shared screens\nconst HomeScreen = lazy(() => import('./screens/HomeScreen'));\nconst SignInScreen = lazy(() => import('./screens/SignInScreen'));\nconst ListRoutesScreen = lazy(() => import('./screens/ListRoutesScreen'));\nconst PermissionsScreen = lazy(() => import('./screens/PermissionsScreen'));\n\n// Coordinator screens\nconst AddRequisitionScreen = lazy(() => import('./screens/self-booking/AddRequisitionScreen'));\nconst AppointmentBillingScreen = lazy(\n () => import('./screens/self-booking/AppointmentBillingScreen'),\n);\nconst AppointmentLocationScreen = lazy(\n () => import('./screens/self-booking/AppointmentLocationScreen'),\n);\nconst AppointmentNotesScreen = lazy(() => import('./screens/self-booking/AppointmentNotesScreen'));\nconst AppointmentPatientsScreen = lazy(\n () => import('./screens/self-booking/AppointmentPatientsScreen'),\n);\nconst AppointmentPrepScreen = lazy(() => import('./screens/self-booking/AppointmentPrepScreen'));\nconst AppointmentPriceEstimateScreen = lazy(\n () => import('./screens/self-booking/AppointmentPriceEstimateScreen'),\n);\nconst AppointmentServicesScreen = lazy(\n () => import('./screens/self-booking/AppointmentServicesScreen'),\n);\nconst BookingRedirectFailureScreen = lazy(\n () => import('./screens/self-booking/BookingRedirectFailureScreen'),\n);\nconst BookingRedirectScreen = lazy(() => import('./screens/self-booking/BookingRedirectScreen'));\nconst BookingSelectionScreen = lazy(() => import('./screens/self-booking/BookingSelectionScreen'));\nconst BookingSignInScreen = lazy(() => import('./screens/self-booking/BookingSignInScreen'));\nconst ChooseInsurancePhotoScreen = lazy(\n () => import('./screens/self-booking/ChooseInsurancePhotoScreen'),\n);\nconst ChooseMedicarePhotoScreen = lazy(\n () => import('./screens/self-booking/ChooseMedicarePhotoScreen'),\n);\nconst ChooseNewTimeScreen = lazy(() => import('./screens/self-booking/ChooseNewTimeScreen'));\nconst CoordinatorRoleScreen = lazy(() => import('./screens/self-booking/CoordinatorRoleScreen'));\nconst Covid19DisclaimerForUsScreen = lazy(\n () => import('./screens/self-booking/Covid19DisclaimerForUsScreen'),\n);\nconst EncounterCOVID19QuestionsScreen = lazy(\n () => import('./screens/self-booking/EncounterCOVID19QuestionsScreen'),\n);\nconst MedicareEligibilityStatusScreen = lazy(\n () => import('./screens/self-booking/MedicareEligibilityStatusScreen'),\n);\nconst MedicareInsuranceIDScreen = lazy(\n () => import('./screens/self-booking/MedicareInsuranceIDScreen'),\n);\nconst MedicareScreenerScreen = lazy(() => import('./screens/self-booking/MedicareScreenerScreen'));\nconst PatientInfoScreen = lazy(() => import('./screens/self-booking/PatientInfoScreen'));\nconst ScheduleAppointmentScreen = lazy(\n () => import('./screens/self-booking/ScheduleAppointmentScreen'),\n);\nconst YoureBookedScreen = lazy(() => import('./screens/self-booking/YoureBookedScreen'));\nconst ForgotPasswordScreen = lazy(() => import('./screens/ForgotPasswordScreen'));\nconst ResetPasswordScreen = lazy(() => import('./screens/ResetPasswordScreen'));\n\nconst UnsubscribeScreen = lazy(() => import('./screens/UnsubscribeScreen'));\n\nconst ChangePasswordScreen = lazy(() => import('./screens/ChangePasswordScreen'));\n\nconst CancelAppointmentConfirmScreen = lazy(\n () => import('./screens/cancel-appointment/CancelAppointmentConfirmScreen'),\n);\nconst CancelAppointmentSuccessScreen = lazy(\n () => import('./screens/cancel-appointment/CancelAppointmentSuccessScreen'),\n);\nconst RescheduleAppointmentTimeScreen = lazy(\n () => import('./screens/reschedule-appointment/RescheduleAppointmentTimeScreen'),\n);\nconst RescheduleAppointmentConfirmScreen = lazy(\n () => import('./screens/reschedule-appointment/RescheduleAppointmentConfirmScreen'),\n);\nconst RescheduleAppointmentSuccessScreen = lazy(\n () => import('./screens/reschedule-appointment/RescheduleAppointmentSuccessScreen'),\n);\n\n// Out of Service Region Screens\nconst OutOfServiceRegionEmailConfirmScreen = lazy(\n () => import('./screens/self-booking/OutOfServiceRegionEmailConfirmScreen'),\n);\nconst OutOfServiceRegionEmailSuccessScreen = lazy(\n () => import('./screens/self-booking/OutOfServiceRegionEmailSuccessScreen'),\n);\n\n// Tech screens\nconst TechAppointmentsScreen = lazy(() => import('./screens/tech/TechAppointmentsScreen'));\nconst TechConfirmationsScreen = lazy(() => import('./screens/tech/TechConfirmationsScreen'));\nconst TechConfirmationScriptScreen = lazy(\n () => import('./screens/tech/TechConfirmationScriptScreen'),\n);\nconst TechAvailabilitiesScreen = lazy(() => import('./screens/tech/TechAvailabilitiesScreen'));\nconst TechProfileScreen = lazy(() => import('./screens/tech/TechProfileScreen'));\nconst TechAppointmentDetailsScreen = lazy(\n () => import('./screens/tech/TechAppointmentDetailsScreen'),\n);\nconst TechAppointmentTransferredSuccessScreen = lazy(\n () => import('./screens/tech/TechAppointmentTransferredSuccessScreen'),\n);\nconst TechAppointmentChecklistScreen = lazy(\n () => import('./screens/tech/TechAppointmentChecklistScreen'),\n);\nconst TechSupportScreen = lazy(() => import('./screens/tech/TechSupportScreen'));\nconst TechShakeRedirectScreen = lazy(() => import('./screens/tech/TechShakeRedirectScreen'));\nconst TechDisallowedDeviceScreen = lazy(() => import('./screens/tech/TechDisallowedDeviceScreen'));\n\n// Remote Tech screens\nconst RemoteTechToolbarScreen = lazy(() => import('./screens/remote-tech/RemoteTechToolbarScreen'));\n\n// Scheduler Portal screens (cooler than panel)\nconst SchedulerListAppointmentsScreen = lazy(\n () => import('./screens/scheduler/SchedulerListAppointmentsScreen'),\n);\nconst SchedulerPostReviewQueueScreen = lazy(\n () => import('./screens/scheduler/SchedulerPostReviewQueueScreen'),\n);\nconst SchedulerListAppointmentsBySprinterScreen = lazy(\n () => import('./screens/scheduler/SchedulerListAppointmentsBySprinterScreen'),\n);\nconst SchedulerAppointmentDetailsScreen = lazy(\n () => import('./screens/scheduler/SchedulerAppointmentDetailsScreen'),\n);\nconst SchedulerChecklistScreen = lazy(() => import('./screens/scheduler/SchedulerChecklistScreen'));\nconst SchedulerExperimentalScreen = lazy(\n () => import('./screens/scheduler/SchedulerExperimentalScreen'),\n);\n\nconst SchedulerSprinterListScreen = lazy(\n () => import('./screens/scheduler/SchedulerSprinterListScreen'),\n);\nconst SchedulerSprinterProfileScreen = lazy(\n () => import('./screens/scheduler/SchedulerSprinterProfileScreen'),\n);\n\nconst SchedulerDropOffDirectoryScreen = lazy(\n () => import('./screens/scheduler/SchedulerDropOffDirectoryScreen'),\n);\nconst SchedulerCreateDropOffScreen = lazy(\n () => import('./screens/scheduler/SchedulerCreateDropOffScreen'),\n);\nconst SchedulerDropOffDetailsScreen = lazy(\n () => import('./screens/scheduler/SchedulerDropOffDetailsScreen'),\n);\n\nconst SchedulerPractitionerDirectoryScreen = lazy(\n () => import('./screens/scheduler/SchedulerPractitionerDirectoryScreen'),\n);\nconst SchedulerCreatePractitionerScreen = lazy(\n () => import('./screens/scheduler/SchedulerCreatePractitionerScreen'),\n);\nconst SchedulerPractitionerDetailsScreen = lazy(\n () => import('./screens/scheduler/SchedulerPractitionerDetailsScreen'),\n);\n\nconst SchedulerZendeskTicketSidebarSurface = lazy(\n () => import('./screens/scheduler/zendesk/SchedulerZendeskTicketSidebarSurface'),\n);\n\nconst SchedulerSearchAppointmentsScreen = lazy(\n () => import('./screens/scheduler/SchedulerSearchAppointmentsScreen'),\n);\n\nconst SchedulerCreateSprinterScreen = lazy(\n () => import('./screens/scheduler/SchedulerCreateSprinterScreen'),\n);\n\nconst SchedulerCampaignMetricsScreen = lazy(\n () => import('./screens/scheduler/SchedulerCampaignMetricsScreen'),\n);\n\nconst SchedulerEscalationReportScreen = lazy(\n () => import('./screens/scheduler/SchedulerEscalationReportScreen'),\n);\n\nconst SchedulerTeamAvailabilityScreen = lazy(\n () => import('./screens/scheduler/SchedulerTeamAvailabilityScreen'),\n);\n\nconst SchedulerRemoteTechInfoScreen = lazy(\n () => import('./screens/scheduler/SchedulerRemoteTechInfoScreen'),\n);\n\nconst SchedulerPatientListUploadsScreen = lazy(\n () => import('./screens/scheduler/SchedulerPatientListUploadsScreen'),\n);\n\nconst SchedulerDNCListUploadScreen = lazy(\n () => import('./screens/scheduler/SchedulerDNCListUploadScreen'),\n);\n\nconst SchedulerOutreachSMSPreviewScreen = lazy(\n () => import('./screens/scheduler/SchedulerOutreachSMSPreviewScreen'),\n);\n\nconst SchedulerPatientCampaignStateActionScreen = lazy(\n () => import('./screens/scheduler/SchedulerPatientCampaignStateActionScreen'),\n);\n\nconst SchedulerGenerateProjectedEngagementScheduleScreen = lazy(\n () => import('./screens/scheduler/SchedulerGenerateProjectedEngagementScheduleScreen'),\n);\n\n// CMS Manager screens\nconst CMSManagerContentManagementScreen = lazy(\n () => import('./screens/cms-manager/CMSManagerContentManagementScreen'),\n);\n\n// Partner screens\nconst PartnerAppointmentDetailsScreen = lazy(\n () => import('./screens/partner/PartnerAppointmentDetailsScreen'),\n);\nconst PartnerAppointmentBookingScreen = lazy(\n () => import('./screens/partner/PartnerAppointmentBookingScreen'),\n);\nconst PartnerListAppointmentsScreen = lazy(\n () => import('./screens/partner/PartnerListAppointmentsScreen'),\n);\nconst PartnerAdminScreen = lazy(() => import('./screens/partner/PartnerAdminScreen'));\n\n// PES screens\n\nconst PESCareNavigationScreen = lazy(\n () => import('./screens/partner/care-navigation/CareNavigationScreen'),\n);\n\nconst PartnerAppointmentSearchScreen = lazy(\n () => import('./screens/partner/PartnerAppointmentSearchScreen'),\n);\n\n// Dev screens\nconst PlaygroundDirectoryScreen = lazy(\n () => import('./screens/playground/PlaygroundDirectoryScreen'),\n);\nconst ExampleWizardLayoutScreen = lazy(\n () => import('./screens/playground/ExampleWizardLayoutScreen'),\n);\nconst ExampleKHAppBarScreen = lazy(() => import('./screens/playground/ExampleKHAppBarScreen'));\nconst ExampleKHButtonScreen = lazy(() => import('./screens/playground/ExampleKHButtonScreen'));\nconst ExampleKHCheckboxScreen = lazy(() => import('./screens/playground/ExampleKHCheckboxScreen'));\nconst ExampleKHChipScreen = lazy(() => import('./screens/playground/ExampleKHChipScreen'));\nconst ExampleKHErrorViewScreen = lazy(\n () => import('./screens/playground/ExampleKHErrorViewScreen'),\n);\nconst ExampleKHGridScreen = lazy(() => import('./screens/playground/ExampleKHGridScreen'));\nconst ExampleKHMessageFieldScreen = lazy(\n () => import('./screens/playground/ExampleKHMessageFieldScreen'),\n);\nconst ExampleKHProgressBarScreen = lazy(\n () => import('./screens/playground/ExampleKHProgressBarScreen'),\n);\nconst ExampleKHSwitchScreen = lazy(() => import('./screens/playground/ExampleKHSwitchScreen'));\nconst ExampleKHTextInputScreen = lazy(\n () => import('./screens/playground/ExampleKHTextInputScreen'),\n);\nconst ExampleKHNumberInputScreen = lazy(\n () => import('./screens/playground/ExampleKHNumberInputScreen'),\n);\nconst ExampleKHLookupScreen = lazy(() => import('./screens/playground/ExampleKHLookupScreen'));\nconst ExampleKHMaskedTextInputScreen = lazy(\n () => import('./screens/playground/ExampleKHMaskedTextInputScreen'),\n);\nconst ExampleKHToastScreen = lazy(() => import('./screens/playground/ExampleKHToastScreen'));\n\nconst ExampleKHIconScreen = lazy(() => import('./screens/playground/ExampleKHIconScreen'));\n\nconst ExampleChecklistScreen = lazy(() => import('./screens/playground/ExampleChecklistScreen'));\n\nconst ExampleKHDropDownScreen = lazy(() => import('./screens/playground/ExampleKHDropDownScreen'));\n\nconst NotificationsScreen = lazy(() => import('./screens/playground/NotificationsScreen'));\n\nconst ExampleKHQRCodeScreen = lazy(() => import('./screens/playground/ExampleKHQRCodeScreen'));\n\nconst ExampleIconButtonScreen = lazy(() => import('./screens/playground/ExampleIconButtonScreen'));\n\nconst ExampleSearchInputScreen = lazy(\n () => import('./screens/playground/ExampleSearchInputScreen'),\n);\n\nconst ExampleButtonScreen = lazy(() => import('./screens/playground/ExampleButtonScreen'));\n\nconst ExampleCaptionScreen = lazy(() => import('./screens/playground/ExampleCaptionScreen'));\n\nconst ExampleTagScreen = lazy(() => import('./screens/playground/ExampleTagScreen'));\n\nconst ExampleToastScreen = lazy(() => import('./screens/playground/ExampleToastScreen'));\n\nconst ExampleNextButtonScreen = lazy(() => import('./screens/playground/ExampleNextButtonScreen'));\n\nconst PatientCampaignStateScreen = lazy(\n () => import('./screens/playground/PatientCampaignStateScreen'),\n);\n\nconst ExampleTimeRangeRulesInputFieldScreen = lazy(\n () => import('./screens/playground/ExampleTimeRangeRulesInputFieldScreen'),\n);\n\nconst ExampleKHErrorBoundaryScreen = lazy(\n () => import('./screens/playground/ExampleKHErrorBoundaryScreen'),\n);\n\nconst AddExampleStatsigEventScreen = lazy(\n () => import('./screens/playground/AddExampleStatsigEventScreen'),\n);\nconst PatientEncounterSummary = lazy(\n () => import('./screens/playground/PatientEncounterSummaryExample'),\n);\n\nconst PartnerConfigScreen = lazy(() => import('./screens/playground/PartnerConfigScreen'));\n\nconst ExampleRadioScreen = lazy(() => import('./screens/playground/ExampleRadioScreen'));\n\n// Referrals screens\nconst ReferralVerificationScreen = lazy(\n () => import('./screens/referral/ReferralVerificationScreen'),\n);\n\nconst ReferralAppointmentLocationScreen = lazy(\n () => import('./screens/referral/ReferralAppointmentLocationScreen'),\n);\n\nconst ReferralChooseTimeScreen = lazy(() => import('./screens/referral/ReferralChooseTimeScreen'));\n\nconst ReferralServicesInfoScreen = lazy(\n () => import('./screens/referral/ReferralServicesInfoScreen'),\n);\n\nconst ReferralConfirmChildRelatedFieldsScreen = lazy(\n () => import('./screens/referral/ReferralConfirmChildRelatedFieldsScreen'),\n);\n\nconst ReferralAppointmentBookingSummaryScreen = lazy(\n () => import('./screens/referral/ReferralAppointmentBookingSummaryScreen'),\n);\n\nconst ReferralAppointmentBookingFinishScreen = lazy(\n () => import('./screens/referral/ReferralAppointmentBookingFinishScreen'),\n);\n\nconst ReferralAppointmentCancelSuccessScreen = lazy(\n () => import('./screens/referral/ReferralAppointmentCancelSuccessScreen'),\n);\n\nconst ReferralAppointmentRescheduleScreen = lazy(\n () => import('./screens/referral/ReferralAppointmentRescheduleScreen'),\n);\n\nconst ReferralColorectalScreeningScreen = lazy(\n () => import('./screens/referral/ReferralColorectalScreeningScreen'),\n);\n\nconst ReferralTopicalFluoridePrescreeningScreen = lazy(\n () => import('./screens/referral/ReferralTopicalFluoridePrescreeningScreen'),\n);\n\nconst styles = {\n safeArea: {\n flex: 1,\n } as ViewStyle,\n};\n\nfunction getUserConfirmation(message: string, callback: (ok: boolean) => void) {\n AlertXAPI('Leave page?', message, [\n {\n text: 'Cancel',\n onPress: () => callback(false),\n style: 'cancel',\n },\n { text: 'Leave', onPress: () => callback(true) },\n ]);\n}\n\nfunction Routes(): JSX.Element {\n return (\n \n {/* Shared routes */}\n \n } />\n } />\n \n \n \n \n {/* Forgot password routes */}\n \n \n {/* Unsubscribe to email routes */}\n \n {/* Coordinator routes */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* Tech routes */}\n (\n /* To better debug issues with the tech app, adds stack trace */\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n {/* Remote tech routes */}\n (\n \n \n \n )}\n />\n {/* Scheduler routes */}\n \n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n (\n \n \n \n )}\n />\n \n (\n \n \n \n )}\n />\n \n \n \n \n \n \n \n \n {/* CMS Manager routes */}\n \n {/* Partner routes */}\n \n }\n />\n (\n \n )}\n />\n (\n \n )}\n />\n \n \n \n (\n \n )}\n />\n {/* Referral routes */}\n \n \n \n \n \n \n \n \n \n \n \n {/* Referral routes for case-managers */}\n \n \n \n \n \n \n \n \n \n \n \n {/* Tech confirmations page entrypoint into referrals flow */}\n \n {/* Dev routes */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {' '}\n \n \n \n \n \n \n \n );\n}\n\nexport default function AppRouter(): JSX.Element {\n return (\n \n \n }>\n \n \n {Platform.OS === 'ios' && }\n \n \n \n );\n}\n","import i18n, { PostProcessorModule, TOptions } from 'i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport {\n I18N_FALLBACK_LNG,\n I18N_FRONTEND_NAMESPACE_JSON_OBJECTS_BY_LANGUAGE,\n I18N_SUPPORTED_LNGS_FRONTEND,\n I18N_SUPPORTED_NAMESPACES_FRONTEND,\n} from 'khshared/i18nConstants';\nimport matchI18nStringInterpolation from 'khshared/utils/matchI18nStringInterpolation';\nimport { initReactI18next } from 'react-i18next';\nimport { Platform } from 'react-native';\n\n// custom middleware to throw exceptions for unresolved placeholders\nconst UNRESOLVED_PLACEHOLDER: PostProcessorModule = {\n type: 'postProcessor',\n name: 'unresolvedPlaceholder',\n\n process(value: string, key: string | string[], options: TOptions) {\n // Skip this post processor module if we are deliberately skipping interpolation in the translation (skipInterpolation is true)\n if (options && options?.skipInterpolation === true) {\n return value;\n }\n // Check for unresolved placeholders\n const unresolvedPlaceholders = matchI18nStringInterpolation(value);\n\n // If there are unresolved placeholders, throw an error\n if (unresolvedPlaceholders) {\n throw new Error(\n `Unresolved placeholders found in translation: ${unresolvedPlaceholders.join(', ')}`,\n );\n }\n\n return value;\n },\n};\n\nexport const i18nPromise = (window?.location == null || Platform.OS !== 'web'\n ? i18n.use(initReactI18next)\n : i18n.use(LanguageDetector).use(initReactI18next)\n)\n .use(UNRESOLVED_PLACEHOLDER)\n .init({\n postProcess: ['unresolvedPlaceholder'],\n initImmediate: true,\n load: 'languageOnly', // Without this option, i18next was selecting the en language when the navigator languages were ['es-CO', 'en-US', 'en']. This may be an issue with how my browser is configured but this seems more reliable.\n fallbackLng: I18N_FALLBACK_LNG,\n ns: I18N_SUPPORTED_NAMESPACES_FRONTEND,\n resources: I18N_FRONTEND_NAMESPACE_JSON_OBJECTS_BY_LANGUAGE,\n supportedLngs: I18N_SUPPORTED_LNGS_FRONTEND,\n returnEmptyString: false, // When a translation file contains an empty string due to missing translation, allows the fall back to be used\n saveMissing: false,\n interpolation: {\n escapeValue: false,\n },\n detection: {\n order: ['localStorage', 'navigator', 'querystring'],\n caches: ['localStorage'],\n },\n });\n\nexport default i18n;\n","/**\n * We've chosen to pull this out to run unit tests and to ensure that our\n * regex is correct.\n * @param value i18n string to interpolate\n * @returns Array of matches or null\n */\nexport default function matchI18nStringInterpolation(value: string): RegExpMatchArray | null {\n return value.match(/{{\\s*(.*?)\\s*}}/g);\n}\n","import 'intl-pluralrules';\n\nimport { ApolloClient, ApolloProvider, NormalizedCacheObject } from '@apollo/client';\nimport { captureException, setUser } from '@sentry/react';\nimport getErrorLoggingFields from 'khshared/getErrorLoggingFields';\nimport React, { useEffect, useState } from 'react';\nimport { Platform, View } from 'react-native';\nimport DeviceInfo from 'react-native-device-info';\nimport { DefaultTheme, Provider as PaperProvider } from 'react-native-paper';\nimport { StatsigProvider, StatsigUser } from 'statsig-react-native';\n\nimport AppRouter from './AppRouter';\nimport LoadingScreen from './screens/LoadingScreen';\nimport { initializeApolloClient } from './utils/apollo/ApolloClient';\nimport { initCurrentPosition } from './utils/getCurrentPositionOrNull';\nimport { i18nPromise } from './utils/i18n';\nimport isProduction from './utils/isProduction';\nimport KHAuth from './utils/KHAuth';\nimport setupFontAwesome from './utils/setupFontAwesome';\nimport useLogger from './utils/useLogger';\nimport EnvXAPI from './xapis/EnvXAPI';\n\nconst theme = {\n ...DefaultTheme,\n dark: false,\n};\n\nsetupFontAwesome();\n\nexport default function App(): React.ReactElement {\n const [apolloClient, setApolloClient] = useState | null>(\n null,\n );\n const [isInitialized, setIsInitialized] = useState(false);\n const [bottomScreenOffset, setBottomScreenOffset] = useState('');\n const logger = useLogger();\n\n function updateApolloClient() {\n setApolloClient(initializeApolloClient());\n }\n\n function updateSentryUser() {\n const userID = KHAuth.getViewerIDOrNull();\n const email = KHAuth.getEmailOrNull() ?? undefined;\n\n if (userID != null) {\n setUser({ id: userID, email, deviceName: DeviceInfo.getDeviceNameSync() });\n } else {\n setUser(null);\n }\n }\n\n useEffect(() => {\n // stale chunk retry\n window.addEventListener?.('error', (e) => {\n if (/Loading chunk [\\d]+ failed/.test(e.message)) {\n window.location.reload();\n }\n });\n\n function handleResize() {\n if (window.innerHeight)\n setBottomScreenOffset(`calc(100vh - ${window.innerHeight + window.scrollY}px)`);\n }\n\n window.addEventListener?.('resize', handleResize);\n window.addEventListener?.('scroll', handleResize);\n handleResize();\n\n (async () => {\n if (Platform.OS === 'android' || Platform.OS === 'ios') {\n initCurrentPosition();\n }\n\n await KHAuth.genInitialize(logger);\n updateApolloClient();\n updateSentryUser();\n\n try {\n await i18nPromise;\n } catch (error) {\n logger.error({ eventName: 'i18nInitializationError', ...getErrorLoggingFields(error) });\n captureException(error);\n }\n\n KHAuth.eventEmitter.on('signIn', updateApolloClient);\n KHAuth.eventEmitter.on('signOut', updateApolloClient);\n KHAuth.eventEmitter.on('signIn', updateSentryUser);\n KHAuth.eventEmitter.on('signOut', updateSentryUser);\n\n setIsInitialized(true);\n })();\n\n return () => {\n KHAuth.eventEmitter.off('signIn', updateApolloClient);\n KHAuth.eventEmitter.off('signOut', updateApolloClient);\n KHAuth.eventEmitter.off('signIn', updateSentryUser);\n KHAuth.eventEmitter.off('signOut', updateSentryUser);\n window.removeEventListener?.('resize', handleResize);\n window.removeEventListener?.('scroll', handleResize);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n if (apolloClient == null || !isInitialized) return ;\n\n const user: StatsigUser = {\n privateAttributes: {\n email: KHAuth.getEmailOrNull() ?? undefined,\n },\n };\n // client-*** is the filler key to pass to statsig in case our key does not work so that an error is not thrown\n const statsigApiKey =\n process.env.REACT_APP_STATSIG_CLIENT_KEY_PROD ??\n EnvXAPI.REACT_APP_STATSIG_CLIENT_KEY_PROD ??\n 'client-e';\n\n return (\n \n \n \n \n 0 && { height: bottomScreenOffset }} />\n \n \n \n );\n}\n","import * as Sentry from '@sentry/react';\nimport { Integrations } from '@sentry/tracing';\nimport {\n sentryErrorSampleRate,\n sentryFrontEndDSN,\n sentryTransactionSampleRate,\n} from 'khshared/constants';\nimport releaseNameOrEmptyObject from 'khshared/releaseNameOrEmptyObject';\nimport { AppRegistry } from 'react-native';\n\nimport App from './App';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport i18n from './utils/i18n';\nimport isProduction from './utils/isProduction';\nimport EnvXAPI from './xapis/EnvXAPI';\n\nconst sentryOptions: Record = {\n dsn: sentryFrontEndDSN,\n integrations: [new Integrations.BrowserTracing()],\n // Do not use process.env.NODE_ENV as it is always set to 'production' by the 'yarn run build' command ran in our Amplify pipeline.\n // Instead, please use the value of the environment variable 'REACT_APP_NODE_ENV'.\n // See: https://seanconnolly.dev/dont-be-fooled-by-node-env\n // And: https://stackoverflow.com/questions/42523175/using-node-env-with-multiple-environments-in-javascript-projects#:~:text=NODE_ENV%20is%20used%20to%20differentiate,'production'%20.\n environment: EnvXAPI.REACT_APP_NODE_ENV || 'development',\n // Transactions events sampling rate.\n tracesSampleRate: isProduction() ? sentryTransactionSampleRate : 0,\n // Sampling error events.\n sampleRate: isProduction() ? sentryErrorSampleRate : 0,\n ...releaseNameOrEmptyObject(),\n};\n\nSentry.init(sentryOptions);\n\n/* eslint-disable */\nconst MaterialCommunityIcons = require('react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf');\n\nconst iconFontStyles = `\n@font-face {\n src: url('${MaterialCommunityIcons}');\n font-family: MaterialCommunityIcons;\n}\n`;\n/* eslint-enable */\n\nconst style = document.createElement('style');\nstyle.type = 'text/css';\nstyle.appendChild(document.createTextNode(iconFontStyles));\n\n// Inject stylesheet\ndocument.head.appendChild(style);\n\nconst mapcss = document.createElement('link');\nmapcss.rel = 'stylesheet';\nmapcss.href = 'https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.css';\ndocument.head.appendChild(mapcss);\n\nAppRegistry.registerComponent('sprinterhealthapp', () => App);\nAppRegistry.runApplication('sprinterhealthapp', {\n rootTag: document.getElementById('root'),\n});\n","import KHColors from 'khshared/KHColors';\nimport React, { ReactNode, useContext, useRef } from 'react';\nimport {\n AccessibilityProps,\n ActivityIndicator,\n Animated,\n GestureResponderEvent,\n ImageSourcePropType,\n Platform,\n Pressable,\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport { LoggerProps } from '../utils/useLogger';\nimport useTooltipRef from '../utils/useTooltipRef';\nimport KHIcon from './KHIcon';\nimport KHThemeContext, { Theme } from './KHThemeContext';\n\nconst BORDER_RADIUS = 20;\n\nconst styles = {\n button: {\n alignItems: 'center',\n borderRadius: BORDER_RADIUS,\n borderStyle: 'solid',\n flexDirection: 'row',\n justifyContent: 'center',\n WebkitUserSelect: 'none',\n userSelect: 'none',\n } as ViewStyle,\n buttonPadding: {\n height: 40,\n minWidth: 40,\n } as ViewStyle,\n compact: {\n height: 'auto',\n minWidth: 'auto',\n } as ViewStyle,\n highlight: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: KHColors.buttonHighlight,\n } as ViewStyle,\n iconLeft: {\n marginLeft: 12,\n marginRight: -4,\n } as ViewStyle,\n label: {\n fontWeight: '500',\n marginHorizontal: 16,\n marginVertical: 9,\n textAlign: 'center',\n } as TextStyle,\n compactLabel: {\n marginHorizontal: 8,\n } as TextStyle,\n labelV2: {\n fontFamily: 'Red Hat Display',\n fontWeight: '500',\n } as TextStyle,\n};\n\ntype StylesRules = {\n borderColor?: string;\n borderWidth?: number;\n backgroundColor?: string;\n highlight?: string;\n color: string;\n};\n\nconst filledSeverityRules = {\n warning: {\n backgroundColor: KHColors.iconWarning,\n highlight: `${KHColors.iconWarning}33`,\n color: KHColors.textWarning,\n },\n critical: {\n backgroundColor: KHColors.criticalWarning,\n highlight: `${KHColors.criticalWarning}33`,\n color: KHColors.buttonLabel,\n },\n default: {\n backgroundColor: KHColors.buttonPrimary,\n highlight: `${KHColors.buttonPrimary}33`,\n color: KHColors.buttonLabel,\n },\n success: {\n backgroundColor: KHColors.success,\n highlight: `${KHColors.success}33`,\n color: KHColors.buttonLabel,\n },\n};\n\nconst filledSeverityRulesV2 = {\n ...filledSeverityRules,\n default: {\n ...filledSeverityRules.default,\n backgroundColor: KHColors.referralBookingButton,\n },\n};\n\nconst outlinedSeverityRules = {\n warning: {\n borderColor: KHColors.iconWarning,\n highlight: `${KHColors.iconWarning}33`,\n color: KHColors.textWarningWithoutBackground,\n },\n critical: {\n borderColor: KHColors.criticalWarning,\n highlight: `${KHColors.criticalWarning}33`,\n color: KHColors.criticalWarning,\n },\n default: {\n borderColor: KHColors.buttonPrimary,\n highlight: `${KHColors.buttonPrimary}33`,\n color: KHColors.buttonPrimary,\n },\n success: {\n borderColor: KHColors.success,\n highlight: `${KHColors.success}33`,\n color: KHColors.success,\n },\n};\nconst textOnlySeverityRules = {\n warning: {\n color: KHColors.textWarningWithoutBackground,\n },\n critical: {\n color: KHColors.criticalWarning,\n },\n default: {\n color: KHColors.buttonPrimary,\n },\n success: {\n color: KHColors.success,\n },\n};\n\nexport type Props = LoggerProps & {\n children?: ReactNode;\n compact?: boolean;\n disabled?: boolean;\n icon?: string | ImageSourcePropType;\n iconSource?: Parameters[0]['iconSource'];\n iconColor?: string;\n labelStyle?: StyleProp;\n iconStyle?: StyleProp;\n loading?: boolean;\n tooltip?: string;\n onPress?: (e: GestureResponderEvent) => void;\n style?: StyleProp;\n severity?: 'default' | 'warning' | 'critical' | 'success';\n primary?: boolean;\n textOnly?: boolean;\n testID?: string;\n} & AccessibilityProps & { accessibilityChecked?: boolean };\n\nfunction getButtonStyle(settings: {\n primary: boolean;\n textOnly: boolean | undefined;\n uninteractable: boolean;\n severity: 'default' | 'warning' | 'critical' | 'success';\n theme: Theme;\n}): StylesRules {\n let buttonStyles: StylesRules = {\n color: KHColors.buttonPrimary,\n };\n const { primary, textOnly, uninteractable, severity, theme } = settings;\n if (primary) {\n if (uninteractable) {\n buttonStyles = {\n ...buttonStyles,\n backgroundColor: KHColors.buttonDisabled,\n color: KHColors.buttonDisabledLabel,\n };\n } else {\n buttonStyles = {\n ...buttonStyles,\n ...filledSeverityRules[severity],\n ...(theme === 'v2' && filledSeverityRulesV2[severity]),\n };\n }\n } else if (!textOnly) {\n buttonStyles = { ...buttonStyles, borderWidth: StyleSheet.hairlineWidth };\n if (uninteractable) {\n buttonStyles = {\n ...buttonStyles,\n borderColor: KHColors.buttonDisabled,\n color: KHColors.buttonDisabledLabel,\n };\n } else {\n buttonStyles = { ...buttonStyles, ...outlinedSeverityRules[severity] };\n }\n } else if (uninteractable) {\n buttonStyles = { ...buttonStyles, color: KHColors.buttonDisabledLabel };\n } else {\n buttonStyles = { ...buttonStyles, ...textOnlySeverityRules[severity] };\n }\n\n return buttonStyles;\n}\n\nfunction constructTestIDForButton(\n props: Props,\n): string | undefined {\n if (props.testID) return props.testID;\n if (typeof props.children === 'string' && props.children.length > 0)\n return `${props.children}-button`.toLowerCase();\n if (\n Array.isArray(props.children) &&\n props.children.length > 0 &&\n typeof props.children[0] === 'string' &&\n props.children[0].length > 0\n ) {\n return `${props.children[0]}-button`.toLowerCase();\n }\n return undefined;\n}\n\nfunction KHButton(props: Props): JSX.Element {\n const {\n children,\n compact = false,\n disabled = false,\n icon,\n iconSource,\n iconColor,\n labelStyle,\n iconStyle,\n loading = false,\n logger,\n loggerEventName,\n logCampaignEvent,\n severity = 'default',\n primary = false,\n tooltip,\n onPress,\n style,\n textOnly,\n ...rest\n } = props;\n\n const theme = useContext(KHThemeContext);\n\n const textOnlyAndNonPrimary = primary ? false : textOnly;\n\n const highlightOpacity = useRef(new Animated.Value(0)).current;\n const uninteractable = disabled || loading;\n\n const tooltipRef = useTooltipRef(tooltip);\n\n const onPressIn = () => {\n highlightOpacity?.setValue(1);\n };\n\n const onPressOut = () => {\n if (uninteractable) {\n highlightOpacity?.setValue(0);\n return;\n }\n\n Animated.timing(highlightOpacity, {\n toValue: 0,\n duration: 200,\n useNativeDriver: Platform.OS !== 'web',\n }).start();\n };\n\n const { highlight, color, ...buttonStyle } = getButtonStyle({\n primary,\n textOnly: textOnlyAndNonPrimary,\n uninteractable,\n severity,\n theme,\n });\n\n return (\n {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n highlightOpacity?.setValue(Platform.OS === 'web' && (state as any).hovered ? 1 : 0); // The ? was added as highlightOpacity can be null in the test environment\n\n return [\n styles.button,\n !(children == null && textOnlyAndNonPrimary) && styles.buttonPadding,\n compact && styles.compact,\n buttonStyle,\n style,\n ] as ViewStyle[];\n }}\n onPress={(e) => {\n if (loggerEventName != null) {\n logger?.info({ eventName: loggerEventName });\n logCampaignEvent?.({ eventName: loggerEventName });\n }\n onPress?.(e);\n }}\n onPressIn={onPressIn}\n onPressOut={onPressOut}\n testID={constructTestIDForButton(props)}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n >\n {!textOnlyAndNonPrimary && (\n \n )}\n {icon && !loading && (\n \n )}\n {loading && (\n \n )}\n {children != null && (\n \n {children}\n \n )}\n \n );\n}\n\nexport default Object.assign(KHButton, { BORDER_RADIUS });\n","// Please keep sorted.\nexport default {\n GUTTER_WIDTH: 24,\n};\n","import { DateTime } from 'luxon';\nimport React, { MutableRefObject, forwardRef, useEffect, useState } from 'react';\nimport { TextInput } from 'react-native';\nimport { Masks, formatWithMask } from 'react-native-mask-input';\n\nimport KHTextInput from './KHTextInput';\n\n/* eslint-disable react/require-default-props */\ntype Props = Omit, 'value' | 'onChangeText'> & {\n onChangeDate?: (date: DateTime | null) => void;\n date?: DateTime | null;\n placeholder?: string;\n errorMessage?: string;\n};\n/* eslint-enable react/require-default-props */\nconst nextYear = parseInt(DateTime.now().plus({ year: 1 }).year.toString().slice(2), 10);\n\nconst KHDateTextInput = forwardRef(\n (\n {\n onChangeDate,\n date,\n placeholder = 'mm/dd/yyyy',\n errorMessage = 'Please enter a valid date in the form mm/dd/yyyy',\n ...khTextInputProps\n }: Props,\n ref: ((instance: TextInput | null) => void) | MutableRefObject | null,\n ): JSX.Element => {\n const [dateString, setDateString] = useState('');\n const [dateError, setDateError] = useState(null);\n\n useEffect(() => {\n if (date) setDateString(date.toFormat('MM/dd/yyyy'));\n // way to externally change the state since otherwise there's no way to clear this from outside this component\n else if (date === undefined) setDateString('');\n }, [date]);\n\n return (\n {\n let text = input;\n // if the first character isn't a 0 or 1, assume it should be a zero\n if (input.length === 1 && parseInt(input, 10) >= 2) {\n text = `0${input}`;\n }\n // if the first character of the day isn't the first digit, inject a 0 as well\n if (input.length === 4 && parseInt(input[3], 10) >= 4) {\n text = `${input.slice(0, 3)}0${input[3]}`;\n }\n // if a slash is cutting off a single digit, inject a 0\n if (input.length === 2 && input[1] === '/') {\n text = `0${input[0]}/`;\n }\n // same for day\n if (input.length === 5 && input[4] === '/') {\n text = `${input.slice(0, 3)}0${input[3]}/`;\n }\n\n const maskedDate = formatWithMask({ text, mask: Masks.DATE_MMDDYYYY }).masked;\n setDateString(maskedDate);\n const dateObject = DateTime.fromFormat(maskedDate, 'MM/dd/yyyy');\n if (dateObject.isValid) {\n onChangeDate?.(dateObject);\n setDateError(null);\n } else onChangeDate?.(null);\n }}\n onBlur={() => {\n // two digit year hack\n if (dateString.length === 8) {\n const year = parseInt(dateString.slice(6), 10);\n const alteredDateString = `${dateString.slice(0, 6)}${\n year > nextYear ? '19' : '20'\n }${dateString.slice(6, 8)}`;\n const dateObject = DateTime.fromFormat(alteredDateString, 'MM/dd/yyyy');\n if (dateObject.isValid) {\n setDateString(alteredDateString);\n onChangeDate?.(dateObject);\n setDateError(null);\n } else setDateError(errorMessage);\n return;\n }\n\n if (date == null && dateString.length !== 0) setDateError(errorMessage);\n else setDateError(null);\n }}\n error={dateError ?? khTextInputProps.error}\n caption={khTextInputProps.caption}\n value={dateString}\n />\n );\n },\n);\n\nexport default KHDateTextInput;\n","import { ErrorBoundary } from '@sentry/react';\n\nexport default ErrorBoundary;\n","import React, { ReactNode } from 'react';\nimport { Platform, Text, TextStyle } from 'react-native';\n\nimport ErrorBoundary from '../xapis/ErrorBoundaryXAPI';\nimport { KHButton, KHErrorText, KHMessageView } from '.';\n\nconst styles = {\n title: {\n marginVertical: 12,\n fontSize: 20,\n } as TextStyle,\n};\n\ninterface Props {\n children: ReactNode;\n tags: Record;\n includeStackTrace?: boolean;\n}\n\nexport default function KHErrorBoundary({\n children,\n tags,\n includeStackTrace = false,\n}: Props): JSX.Element {\n return (\n scope.setTags(tags)}\n fallback={({ error, componentStack, resetError }) => {\n const isChunkLoadingError = /loading chunk \\d+ failed/i.test(error.message);\n if (Platform.OS === 'web' && isChunkLoadingError) {\n window.location.reload();\n return <>;\n }\n return (\n \n {\n if (Platform.OS === 'web') window.location.reload();\n resetError();\n }}\n >\n Try again?\n \n\n Error\n\n \n\n {includeStackTrace && (\n <>\n Stack\n \n \n )}\n \n );\n }}\n >\n {children}\n \n );\n}\n","import { IconName, IconPrefix } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon } from '@fortawesome/react-native-fontawesome';\nimport KHColors from 'khshared/KHColors';\nimport React from 'react';\nimport {\n Image,\n ImageSourcePropType,\n ImageStyle,\n StyleProp,\n TextStyle,\n View,\n ViewStyle,\n} from 'react-native';\nimport MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons';\n\nimport { alertIfFontAwesomeIconNotImported } from '../utils/setupFontAwesome';\nimport useTooltipRef from '../utils/useTooltipRef';\n\nconst fontAwesomeIconPrefixes: { [key in NonNullable]: IconPrefix } = {\n 'font-awesome-solid': 'fas',\n 'font-awesome-light': 'fal',\n 'font-awesome-regular': 'far',\n};\n\nexport type IconSource = 'font-awesome-solid' | 'font-awesome-light' | 'font-awesome-regular';\n\ntype Props = {\n iconSource?: IconSource;\n color?: string;\n size: 8 | 12 | 16 | 20 | 24 | 32 | 48 | 64 | 96;\n tooltip?: string;\n source: string | ImageSourcePropType;\n style?: StyleProp | StyleProp | StyleProp;\n};\n\nexport default function KHIcon({\n color = KHColors.icon,\n size,\n source,\n tooltip,\n style,\n iconSource,\n}: Props): JSX.Element {\n const tooltipRefMaterialCommunityIcon = useTooltipRef(tooltip);\n const tooltipRefFontAwesomeIcon = useTooltipRef(tooltip);\n const tooltipRefImage = useTooltipRef(tooltip);\n\n if (iconSource?.startsWith('font-awesome-')) {\n const prefix = fontAwesomeIconPrefixes[iconSource];\n alertIfFontAwesomeIconNotImported(prefix, String(source));\n // FontAwesome doesn't support refs natively. Setting the ref to a View component wrapping it.\n\n return (\n // pointerEvents=none prevents the SVG created by fontawesome from being focused on click.\n \n \n \n );\n }\n\n if (typeof source === 'string') {\n return (\n \n );\n }\n\n return (\n ,\n ]}\n />\n );\n}\n","import { S3ObjectParentType } from 'khshared/API';\nimport React from 'react';\nimport { Image, ImageStyle, StyleProp } from 'react-native';\n\nimport useFetchFileURLsByS3ObjectIDs from '../utils/useFetchFileURLsByS3ObjectIDs';\nimport useLogger from '../utils/useLogger';\n\ntype Props = {\n s3ObjectData?: {\n s3ObjectID?: string | null;\n parentID?: string | null;\n parentType?: S3ObjectParentType | null;\n };\n uri?: string;\n width?: number;\n height?: number;\n style?: StyleProp;\n placeholder?: JSX.Element | null;\n caption?: JSX.Element | null;\n};\n\nfunction KHImage({\n uri,\n s3ObjectData,\n width,\n height,\n style,\n placeholder,\n caption,\n}: Props): JSX.Element | null {\n const logger = useLogger({ eventSource: 'KHImage' });\n\n const { result: imageURLFetched } = useFetchFileURLsByS3ObjectIDs({\n s3ObjectID: s3ObjectData?.s3ObjectID,\n parentID: s3ObjectData?.parentID,\n parentType: s3ObjectData?.parentType,\n logger,\n });\n\n const imageURL = uri ?? imageURLFetched;\n\n return imageURL != null ? (\n <>\n \n {caption ?? null}\n \n ) : (\n placeholder ?? null\n );\n}\n\nexport default KHImage;\n","import KHColors from 'khshared/KHColors';\nimport React, { MutableRefObject, ReactElement, useState } from 'react';\nimport {\n Pressable,\n ScrollView,\n StyleProp,\n Text,\n TextInput,\n TextStyle,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport KHIcon from './KHIcon';\nimport KHTextInput from './KHTextInput';\n\nconst styles = {\n emptyMessage: {\n fontSize: 14,\n } as TextStyle,\n item: {\n flexDirection: 'row',\n padding: 8,\n paddingVertical: 5,\n alignItems: 'center',\n backgroundColor: KHColors.backgroundContrast,\n } as ViewStyle,\n itemLabel: {\n fontSize: 14,\n marginLeft: 6,\n marginVertical: 6,\n } as TextStyle,\n inputText: {\n fontSize: 14,\n marginLeft: -2,\n },\n suggestionTextBold: {\n fontWeight: 'bold',\n } as TextStyle,\n suggestionsView: {\n flex: 1,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 3 },\n shadowOpacity: 0.29,\n shadowRadius: 4.65,\n elevation: 7,\n } as ViewStyle,\n hovered: {\n backgroundColor: KHColors.lookupHovered,\n },\n};\ninterface Props extends Omit, 'value'> {\n loading?: boolean;\n existingQuery?: string | null;\n disabled?: boolean;\n value: V | null;\n suggestions: readonly V[];\n suggestionsStyle?: StyleProp;\n style?: StyleProp;\n contrast?: boolean;\n isStickyFooter?: boolean;\n caption?: string;\n renderValue: (value: V) => string;\n renderSuggestion: (value: V, onChangeValue: (newValue: V | null) => void) => JSX.Element | null;\n renderSuggestionsEmpty: () => JSX.Element | null;\n renderSuggestionsHeader?: (onChangeValue: (newValue: V | null) => void) => JSX.Element | null;\n renderSuggestionsFooter?: (\n currentValue: string,\n onChangeValue: (newValue: V | null) => void,\n ) => JSX.Element | null;\n onChangeQuery: (newQuery: string) => void;\n onChangeValue: (newValue: V | null) => void;\n onClear?: () => void;\n inputReference?: MutableRefObject;\n testID?: string;\n}\n\nfunction KHLookup({\n loading = false,\n disabled = false,\n existingQuery = null,\n value,\n suggestions,\n suggestionsStyle,\n style,\n contrast = false,\n isStickyFooter = true,\n caption,\n renderValue,\n renderSuggestion,\n renderSuggestionsHeader,\n renderSuggestionsFooter,\n renderSuggestionsEmpty,\n onChangeQuery,\n onChangeValue,\n onClear,\n inputReference,\n testID,\n ...khTextInputProps\n}: Props): JSX.Element {\n const [query, setQuery] = useState(existingQuery || '');\n const [isFocused, setIsFocused] = useState(false);\n const [isDebouncing, setIsDebouncing] = useState(false);\n\n function onChangeValueInternal(newValue: V | null) {\n setQuery('');\n onChangeValue?.(newValue);\n }\n\n return (\n \n \n }\n onChangeText={(newQuery) => {\n if (value != null) return;\n\n setQuery(newQuery);\n onChangeQuery(newQuery);\n setIsDebouncing(false);\n }}\n onDebounceStart={() => setIsDebouncing(true)}\n onFocus={(...params) => {\n setIsFocused(true);\n khTextInputProps.onFocus?.(...params);\n }}\n onBlur={(...params) => {\n // TODO(dhruv) Set isFocused to false here\n // Currently, this prevents the renderSuggestionHeader/renderSuggestionFooter click from executing so need to investigate and fix.\n khTextInputProps.onBlur?.(...params);\n }}\n onClear={() => {\n onChangeValue?.(null);\n onClear?.();\n setIsDebouncing(false);\n }}\n contrast={contrast}\n inputReference={inputReference}\n caption={caption}\n testID={testID}\n />\n\n {(query.length > 0 || isFocused) && value == null && !disabled && (\n \n \n {renderSuggestionsHeader?.(onChangeValueInternal)}\n {suggestions.length > 0\n ? suggestions.map((option) => renderSuggestion(option, onChangeValueInternal))\n : query.length > 0 &&\n !loading &&\n !isDebouncing &&\n value == null &&\n renderSuggestionsEmpty?.()}\n {!isStickyFooter && renderSuggestionsFooter?.(query, onChangeValueInternal)}\n \n {isStickyFooter && renderSuggestionsFooter?.(query, onChangeValueInternal)}\n \n )}\n \n );\n}\n\nfunction Item({\n disabled = false,\n icon,\n color,\n label,\n labelStyle,\n onPress,\n style,\n testID,\n}: {\n disabled?: boolean;\n icon?: React.ComponentProps['source'];\n color?: string;\n label: React.ReactNode;\n labelStyle?: StyleProp;\n onPress?: () => void;\n style?: StyleProp;\n testID?: string;\n}): JSX.Element {\n const [isHovered, setIsHovered] = useState(false);\n\n return (\n setIsHovered(true)}\n onHoverOut={() => setIsHovered(false)}\n testID={testID}\n >\n {icon != null && }\n \n {label}\n \n \n );\n}\n\nfunction EmptyMessage({\n label,\n labelStyle,\n}: {\n label: string | ReactElement;\n labelStyle?: StyleProp;\n}) {\n return (\n \n );\n}\n\nfunction Suggestion({\n label,\n query,\n style,\n ...itemProps\n}: { query?: string; style?: StyleProp } & React.ComponentProps) {\n let textToBold = '';\n let formattedSuggestion = label;\n\n if (typeof formattedSuggestion === 'string' && query != null && query?.length > 0) {\n let indexOfLastMatchingAddressChar = -1;\n query.split('').every((c, i) => {\n // Treat two variants of the same base letter as the same unless they have different accents\n const doesCharMatch =\n c.localeCompare((formattedSuggestion as string)[i], undefined, {\n sensitivity: 'accent',\n }) === 0;\n if (doesCharMatch) indexOfLastMatchingAddressChar = i;\n return doesCharMatch;\n });\n\n textToBold = formattedSuggestion.slice(0, indexOfLastMatchingAddressChar + 1);\n formattedSuggestion = formattedSuggestion.slice(indexOfLastMatchingAddressChar + 1);\n }\n\n return (\n \n {textToBold}\n {formattedSuggestion}\n \n }\n />\n );\n}\n\nexport default Object.assign(KHLookup, { EmptyMessage, Suggestion });\n","/* eslint-disable react/jsx-props-no-spreading */\nimport KHColors from 'khshared/KHColors';\nimport React, { useContext } from 'react';\nimport { Text, TextStyle } from 'react-native';\n\nimport KHThemeContext from './KHThemeContext';\n\nconst styles = {\n // Styles\n body: { fontSize: 14, color: KHColors.text } as TextStyle,\n bodyV2: {\n fontSize: 14,\n color: KHColors.text,\n fontFamily: 'Red Hat Display',\n lineHeight: 20,\n letterSpacing: 0.16,\n } as TextStyle,\n caption: { fontSize: 12, color: KHColors.textSecondary } as TextStyle,\n captionContrast: { fontSize: 12, color: KHColors.textSecondaryLight } as TextStyle,\n captionError: { fontSize: 12, color: KHColors.textError } as TextStyle,\n h16: { fontSize: 16, color: KHColors.text } as TextStyle,\n secondary: { fontSize: 14, color: KHColors.textSecondary } as TextStyle,\n // Modifiers\n bold: { fontWeight: '500' } as TextStyle,\n boldV2: { fontWeight: '700' } as TextStyle,\n};\n\ntype TextProps = React.ComponentProps;\ntype TextPropsWithContrast = TextProps & { contrast?: boolean };\n\nfunction Body({ style, ...textProps }: TextProps): JSX.Element {\n const theme = useContext(KHThemeContext);\n return ;\n}\n\nfunction BodyBold({ style, ...textProps }: TextProps): JSX.Element {\n const theme = useContext(KHThemeContext);\n return (\n \n );\n}\n\nfunction Caption({ contrast, style, ...textProps }: TextPropsWithContrast): JSX.Element {\n return (\n \n );\n}\n\nfunction CaptionError({ style, ...textProps }: TextProps): JSX.Element {\n return ;\n}\n\nfunction H16({ style, ...textProps }: TextProps): JSX.Element {\n return ;\n}\n\nfunction Secondary({ style, ...textProps }: TextProps): JSX.Element {\n return ;\n}\n\nexport default { Body, BodyBold, Caption, CaptionError, H16, Secondary };\n","import React, { ReactNode } from 'react';\nimport { StyleProp, TextStyle, View, ViewStyle } from 'react-native';\n\nimport KHConstants from './KHConstants';\nimport KHText from './KHText';\n\nconst styles = {\n view: {\n marginHorizontal: KHConstants.GUTTER_WIDTH,\n marginVertical: 8,\n },\n viewInline: {\n flexDirection: 'row',\n } as ViewStyle,\n label: {\n marginBottom: 4,\n } as TextStyle,\n labelInline: {\n marginBottom: 0,\n marginRight: 4,\n } as TextStyle,\n};\n\ninterface Props {\n inline?: boolean;\n label?: ReactNode;\n style?: StyleProp;\n text?: ReactNode;\n}\n\nexport default function KHTextField({ inline = false, style, text, label }: Props): JSX.Element {\n const hasTitle = Boolean(label);\n return (\n \n {hasTitle && (\n \n {label}\n {inline && ':'}\n \n )}\n {hasTitle ? {text} : {text}}\n \n );\n}\n","import KHColors from 'khshared/KHColors';\nimport React, {\n MutableRefObject,\n ReactNode,\n forwardRef,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport {\n ActivityIndicator,\n Platform,\n StyleProp,\n Text,\n TextInput,\n TextStyle,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport formatError from '../utils/formatError';\nimport useUpdateEffect from '../utils/useUpdateEffect';\nimport KHButton, { Props as KHButtonProps } from './KHButton';\nimport KHIcon from './KHIcon';\nimport KHText from './KHText';\nimport KHThemeContext from './KHThemeContext';\n\nconst BORDER_RADIUS = 4;\n\n// NOTE: When changing styles, be sure to also update the text input styles in StripeHTML.ts in the\n// booking flow to look consistent.\nconst styles = {\n label: {\n marginBottom: 4,\n } as TextStyle,\n labelV2: {\n color: KHColors.textInputLabelV2,\n fontSize: 14,\n fontWeight: '500',\n fontFamily: 'Red Hat Display',\n lineHeight: 20,\n letterSpacing: 0.16,\n } as TextStyle,\n outline: {\n borderColor: KHColors.textInputOutline,\n borderRadius: BORDER_RADIUS,\n borderWidth: 1,\n flexDirection: 'row',\n alignItems: 'flex-start',\n } as ViewStyle,\n outlineV2: {\n backgroundColor: KHColors.textInputBackgroundV2,\n } as ViewStyle,\n outlineFocused: {\n borderColor: KHColors.textInputOutlineFocused,\n } as ViewStyle,\n outlineDisabled: {\n backgroundColor: KHColors.textInputBackgroundDisabled,\n } as ViewStyle,\n outlineError: {\n borderColor: KHColors.textInputOutlineError,\n } as ViewStyle,\n outlineContrast: {\n borderColor: KHColors.textInputTextContrast,\n } as ViewStyle,\n textInput: {\n alignSelf: 'stretch',\n borderRadius: BORDER_RADIUS,\n minHeight: 24,\n padding: 12,\n paddingTop: 12, // For some reason this needs to be explicit on iOS.\n flex: 1,\n minWidth: 0,\n ...(Platform.OS === 'web' ? { outline: 'none' } : {}),\n } as TextStyle,\n textInputV2: {\n fontSize: 16,\n color: KHColors.textInputTextV2,\n fontFamily: 'Red Hat Display',\n fontWeight: '500',\n lineHeight: 20,\n letterSpacing: 0.16,\n } as TextStyle,\n textInputDisabled: {\n color: KHColors.textInputTextDisabled,\n } as TextStyle,\n textInputWithLeftAdornment: {\n paddingLeft: 0,\n } as ViewStyle,\n textInputWithRightAdornment: {\n paddingRight: 0,\n } as ViewStyle,\n affix: {\n margin: 12,\n color: KHColors.textSecondary,\n } as TextStyle,\n affixV2: {\n fontSize: 16,\n fontFamily: 'Red Hat Display',\n letterSpacing: 0.16,\n } as TextStyle,\n spinner: {\n margin: 10,\n } as TextStyle,\n spinnerV2: {\n margin: 13,\n } as TextStyle,\n icon: {\n margin: 8,\n } as TextStyle,\n iconV2: {\n marginVertical: 11,\n } as TextStyle,\n iconButton: {\n marginVertical: 8,\n marginHorizontal: 8,\n } as TextStyle,\n iconButtonV2: {\n marginVertical: 11,\n } as TextStyle,\n caption: {\n marginTop: 4,\n } as TextStyle,\n captionV2: {\n color: KHColors.textInputCaptionV2,\n fontSize: 14,\n fontWeight: '400',\n fontFamily: 'Red Hat Display',\n lineHeight: 20,\n letterSpacing: 0.16,\n } as TextStyle,\n};\n\nfunction Spinner({ contrast = false }: { contrast?: boolean }) {\n const theme = useContext(KHThemeContext);\n return (\n \n );\n}\n\ntype FrameProps = {\n children: ReactNode;\n caption?: ReactNode;\n error?: Parameters[0];\n errorVerbosity?: Parameters[1];\n inputStyle?: StyleProp;\n inputLabelStyle?: StyleProp;\n style?: StyleProp;\n editable?: boolean;\n label?: ReactNode | string | null;\n left?: ReactNode;\n right?: ReactNode;\n focused?: boolean;\n loading?: boolean;\n contrast?: boolean;\n};\n\nfunction Frame({\n children,\n caption,\n error,\n errorVerbosity,\n inputStyle,\n inputLabelStyle,\n editable = true,\n label,\n left,\n right,\n focused = false,\n loading = false,\n style,\n contrast = false,\n}: FrameProps): JSX.Element {\n const theme = useContext(KHThemeContext);\n return (\n \n {Boolean(label) && (\n \n {label}\n \n )}\n \n {left != null && left}\n {children}\n {loading ? : right != null && right}\n \n {error != null && (\n \n {formatError(error, errorVerbosity)}\n \n )}\n {Boolean(caption) && (\n \n {caption}\n \n )}\n \n );\n}\n\ntype Props = React.ComponentProps &\n Omit & {\n // eslint-disable-next-line react/require-default-props\n inputLabelStyle?: StyleProp;\n // eslint-disable-next-line react/require-default-props\n inputTextStyle?: StyleProp;\n // eslint-disable-next-line react/require-default-props\n hasClearButton?: boolean;\n // eslint-disable-next-line react/require-default-props\n onClear?: () => void;\n // eslint-disable-next-line react/require-default-props\n contrast?: boolean;\n // eslint-disable-next-line react/require-default-props\n } & { disabled?: boolean };\n\nfunction Affix({ children }: { children: ReactNode }) {\n const theme = useContext(KHThemeContext);\n return {children};\n}\n\nfunction Icon({\n iconSource,\n source,\n color,\n}: {\n iconSource?: Parameters[0]['iconSource'];\n source: string;\n color?: string;\n}) {\n const theme = useContext(KHThemeContext);\n return (\n \n );\n}\n\nfunction IconButton({\n icon,\n style,\n ...iconButtonProps\n}: Omit, 'primary'>) {\n const theme = useContext(KHThemeContext);\n return (\n \n textOnly\n icon={icon}\n style={[styles.iconButton, theme === 'v2' && styles.iconButtonV2, style]}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...iconButtonProps}\n />\n );\n}\n\nfunction constructTestIDForTextInput(\n props: React.ComponentProps,\n label: string,\n): string | undefined {\n if (props.testID) return props.testID;\n if (label) return `${label.toLowerCase().replace(/[\\W_]+/g, '')}-text-input`;\n return undefined;\n}\n\nconst KHTextInput = forwardRef(\n (\n {\n caption,\n error,\n errorVerbosity,\n editable,\n inputStyle,\n inputLabelStyle,\n inputTextStyle,\n label,\n left,\n right,\n loading,\n placeholder,\n hasClearButton,\n onClear,\n onChangeText,\n style,\n contrast,\n ...textInputProps\n }: Props,\n ref: ((instance: TextInput | null) => void) | MutableRefObject | null,\n ): JSX.Element => {\n const theme = useContext(KHThemeContext);\n const [isFocused, setIsFocused] = useState(false);\n\n return (\n {\n onChangeText?.('');\n onClear?.();\n }}\n />\n ))\n }\n focused={isFocused}\n loading={loading}\n style={style}\n contrast={contrast}\n >\n {\n setIsFocused(true);\n if (textInputProps.onFocus) textInputProps.onFocus(e);\n }}\n onBlur={(e) => {\n setIsFocused(false);\n if (textInputProps.onBlur) textInputProps.onBlur(e);\n }}\n style={[\n styles.textInput,\n theme === 'v2' && styles.textInputV2,\n editable === false && styles.textInputDisabled,\n left != null && styles.textInputWithLeftAdornment,\n right != null && styles.textInputWithRightAdornment,\n inputTextStyle,\n ]}\n testID={constructTestIDForTextInput(\n textInputProps,\n typeof label === 'string' ? label : '',\n )}\n />\n \n );\n },\n);\n\nfunction Debounced({\n value,\n debounceDelayMS = 2000,\n onDebounceStart,\n onChangeText,\n hasClearButton,\n onClear,\n right,\n disabled,\n contrast = false,\n inputReference,\n ...restProps\n}: Props & {\n inputReference?: MutableRefObject;\n onDebounceStart?: () => void;\n debounceDelayMS?: 0 | 500 | 1000 | 2000;\n}): JSX.Element {\n const [debouncedValue, setDebouncedValue] = useState(value ?? '');\n const debouncingTimeoutIDRef = useRef(null);\n const debouncingTimeoutFunctionRef = useRef<(() => void) | null>(null);\n\n // Using refs allows us to safely exclude handlers from the useUpdateEffect's deps list below\n // rather than relying on the parent to reliably use useCallback to ensure they don't change.\n const onDebounceStartRef = useRef(onDebounceStart);\n const onChangeTextRef = useRef(onChangeText);\n\n function debounceValueChange(newValue: string) {\n setDebouncedValue(newValue);\n\n if (debouncingTimeoutIDRef.current == null) onDebounceStartRef.current?.();\n else clearTimeout(debouncingTimeoutIDRef.current);\n\n debouncingTimeoutFunctionRef.current = () => {\n debouncingTimeoutIDRef.current = null;\n onChangeTextRef.current?.(newValue);\n };\n debouncingTimeoutIDRef.current = window.setTimeout(\n debouncingTimeoutFunctionRef.current,\n debounceDelayMS,\n );\n }\n\n useEffect(() => {\n onDebounceStartRef.current = onDebounceStart;\n onChangeTextRef.current = onChangeText;\n });\n\n useUpdateEffect(() => {\n const newValue = value ?? '';\n if (newValue === debouncedValue) return;\n\n // Just in case things get out of sync\n if (debouncingTimeoutIDRef.current == null) setDebouncedValue(newValue);\n }, [value]);\n\n useEffect(\n () => () => {\n if (debouncingTimeoutIDRef.current == null) return;\n\n // Flush any pending debounced handlers.\n clearTimeout(debouncingTimeoutIDRef.current);\n debouncingTimeoutFunctionRef.current?.();\n },\n [],\n );\n\n return (\n 0 && (\n {\n clearTimeout(debouncingTimeoutIDRef.current ?? undefined);\n debouncingTimeoutIDRef.current = null;\n setDebouncedValue('');\n onChangeTextRef.current?.('');\n onClear?.();\n }}\n testID={`${restProps.testID ? `${restProps.testID}-` : ''}clear-circle-button`}\n />\n ))\n }\n contrast={contrast}\n ref={inputReference}\n editable={!disabled}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...restProps}\n />\n );\n}\n\nexport default Object.assign(KHTextInput, { Affix, Debounced, Icon, IconButton, Frame, Spinner });\n","import React from 'react';\n\nexport type Theme = 'legacy' | 'v2';\n\nexport default React.createContext('legacy');\n","import KHColors from 'khshared/KHColors';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport { Platform, StyleProp, Text, TextStyle, View, ViewStyle } from 'react-native';\nimport { useHistory } from 'react-router';\n\nimport filterFalseyChildren from '../utils/filterFalseyChildren';\nimport KHButton, { Props as KHButtonProps } from './KHButton';\nimport KHThemeContext from './KHThemeContext';\n\nconst styles = {\n action: {\n width: 40,\n } as ViewStyle,\n textAction: {\n width: Platform.OS === 'web' ? 'default' : undefined,\n } as ViewStyle,\n content: {\n flex: 1,\n paddingHorizontal: 12,\n },\n title: {\n fontSize: Platform.OS === 'ios' ? 17 : 20,\n fontWeight: Platform.OS === 'ios' ? '400' : '500',\n } as TextStyle,\n subtitle: {\n fontSize: Platform.OS === 'ios' ? 11 : 14,\n },\n appbar: {\n backgroundColor: KHColors.appBar,\n height: 56,\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 4,\n } as ViewStyle,\n appbarV2: {\n backgroundColor: 'transparent',\n } as ViewStyle,\n spacing: {\n width: 48,\n } as ViewStyle,\n};\n\nfunction Action({\n style,\n ...restProps\n}: Omit, 'primary'>): JSX.Element {\n // eslint-disable-next-line react/jsx-props-no-spreading\n return textOnly style={[styles.action, style]} {...restProps} />;\n}\n\nfunction TextAction({\n style,\n ...restProps\n}: Omit, 'primary'>): JSX.Element {\n // eslint-disable-next-line react/jsx-props-no-spreading\n return textOnly style={[styles.textAction, style]} {...restProps} />;\n}\n\nfunction BackAction(props: KHButtonProps): JSX.Element {\n const history = useHistory();\n return (\n \n icon={Platform.OS === 'ios' ? 'chevron-left' : 'arrow-left'}\n onPress={() => history.goBack()}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n}\n\nfunction Content({\n subtitle,\n contentStyle,\n title,\n titleStyle,\n ...restProps\n}: Omit, 'children'> & {\n title: React.ReactNode;\n subtitle?: React.ReactNode;\n contentStyle?: StyleProp;\n titleStyle?: StyleProp;\n}): JSX.Element {\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n \n {React.isValidElement(title) ? (\n title\n ) : (\n <>\n \n {title}\n \n {subtitle ? (\n \n {subtitle}\n \n ) : null}\n \n )}\n \n );\n}\n\ntype Props = Partial> & {\n children: React.ReactNode;\n style?: StyleProp;\n};\n\nexport default function KHAppBar({ children, style, ...restProps }: Props): JSX.Element {\n const theme = useContext(KHThemeContext);\n let shouldCenterContent = false;\n let shouldAddLeftSpacing = false;\n let shouldAddRightSpacing = false;\n if (Platform.OS === 'ios') {\n let hasAppBarContent = false;\n let leftItemsCount = 0;\n let rightItemsCount = 0;\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type === Content) {\n hasAppBarContent = true;\n } else if (hasAppBarContent) {\n rightItemsCount++;\n } else {\n leftItemsCount++;\n }\n }\n });\n\n shouldCenterContent = hasAppBarContent && leftItemsCount < 2 && rightItemsCount < 2;\n shouldAddLeftSpacing = shouldCenterContent && leftItemsCount === 0;\n shouldAddRightSpacing = shouldCenterContent && rightItemsCount === 0;\n }\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n \n {shouldAddLeftSpacing ? : null}\n {filterFalseyChildren(children).map((child, i) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore Type 'string' is not assignable to type\n if (!React.isValidElement(child) || ![Action, BackAction, Content].includes(child.type)) {\n return child;\n }\n\n const props: { style?: StyleProp } = {};\n if (child.type === Content) {\n props.style = [\n // Since content is not first item, add extra left margin\n i !== 0 && { marginLeft: 8 },\n shouldCenterContent && { alignItems: 'center' },\n ];\n }\n return React.cloneElement(child, props);\n })}\n {shouldAddRightSpacing ? : null}\n \n );\n}\n\nKHAppBar.Action = Action;\nKHAppBar.BackAction = BackAction;\nKHAppBar.Content = Content;\nKHAppBar.TextAction = TextAction;\n","import KHColors from 'khshared/KHColors';\nimport React, { ReactNode } from 'react';\nimport {\n ImageSourcePropType,\n Pressable,\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n View,\n ViewStyle,\n} from 'react-native';\nimport { Route, useHistory } from 'react-router';\n\nimport KHIcon from './KHIcon';\n\nconst styles = {\n view: {\n flexDirection: 'row',\n padding: 16,\n backgroundColor: KHColors.bottomNavigationBackground,\n borderTopColor: KHColors.separator,\n borderTopWidth: StyleSheet.hairlineWidth,\n } as ViewStyle,\n button: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n } as ViewStyle,\n buttonLabel: {\n fontSize: 12,\n fontWeight: '500',\n marginTop: 2,\n } as TextStyle,\n};\n\ninterface Props {\n children: ReactNode;\n style?: StyleProp;\n}\n\nexport default function KHBottomNavigation({ children, style }: Props): JSX.Element {\n return {children};\n}\n\ninterface ButtonProps {\n icon: string | ImageSourcePropType;\n label: string;\n to: string;\n}\n\nKHBottomNavigation.Button = function KHBottomNavigationButton({\n icon,\n label,\n to,\n}: ButtonProps): JSX.Element {\n const history = useHistory();\n return (\n \n {({ match }) => (\n history.push(to)} style={styles.button}>\n \n \n {label}\n \n \n )}\n \n );\n};\n","import KHColors from 'khshared/KHColors';\nimport React, { ReactNode } from 'react';\nimport { StyleProp, StyleSheet, Text, TextStyle, View, ViewStyle } from 'react-native';\n\nimport KHButton, { Props as KHButtonProps } from './KHButton';\n\nconst styles = {\n selector: {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n marginTop: 8,\n marginBottom: 16,\n } as ViewStyle,\n selectorArrow: {\n width: 32,\n } as ViewStyle,\n selectorTitle: {\n width: 240,\n fontSize: 18,\n marginHorizontal: 16,\n textAlign: 'center',\n color: KHColors.text,\n } as TextStyle,\n content: {\n flex: 1,\n } as ViewStyle,\n tableBody: {\n flexDirection: 'row',\n flex: 1,\n justifyContent: 'center',\n } as ViewStyle,\n element: {\n margin: -1,\n borderWidth: StyleSheet.hairlineWidth,\n borderRadius: 0,\n borderColor: KHColors.separator,\n width: 140,\n height: 50,\n backgroundColor: 'white',\n } as TextStyle,\n elementLabel: {\n fontSize: 12,\n } as TextStyle,\n title: {\n width: 140,\n textAlign: 'center',\n fontSize: 14,\n paddingBottom: 16,\n color: KHColors.textSecondary,\n } as TextStyle,\n subtitle: {\n paddingBottom: 16,\n width: 140,\n textAlign: 'center',\n fontSize: 18,\n color: KHColors.textDark,\n borderRightWidth: 1,\n borderLeftWidth: 1,\n borderColor: KHColors.separator,\n margin: -1,\n } as TextStyle,\n labelColumn: {\n marginTop: 28,\n } as ViewStyle,\n labelColumnLabel: {\n textAlign: 'right',\n paddingRight: 8,\n color: KHColors.textSecondary,\n height: 48,\n minHeight: 48,\n } as TextStyle,\n};\n\nfunction KHButtonTable({\n pageTitle,\n onPageLeft,\n onPageRight,\n children,\n style,\n}: {\n pageTitle?: string;\n onPageLeft: () => void;\n onPageRight: () => void;\n children: ReactNode;\n style?: StyleProp;\n}) {\n return (\n \n \n {pageTitle}\n \n \n \n \n \n \n \n {children}\n \n );\n}\n\nconst LabelColumn = ({\n children,\n style,\n}: {\n children: ReactNode;\n style?: StyleProp;\n}) => {children};\n\nconst Label = ({ children, style }: { children: ReactNode; style?: StyleProp }) => (\n {children}\n);\n\nconst Column = ({\n title,\n subtitle,\n children,\n style,\n}: {\n title?: string | ReactNode;\n subtitle?: string;\n children: ReactNode;\n style?: StyleProp;\n}) => (\n \n {title}\n {subtitle}\n {children}\n \n);\n\nfunction Element(props: KHButtonProps) {\n const { style, labelStyle } = props;\n return (\n \n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n style={[styles.element, style]}\n labelStyle={[styles.elementLabel, labelStyle]}\n />\n );\n}\n\nexport default Object.assign(KHButtonTable, {\n LabelColumn,\n Label,\n Column,\n Element,\n StyleProps: styles,\n});\n","import KHColors from 'khshared/KHColors';\nimport React, { ReactNode } from 'react';\nimport { Pressable, StyleProp, View, ViewStyle } from 'react-native';\n\nconst styles = {\n card: {\n backgroundColor: KHColors.card,\n borderRadius: 8,\n } as ViewStyle,\n cardFullWidth: {\n borderRadius: 0,\n } as ViewStyle,\n content: {\n margin: 16,\n } as ViewStyle,\n};\n\ninterface Props {\n children?: ReactNode;\n fullWidth?: boolean;\n onPress?: () => void;\n style?: StyleProp;\n}\n\nexport default function KHCard({\n children,\n fullWidth = false,\n onPress,\n style,\n}: Props): JSX.Element {\n const Component = onPress != null ? Pressable : View;\n return (\n \n {children}\n \n );\n}\n\ninterface ContentProps {\n children?: ReactNode;\n style?: StyleProp;\n}\n\nKHCard.Content = function Content({ children, style }: ContentProps): JSX.Element {\n return {children};\n};\n","import KHColors from 'khshared/KHColors';\nimport React, { ReactNode, useContext } from 'react';\nimport { Pressable, StyleProp, Text, TextStyle, View, ViewStyle } from 'react-native';\n\nimport KHButton from './KHButton';\nimport KHThemeContext from './KHThemeContext';\n\nconst styles = {\n view: {\n alignItems: 'center',\n flexDirection: 'row',\n minHeight: 24,\n minWidth: 24,\n } as ViewStyle,\n buttonContainer: {\n alignSelf: 'stretch',\n } as ViewStyle,\n label: {\n marginTop: 2,\n marginBottom: 5,\n marginLeft: 12,\n color: KHColors.checkboxLabel,\n } as TextStyle,\n labelV2: {\n color: KHColors.textInputLabelV2,\n fontSize: 14,\n fontWeight: '500',\n fontFamily: 'Red Hat Display',\n lineHeight: 20,\n letterSpacing: 0.16,\n } as TextStyle,\n labelDisabled: {\n color: KHColors.checkboxLabelDisabled,\n } as TextStyle,\n};\n\ninterface CommonProps {\n disabled?: boolean;\n iconColor?: string;\n label?: ReactNode;\n labelStyle?: StyleProp;\n isLabelPressable?: boolean;\n onPress?: () => void;\n style?: StyleProp;\n buttonStyle?: StyleProp;\n testID?: string;\n}\n\ninterface CheckboxProps extends CommonProps {\n mode?: 'checkbox';\n status: 'checked' | 'unchecked' | 'indeterminate';\n}\n\ninterface RadioProps extends CommonProps {\n mode: 'radio';\n status: 'checked' | 'unchecked';\n}\nfunction constructTestIDForCheckbox(\n testID: string | undefined,\n label: ReactNode,\n): string | undefined {\n if (testID) return testID;\n if (label && typeof label === 'string')\n return `${label.replace(/[\\W_]+/g, '')}-checkbox`.toLowerCase();\n return undefined;\n}\n\nexport default function KHCheckbox({\n disabled = false,\n iconColor,\n label,\n labelStyle,\n isLabelPressable = false,\n mode = 'checkbox',\n onPress,\n status,\n style,\n buttonStyle,\n testID,\n}: CheckboxProps | RadioProps): JSX.Element {\n const theme = useContext(KHThemeContext);\n let icon;\n if (mode === 'checkbox') {\n if (status === 'indeterminate') {\n icon = 'checkbox-intermediate';\n } else {\n icon = status === 'unchecked' ? 'checkbox-blank-outline' : 'checkbox-marked';\n }\n } else {\n icon = status === 'checked' ? 'radiobox-marked' : 'radiobox-blank';\n }\n\n return (\n \n \n \n \n \n {Boolean(label) && (\n \n {label}\n \n )}\n \n \n );\n}\n","import KHColors from 'khshared/KHColors';\nimport React, { ReactNode, useContext } from 'react';\nimport { TextStyle, ViewStyle } from 'react-native';\n\nimport { LoggerProps } from '../utils/useLogger';\nimport KHButton, { Props as KHButtonProps } from './KHButton';\nimport KHThemeContext from './KHThemeContext';\n\nconst styles = {\n button: {\n borderColor: KHColors.chipBorder,\n } as ViewStyle,\n buttonCompact: {\n height: 32,\n } as ViewStyle,\n label: {\n fontSize: 13,\n fontWeight: 'normal',\n marginHorizontal: 10,\n color: KHColors.text,\n } as TextStyle,\n labelDisabled: {\n color: KHColors.chipLabelDisabled,\n } as TextStyle,\n labelCompact: {\n marginVertical: 7,\n } as TextStyle,\n labelContrast: {\n color: KHColors.textContrast,\n } as TextStyle,\n labelSelected: {\n color: KHColors.chipLabelSelected,\n } as TextStyle,\n labelSelectedDisabled: {\n color: KHColors.chipLabelSelectedDisabled,\n } as TextStyle,\n buttonDisabled: {\n borderColor: KHColors.chipBorderDisabled,\n } as ViewStyle,\n buttonSelected: {\n backgroundColor: KHColors.chipBackgroundSelected,\n borderColor: KHColors.chipBorderSelected,\n } as ViewStyle,\n buttonSelectedDisabled: {\n borderWidth: 1,\n borderColor: KHColors.chipBorderSelectedDisabled,\n backgroundColor: KHColors.chipBackgroundSelectedDisabled,\n } as ViewStyle,\n labelSelectedV2: {\n fontFamily: 'Red Hat Display',\n fontSize: 18,\n fontWeight: '700',\n } as TextStyle,\n labelV2: {\n fontFamily: 'Red Hat Display',\n fontSize: 18,\n fontWeight: '500',\n } as TextStyle,\n};\n\ninterface Props\n extends Pick<\n KHButtonProps,\n | 'compact'\n | 'disabled'\n | 'icon'\n | 'labelStyle'\n | 'onPress'\n | 'style'\n | 'testID'\n | keyof LoggerProps\n > {\n label?: ReactNode;\n selected?: boolean;\n contrast?: boolean;\n}\n\nexport default function KHChip({\n compact = true,\n disabled = false,\n icon,\n label,\n labelStyle,\n onPress,\n selected = false,\n contrast = false,\n style,\n ...buttonProps\n}: Props): JSX.Element {\n const theme = useContext(KHThemeContext);\n return (\n \n compact={compact}\n icon={icon}\n iconColor={selected ? KHColors.chipIconSelected : undefined}\n labelStyle={[\n styles.label,\n theme === 'v2' && styles.labelV2,\n compact && styles.labelCompact,\n contrast && styles.labelContrast,\n disabled && styles.labelDisabled,\n selected && (disabled ? styles.labelSelectedDisabled : styles.labelSelected),\n selected && theme === 'v2' && styles.labelSelectedV2,\n labelStyle,\n ]}\n onPress={onPress}\n style={[\n style,\n styles.button,\n compact && styles.buttonCompact,\n disabled && styles.labelDisabled,\n selected && (disabled ? styles.buttonSelectedDisabled : styles.buttonSelected),\n ]}\n disabled={disabled}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...buttonProps}\n >\n {label}\n \n );\n}\n","import React from 'react';\nimport { StyleProp, TextStyle } from 'react-native';\n\nimport formatError from '../utils/formatError';\nimport KHText from './KHText';\n\ninterface Props {\n error: Parameters[0];\n style?: StyleProp;\n verbose?: boolean;\n}\n\nexport default function KHErrorText({\n error,\n style,\n verbose = __DEV__ && process.env.AWS_BRANCH !== 'demonet',\n}: Props): JSX.Element | null {\n return error == null ? null : (\n \n {formatError(error, verbose ? 'verbose' : 'simple')}\n \n );\n}\n","import KHColors from 'khshared/KHColors';\nimport React, { ComponentProps, ReactNode } from 'react';\nimport { StyleProp, Text, TextStyle, View, ViewStyle } from 'react-native';\n\nimport KHIcon from './KHIcon';\n\nconst styles = {\n view: {\n justifyContent: 'center',\n alignItems: 'center',\n padding: 16,\n } as ViewStyle,\n icon: {\n marginBottom: 48,\n } as ViewStyle,\n iconCompact: {\n marginBottom: 16,\n } as ViewStyle,\n title: {\n textAlign: 'center',\n fontSize: 24,\n marginBottom: 32,\n color: KHColors.text,\n } as TextStyle,\n message: {\n textAlign: 'center',\n marginBottom: 32,\n maxWidth: 300,\n color: KHColors.text,\n } as TextStyle,\n textCompact: {\n marginBottom: 16,\n } as ViewStyle,\n};\n\ninterface Props {\n children?: ReactNode;\n icon?: ComponentProps['source'];\n compact?: boolean;\n message?: ReactNode;\n style?: StyleProp;\n title?: ReactNode;\n testID?: string;\n}\n\nexport default function KHMessageView({\n children,\n icon,\n compact = false,\n message,\n style,\n title,\n testID,\n}: Props): JSX.Element | null {\n return (\n \n {icon != null && (\n \n )}\n {Boolean(title) && {title}}\n {Boolean(message) && (\n {message}\n )}\n {children}\n \n );\n}\n","import React, { ComponentProps, ReactNode } from 'react';\nimport { StyleProp, TextStyle } from 'react-native';\n\nimport formatError from '../utils/formatError';\nimport KHErrorText from './KHErrorText';\nimport KHIcon from './KHIcon';\nimport KHMessageView from './KHMessageView';\n\nconst styles = {\n error: {\n fontSize: 14,\n marginBottom: 24,\n width: '100%',\n } as TextStyle,\n};\n\ninterface Props {\n children?: ReactNode;\n error: Parameters[0];\n icon?: ComponentProps['source'];\n message: ReactNode;\n style?: StyleProp;\n verbose?: boolean;\n}\n\nexport default function KHErrorView({\n children,\n error,\n icon,\n message,\n style,\n verbose = __DEV__ && process.env.BRANCH_NAME !== 'demonet',\n}: Props): JSX.Element | null {\n return error == null ? null : (\n \n {verbose && }\n {children}\n \n );\n}\n","import React, { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { TextStyle, View, ViewStyle } from 'react-native';\n\nimport KHConstants from './KHConstants';\n\nconst styles = {\n container: {\n rowGap: 24,\n } as ViewStyle,\n gutter: {\n marginHorizontal: KHConstants.GUTTER_WIDTH,\n } as ViewStyle,\n row: {\n flexDirection: 'row',\n columnGap: 24,\n } as ViewStyle,\n cell: {\n flex: 1,\n flexDirection: 'column',\n alignItems: 'stretch',\n } as ViewStyle,\n};\n\ntype Props = ComponentPropsWithoutRef & {\n children?: ReactNode;\n center?: boolean;\n};\n\ntype ContainerProps = Props & {\n columnCount?: number;\n gutter?: boolean;\n};\n\ntype CellProps = Props & {\n columnCount?: number;\n};\n\nfunction Container({\n center,\n columnCount,\n gutter = true,\n ...restProps\n}: ContainerProps): JSX.Element {\n const style = {\n ...styles.container,\n ...(columnCount && { flex: columnCount }),\n ...(gutter && styles.gutter),\n ...(center && { textAlign: 'center' }),\n } as TextStyle;\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n \n );\n}\n\nfunction Row({ center, style, ...restProps }: Props): JSX.Element {\n const computedStyle = {\n ...styles.row,\n ...(center && { textAlign: 'center' }),\n } as TextStyle;\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n \n );\n}\n\nfunction Cell({ center, style, columnCount = 1, ...restProps }: CellProps): JSX.Element {\n const computedStyle = {\n ...styles.cell,\n ...(style as ViewStyle),\n ...{ flex: columnCount },\n ...(center && { textAlign: 'center', justifyContent: 'center' }),\n } as TextStyle;\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n \n );\n}\n\nexport default { Container, Row, Cell };\n","import formatPartnerOrganizationGroup from 'khshared/formatPartnerOrganizationGroup';\nimport formatPartnerOrganization from 'khshared/formatters/formatPartnerOrganization';\nimport KHColors from 'khshared/KHColors';\nimport getPartnerConfig from 'khshared/metadata/getPartnerConfig';\nimport React from 'react';\nimport { Text, TextStyle, View, ViewStyle } from 'react-native';\nimport { useHistory, useLocation } from 'react-router';\n\nimport KHAuth from '../utils/KHAuth';\nimport KHButton from './KHButton';\nimport KHConstants from './KHConstants';\nimport KHIcon from './KHIcon';\n\nconst styles = {\n view: {\n marginTop: KHConstants.GUTTER_WIDTH,\n marginHorizontal: 32,\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n } as ViewStyle,\n title: {\n fontSize: 32,\n color: KHColors.textDark,\n fontWeight: '500',\n } as TextStyle,\n titleWithBack: {\n fontSize: 18,\n marginLeft: 8,\n } as TextStyle,\n titleRow: {\n flexDirection: 'row',\n } as ViewStyle,\n profileRow: {\n flexDirection: 'row',\n alignItems: 'center',\n } as ViewStyle,\n profileName: {\n fontWeight: '500',\n marginRight: 12,\n } as ViewStyle,\n subtitle: {\n fontSize: 12,\n fontWeight: '400',\n color: KHColors.textSecondary,\n } as TextStyle,\n subtitleWithBack: {\n marginLeft: 56,\n } as TextStyle,\n};\n\ninterface Props {\n backDisabled?: boolean;\n title?: string;\n subtitle?: string;\n}\n\nexport default function KHHeader({\n backDisabled = false,\n\n title,\n subtitle,\n}: Props): JSX.Element {\n const history = useHistory();\n const browserLocation = useLocation<{ from: { [key: string]: string } }>();\n const partnerOrganizations = KHAuth.getPartnerOrganizations();\n const partnerOrganizationName =\n partnerOrganizations.length > 0\n ? partnerOrganizations.length > 1\n ? formatPartnerOrganizationGroup(\n getPartnerConfig(partnerOrganizations[0]).partnerOrganizationGroup,\n 'displayName',\n )\n : formatPartnerOrganization(partnerOrganizations[0], 'displayName')\n : '';\n const profileName = KHAuth.getEmailOrNull() ?? partnerOrganizationName;\n\n return (\n \n {!backDisabled ? (\n \n \n \n // If a router state was passed, we preserve it (goBack does not preserve the state unfortunately)\n browserLocation.state != null && browserLocation.state.from?.pathname != null\n ? history.push(browserLocation.state.from.pathname, browserLocation.state)\n : history.goBack()\n }\n />\n {title != null && {title}}\n \n {subtitle != null && (\n {subtitle}\n )}\n \n ) : (\n \n {title != null && {title}}\n {subtitle != null && {subtitle}}\n \n )}\n\n \n {profileName}\n \n \n \n );\n}\n","import KHColors from 'khshared/KHColors';\nimport React, { ReactNode, useContext } from 'react';\nimport { StyleProp, Text, View, ViewStyle } from 'react-native';\n\nimport KHIcon from './KHIcon';\nimport KHThemeContext from './KHThemeContext';\n\nconst styles = {\n view: {\n flexDirection: 'row',\n } as ViewStyle,\n viewV2: {\n flexDirection: 'row',\n flex: 1,\n alignItems: 'center',\n } as ViewStyle,\n icon: {\n justifyContent: 'flex-start',\n marginRight: 16,\n marginTop: -3,\n marginBottom: -3,\n } as ViewStyle,\n iconV2: {\n marginRight: 8,\n } as ViewStyle,\n textV2: {\n fontFamily: 'Red Hat Display',\n fontSize: 16,\n fontWeight: '500',\n } as ViewStyle,\n};\n\ninterface Props {\n icon: string;\n children: ReactNode;\n iconColor?: string;\n style?: StyleProp;\n}\n\nexport default function KHIconText({ icon, style, children, iconColor }: Props): JSX.Element {\n const theme = useContext(KHThemeContext);\n return (\n \n \n {children}\n \n );\n}\n","import KHColors from 'khshared/KHColors';\nimport React, { ReactNode, useContext } from 'react';\nimport { Linking, StyleProp, Text, TextStyle } from 'react-native';\n\nimport { LoggerProps } from '../utils/useLogger';\nimport KHThemeContext from './KHThemeContext';\n\nconst styles = {\n link: {\n color: KHColors.textAccent,\n textDecorationLine: 'underline',\n } as TextStyle,\n linkV2: {\n fontFamily: 'Red Hat Display',\n fontWeight: '500',\n letterSpacing: 0.16,\n textDecorationLine: 'none',\n color: KHColors.referralBookingContactText,\n } as TextStyle,\n linkSecondary: {\n color: KHColors.textSecondary,\n textDecorationLine: 'underline',\n } as TextStyle,\n};\n\ntype Props = LoggerProps & {\n children?: ReactNode;\n style?: StyleProp;\n href?: string;\n onPress?: () => void;\n secondary?: boolean;\n // eslint-disable-next-line react/no-unused-prop-types\n testID?: string;\n};\n\nfunction constructTestIDForLink(\n props: Props,\n): string | undefined {\n if (props.testID) return props.testID;\n if (typeof props.children === 'string') return `${props.children}-link`.toLowerCase();\n return undefined;\n}\n\nexport default function KHLink(\n props: Props,\n): JSX.Element | null {\n const {\n children,\n style,\n href,\n onPress,\n secondary,\n logger,\n loggerEventName,\n logCampaignEvent,\n } = props;\n const theme = useContext(KHThemeContext);\n return (\n {\n if (loggerEventName != null) {\n logger?.info({ eventName: loggerEventName });\n logCampaignEvent?.({ eventName: loggerEventName });\n }\n if (onPress) onPress();\n if (href) await Linking.openURL(href);\n }}\n style={[\n styles.link,\n theme === 'v2' && styles.linkV2,\n secondary && styles.linkSecondary,\n style,\n ]}\n testID={constructTestIDForLink(props)}\n >\n {children}\n \n );\n}\n","import KHColors from 'khshared/KHColors';\nimport React, { ReactNode, useContext } from 'react';\nimport { StyleProp, Text, TextStyle, View, ViewStyle } from 'react-native';\n\nimport KHButton from './KHButton';\nimport KHConstants from './KHConstants';\nimport KHIcon from './KHIcon';\nimport KHText from './KHText';\nimport KHThemeContext from './KHThemeContext';\n\nconst styles = {\n view: {\n paddingHorizontal: KHConstants.GUTTER_WIDTH,\n paddingVertical: 12,\n marginVertical: 8,\n } as ViewStyle,\n viewV2: {\n paddingHorizontal: 16,\n paddingVertical: 16,\n marginVertical: 0,\n borderRadius: 4,\n } as ViewStyle,\n textAndButtonArea: {\n flexDirection: 'row',\n } as ViewStyle,\n button: {\n alignSelf: 'flex-start',\n } as ViewStyle,\n textArea: {\n flex: 1,\n } as ViewStyle,\n title: {\n marginBottom: 4,\n } as TextStyle,\n icon: {\n marginRight: 8,\n marginTop: -3,\n marginBottom: -3,\n } as ViewStyle,\n iconCentered: {\n alignSelf: 'center',\n } as ViewStyle,\n underline: {\n textDecorationLine: 'underline',\n } as TextStyle,\n children: {\n marginTop: 12,\n },\n messageV2: {\n fontFamily: 'Red Hat Display',\n fontSize: 14,\n fontWeight: '500',\n color: KHColors.referralText,\n } as TextStyle,\n titleV2: {\n fontFamily: 'Red Hat Display',\n fontSize: 14,\n fontWeight: '700',\n color: KHColors.referralText,\n } as TextStyle,\n iconTitle: {\n marginRight: 8,\n } as ViewStyle,\n};\n\nconst stateStyles = {\n information: {\n background: {\n backgroundColor: KHColors.backgroundInformation,\n } as ViewStyle,\n icon: {\n color: KHColors.iconInformation,\n },\n text: {\n color: KHColors.textInformation,\n } as TextStyle,\n },\n warning: {\n background: {\n backgroundColor: KHColors.backgroundWarning,\n } as ViewStyle,\n icon: {\n color: KHColors.iconWarning,\n },\n text: {\n color: KHColors.textWarning,\n } as TextStyle,\n },\n critical: {\n background: {\n backgroundColor: KHColors.criticalBackground,\n } as ViewStyle,\n icon: {\n color: KHColors.criticalWarning,\n },\n text: {\n color: KHColors.text,\n } as TextStyle,\n },\n};\n\n// TODO(referrals): add the rest\nconst stateStylesV2 = {\n information: {\n background: {\n backgroundColor: KHColors.backgroundFinished,\n } as ViewStyle,\n },\n critical: { background: {} },\n warning: { background: {} },\n};\n\ninterface Props {\n message?: ReactNode;\n children?: ReactNode;\n style?: StyleProp;\n childrenStyle?: StyleProp;\n title?: ReactNode;\n onClosePress?: () => void;\n onLinkPress?: () => void;\n linkLabel?: string;\n icon?: string;\n type: keyof typeof stateStyles;\n}\n\nexport default function KHMessageField({\n message,\n children,\n style,\n childrenStyle,\n title,\n onClosePress,\n onLinkPress,\n linkLabel,\n icon,\n type,\n}: Props): JSX.Element {\n const theme = useContext(KHThemeContext);\n return (\n \n {(message != null || onClosePress != null) && (\n \n \n {title != null && (\n \n {icon && (\n \n )}\n {title}\n \n )}\n \n {title == null && icon != null && (\n \n )}\n {message}\n {onLinkPress && linkLabel != null && (\n \n {linkLabel}\n \n )}\n \n \n {onClosePress != null && (\n \n )}\n \n )}\n {children != null && (\n \n {children}\n \n )}\n \n );\n}\n","import KHColors from 'khshared/KHColors';\nimport * as React from 'react';\nimport { useContext } from 'react';\nimport {\n Modal,\n Pressable,\n StyleProp,\n StyleSheet,\n Text,\n TextStyle,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport KHButton, { Props as KHButtonProps } from './KHButton';\nimport KHConstants from './KHConstants';\nimport KHTextInput from './KHTextInput';\nimport KHThemeContext from './KHThemeContext';\n\nconst styles = {\n closeButton: {\n alignSelf: 'flex-end',\n marginTop: -34,\n marginRight: -22,\n } as ViewStyle,\n centered: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n padding: KHConstants.GUTTER_WIDTH,\n } as ViewStyle,\n overlay: {\n ...StyleSheet.absoluteFillObject,\n backgroundColor: KHColors.overlayBackground,\n } as ViewStyle,\n dialog: {\n padding: KHConstants.GUTTER_WIDTH,\n minWidth: 300,\n maxWidth: 550,\n backgroundColor: KHColors.dialogBackground,\n borderRadius: 8,\n } as ViewStyle,\n dialogV2: {\n paddingHorizontal: 36,\n paddingVertical: 48,\n borderRadius: 24,\n } as ViewStyle,\n title: {\n fontSize: 18,\n marginBottom: 16,\n } as TextStyle,\n titleV2: {\n color: KHColors.referralBookingTitle,\n fontFamily: 'Domine',\n fontWeight: '700',\n fontSize: 24,\n letterSpacing: 0.16,\n lineHeight: 32,\n marginBottom: 16,\n } as TextStyle,\n paragraph: {\n marginVertical: 8,\n } as TextStyle,\n paragraphV2: {\n color: KHColors.referralText,\n fontFamily: 'Red Hat Display',\n fontWeight: '400',\n fontSize: 16,\n lineHeight: 22,\n letterSpacing: 0.16,\n } as TextStyle,\n content: {\n marginBottom: 8,\n } as ViewStyle,\n actions: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n marginTop: 16,\n marginLeft: -8,\n } as ViewStyle,\n action: {\n marginLeft: 12,\n } as ViewStyle,\n};\n\ntype Props = Pick, 'onRequestClose'> & {\n closable?: boolean;\n children: React.ReactNode;\n style?: StyleProp;\n testID?: string;\n};\n\nexport default function KHModalDialog({\n closable,\n children,\n onRequestClose,\n style,\n testID,\n}: Props): JSX.Element {\n const theme = useContext(KHThemeContext);\n return (\n \n \n \n {null /* None needed */}\n \n \n {closable && (\n \n )}\n {children}\n \n \n \n );\n}\n\nKHModalDialog.Title = function KHModalDialogTitle({ children }: { children: React.ReactNode }) {\n const theme = useContext(KHThemeContext);\n return {children};\n};\n\nKHModalDialog.Content = function KHModalDialogContent({ children }: { children: React.ReactNode }) {\n return {children};\n};\n\nKHModalDialog.Paragraph = function KHModalDialogParagraph({\n children,\n testID,\n}: {\n children: React.ReactNode;\n testID?: string;\n}) {\n const theme = useContext(KHThemeContext);\n return (\n \n {children}\n \n );\n};\n\nKHModalDialog.TextInput = function KHModalDialogTextInput(\n props: React.ComponentProps,\n) {\n // eslint-disable-next-line react/jsx-props-no-spreading\n return ;\n};\n\nKHModalDialog.Actions = function KHModalDialogActions({\n primary,\n secondary,\n style,\n}: {\n primary: React.ReactNode;\n secondary?: React.ReactNode;\n style?: StyleProp;\n}) {\n return (\n \n {secondary}\n {primary}\n \n );\n};\n\nKHModalDialog.Action = function KHModalDialogAction({\n style,\n ...restProps\n}: KHButtonProps): JSX.Element {\n // eslint-disable-next-line react/jsx-props-no-spreading\n return style={[styles.action, style]} {...restProps} />;\n};\n","import KHColors from 'khshared/KHColors';\nimport React, { ReactNode, useContext } from 'react';\nimport {\n GestureResponderEvent,\n Image,\n ImageStyle,\n Pressable,\n StyleProp,\n View,\n ViewStyle,\n} from 'react-native';\nimport { Route, useHistory } from 'react-router';\n\nimport logo from '../assets/sh-icon-light-gray.png';\nimport KHAuth from '../utils/KHAuth';\nimport useGenNavigate from '../utils/useGenNavigate';\nimport useLogger from '../utils/useLogger';\nimport useTooltipRef from '../utils/useTooltipRef';\nimport generateURI from '../xapis/generateURIXAPI';\nimport KHIcon from './KHIcon';\nimport KHThemeContext from './KHThemeContext';\n\nconst logoURI = generateURI(logo);\n\nconst styles = {\n navBar: {\n width: 48,\n backgroundColor: KHColors.navBarBackground,\n height: '100%',\n paddingBottom: 12,\n } as ViewStyle,\n navBarV2: {\n backgroundColor: KHColors.teamAvailabilityTitleBarBackground,\n } as ViewStyle,\n logo: {\n width: 48,\n height: 48,\n resizeMode: 'contain',\n marginBottom: 12,\n } as ImageStyle,\n item: {\n flexDirection: 'row',\n justifyContent: 'center',\n paddingVertical: 8,\n } as ViewStyle,\n itemSelected: {\n backgroundColor: KHColors.navBarSelected,\n } as ViewStyle,\n itemSelectedV2: {\n backgroundColor: KHColors.teamAvailabilityNavBarItemSelected,\n } as ViewStyle,\n spring: {\n flex: 1,\n } as ViewStyle,\n section: {\n marginVertical: 12,\n } as ViewStyle,\n};\n\nfunction Item({\n iconSource,\n icon,\n onPress,\n tooltip,\n selected = false,\n style,\n}: {\n iconSource?: Parameters[0]['iconSource'];\n icon: string;\n onPress?: (e: GestureResponderEvent) => void;\n tooltip?: string;\n selected?: boolean;\n style?: StyleProp;\n}): JSX.Element {\n const tooltipRef = useTooltipRef(tooltip);\n const context = useContext(KHThemeContext);\n\n return (\n \n \n \n );\n}\n\nfunction RouteItem({\n iconSource,\n icon,\n to,\n exact = false,\n tooltip,\n selected,\n style,\n}: {\n iconSource?: Parameters[0]['iconSource'];\n icon: string;\n to: string;\n exact?: boolean;\n tooltip?: string;\n selected?: boolean;\n style?: StyleProp;\n}): JSX.Element {\n const genNavigate = useGenNavigate();\n return (\n \n {({ match }) => (\n {\n void genNavigate(to, { event });\n }}\n style={style}\n />\n )}\n \n );\n}\n\nfunction Section({ children }: { children: ReactNode }) {\n return {children};\n}\n\nfunction KHNavBar({ children, footer }: { children: ReactNode; footer?: ReactNode }): JSX.Element {\n const history = useHistory();\n const logger = useLogger();\n const context = useContext(KHThemeContext);\n return (\n \n history.push('/')}>\n \n \n\n {children}\n \n\n {\n await KHAuth.genSignOut(logger);\n history.push('/signin');\n }}\n icon=\"exit-to-app\"\n tooltip=\"Sign out\"\n />\n\n {footer}\n \n );\n}\n\nexport default Object.assign(KHNavBar, { Item, RouteItem, Section });\n","import KHColors from 'khshared/KHColors';\nimport React, { ReactNode, useContext, useState } from 'react';\nimport { StyleProp, Text, TextStyle, View, ViewStyle } from 'react-native';\n\nimport KHButton from './KHButton';\nimport KHChip from './KHChip';\nimport KHErrorText from './KHErrorText';\nimport KHMessageField from './KHMessageField';\nimport KHThemeContext from './KHThemeContext';\n\nconst CHIP_MARGIN = 12;\n\nconst styles = {\n labelRow: {\n flexDirection: 'row',\n } as ViewStyle,\n label: {\n flexShrink: 1,\n } as TextStyle,\n explanationButton: {\n marginLeft: 12,\n marginTop: -4, // Centers the icon without pushing other content down.\n marginBottom: -4, // Centers the icon without pushing other content down.\n } as ViewStyle,\n explanation: {\n marginHorizontal: 0,\n marginTop: 8,\n marginBottom: 0,\n } as ViewStyle,\n chipRow: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n marginRight: -CHIP_MARGIN, // Trick to ensure that chips don't wrap too early.\n } as ViewStyle,\n chip: {\n marginTop: 8,\n marginRight: CHIP_MARGIN,\n } as ViewStyle,\n error: {\n marginTop: 4,\n } as ViewStyle,\n labelV2: {\n fontFamily: 'Red Hat Display',\n fontSize: 14,\n fontWeight: '500',\n } as TextStyle,\n};\n\ninterface Option {\n label: ReactNode;\n value: V;\n selected: boolean;\n}\n\ninterface Props {\n disabled?: boolean;\n error?: React.ComponentProps['error'];\n label: ReactNode;\n labelStyle?: StyleProp;\n titleStyle?: StyleProp;\n explanation?: ReactNode;\n isExplanationShownByDefault?: boolean;\n explanationStyle?: StyleProp;\n onPress: (value: V) => void;\n style?: StyleProp;\n chipStyle?: StyleProp;\n options: Option[];\n multipleOptions?: boolean;\n messageFieldChildren?: ReactNode;\n testID?: string;\n}\n\n/**\n * NOTE: when using with `multipleOptions` parameter don't forget to sort values manually\n */\n\nexport default function KHOptionsField({\n disabled = false,\n error,\n label,\n labelStyle,\n titleStyle,\n chipStyle,\n explanation,\n explanationStyle,\n onPress,\n style,\n options,\n multipleOptions = false,\n isExplanationShownByDefault = false,\n messageFieldChildren,\n testID,\n}: Props): JSX.Element {\n const theme = useContext(KHThemeContext);\n\n const [isExplanationShown, setIsExplanationShown] = useState(\n false || isExplanationShownByDefault,\n );\n return (\n <>\n \n \n \n {label}\n {multipleOptions && ' (select all)'}\n \n {Boolean(explanation) && (\n setIsExplanationShown(!isExplanationShown)}\n style={styles.explanationButton}\n />\n )}\n \n {isExplanationShown && (\n setIsExplanationShown(!isExplanationShown)}\n style={[styles.explanation, explanationStyle]}\n >\n {messageFieldChildren}\n \n )}\n \n {options.map((o) => (\n onPress(o.value)}\n />\n ))}\n \n \n \n \n );\n}\n","export enum FileChooserFileType {\n IMAGE = 'IMAGE',\n PDF = 'PDF',\n CSV = 'CSV',\n}\n\nexport enum FileChooserSource {\n CAMERA = 'CAMERA',\n GALLERY = 'GALLERY',\n ALL = 'ALL',\n}\n\nexport interface FileChooserResult {\n uri: string;\n type: string;\n name: string;\n size: number;\n}\n","import { captureException } from '@sentry/react';\nimport getErrorLoggingFields from 'khshared/getErrorLoggingFields';\nimport { Logger } from 'pino';\n\nimport {\n FileChooserFileType,\n FileChooserResult,\n FileChooserSource,\n} from './genChooseFileXAPITypes';\n\nconst FILE_TYPE_MIME_TYPE_EXTENSIONS: {\n [fileType in FileChooserFileType]: { [mimeType: string]: string[] };\n} = {\n [FileChooserFileType.IMAGE]: {\n 'image/jpeg': ['.jpeg'],\n 'image/jpg': ['.jpg'],\n 'image/png': ['.png'],\n 'image/tiff': ['.tif', '.tiff'],\n },\n [FileChooserFileType.PDF]: {\n 'application/pdf': ['.pdf'],\n },\n [FileChooserFileType.CSV]: {\n 'text/csv': ['.csv'],\n },\n};\n\n// An industry-standard value for the max size of a safe file upload could not be found.\n// This number was generated with the following justification:\n// - Using the S3 cli, the largest file size in prod was found to be 38MB (as of 2/4/22).\n// Thus, a number (50 MiB) was picked over this that a good-faith user probably would not hit.\nconst MAX_FILE_UPLOAD_SIZE_IN_BYTES = 50 * 1024 * 1024;\n\nexport default async function genChooseFile(\n acceptedFileTypes: FileChooserFileType[] = [FileChooserFileType.IMAGE, FileChooserFileType.PDF],\n logger: Logger,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _fileSource: FileChooserSource,\n): Promise {\n const input = document.createElement('input');\n input.style.display = 'none';\n input.setAttribute('type', 'file');\n input.setAttribute(\n 'accept',\n acceptedFileTypes\n .flatMap((fileType) => Object.values(FILE_TYPE_MIME_TYPE_EXTENSIONS[fileType]).flat())\n .join(', '),\n );\n\n document.body.appendChild(input);\n logger.info({ eventName: 'fileSelectionDialogShown' });\n\n try {\n return await new Promise((resolve, reject) => {\n // for some reason we can't check directly if the file upload is cancelled,\n // but we can check if the body returns to focus\n document.body.onfocus = () => {\n setTimeout(() => {\n document.body.onfocus = null;\n if (!input.files || input.files.length === 0) {\n document.body.removeChild(input);\n resolve(null);\n logger.info({ eventName: 'fileSelectionCanceled' });\n }\n }, 1000);\n };\n\n input.addEventListener('change', () => {\n document.body.removeChild(input);\n if (input.files) {\n const targetFile = input.files[0];\n if (\n !acceptedFileTypes.some(\n (fileType) => FILE_TYPE_MIME_TYPE_EXTENSIONS[fileType][targetFile.type] != null,\n )\n ) {\n reject(new Error('Please choose a valid file type.'));\n }\n if (targetFile.size > MAX_FILE_UPLOAD_SIZE_IN_BYTES) {\n reject(new Error('Please select a file less than 50 MB.'));\n }\n\n const reader = new FileReader();\n reader.onerror = () => {\n reject(new Error('Failed to read the selected media because the operation failed.'));\n };\n reader.onload = ({ target }) => {\n const uri = target?.result;\n if (typeof uri !== 'string') return;\n\n const result: FileChooserResult = {\n uri,\n name: targetFile.name,\n size: targetFile.size,\n type: targetFile.type,\n };\n logger.info({\n eventName: 'fileSelectionSuccess',\n contextJSON: JSON.stringify({\n name: result.name,\n size: result.size,\n type: result.type,\n }),\n });\n resolve(result);\n };\n reader.readAsDataURL(targetFile);\n }\n });\n\n input.dispatchEvent(new MouseEvent('click'));\n });\n } catch (error: unknown) {\n logger.error({ eventName: 'fileSelectionError', ...getErrorLoggingFields(error) });\n captureException(error);\n throw error;\n }\n}\n","/**\n * This function currently is a placeholder for the react native version `genResizedImageURLOrNullXAPI.native.ts`.\n *\n * Currently, we do not resize images on the web. We may want to add this in the future to optimize Sprinter checklist performance.\n *\n */\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/require-await */\nexport default async function genResizedImageURLOrNullXAPI(\n _uri: string,\n _maxWidth: number,\n _maxHeight: number,\n _quality: number,\n _rotation?: number,\n): Promise {\n /* eslint-enable @typescript-eslint/no-unused-vars, @typescript-eslint/require-await */\n return null;\n}\n","import KHColors from 'khshared/KHColors';\nimport * as React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\n\nconst styles = {\n track: {\n height: 4,\n borderRadius: 6,\n backgroundColor: KHColors.progressBarTrack,\n flexDirection: 'row',\n justifyContent: 'flex-start',\n overflow: 'hidden',\n } as ViewStyle,\n trackSquare: {\n borderRadius: 0,\n } as ViewStyle,\n progressBar: {\n backgroundColor: KHColors.progressBar,\n transition: 'width 0.5s',\n } as ViewStyle,\n};\n\ninterface Props {\n progress?: number;\n square?: boolean;\n style?: StyleProp;\n}\n\nexport default function KHProgressBar({ progress = 0, square = false, style }: Props): JSX.Element {\n return (\n \n \n \n );\n}\n","import { TypedDocumentNode, gql, useLazyQuery } from '@apollo/client';\nimport { captureException } from '@sentry/react';\nimport { Storage } from 'aws-amplify';\nimport { S3ObjectInput, S3ObjectParentType } from 'khshared/API';\nimport { hasSchedulerGroup, hasTechGroup } from 'khshared/cognitoUtils';\nimport getErrorLoggingFields from 'khshared/getErrorLoggingFields';\nimport {\n KHPhotoCardUploadGetPUTS3ObjectPresignedURLQuery,\n KHPhotoCardUploadGetPUTS3ObjectPresignedURLQueryVariables,\n KHPhotoCard_s3Object,\n} from 'khshared/graphql/types';\nimport KHColors from 'khshared/KHColors';\nimport uploadFileToURL from 'khshared/utils/uploadFileToURL';\nimport nullthrows from 'nullthrows';\nimport { PDFDocument } from 'pdf-lib';\nimport React, { ReactNode, useCallback, useEffect, useState } from 'react';\nimport {\n Image,\n ImageResizeMode,\n ImageStyle,\n Platform,\n Pressable,\n StyleProp,\n StyleSheet,\n TextStyle,\n View,\n ViewStyle,\n} from 'react-native';\n\nimport awsExports from '../aws-exports';\nimport genChildDocumentURL from '../utils/genChildDocumentURL';\nimport KHAuth from '../utils/KHAuth';\nimport { useAsyncAction } from '../utils/useAsyncAction';\nimport useIsMountedRef from '../utils/useIsMountedRef';\nimport { useLoggerRef } from '../utils/useLogger';\nimport genChooseFileXAPI from '../xapis/genChooseFileXAPI';\nimport { FileChooserFileType, FileChooserSource } from '../xapis/genChooseFileXAPITypes';\nimport genResizedImageURLOrNull from '../xapis/genResizedImageURLOrNullXAPI';\nimport openFileURL from '../xapis/openFileXAPI';\nimport KHButton from './KHButton';\nimport KHErrorText from './KHErrorText';\nimport KHIcon from './KHIcon';\nimport KHProgressBar from './KHProgressBar';\nimport KHText from './KHText';\n\nconst styles = {\n border: {\n borderWidth: StyleSheet.hairlineWidth,\n borderColor: KHColors.chipBorder,\n borderRadius: KHButton.BORDER_RADIUS,\n overflow: 'hidden',\n } as ViewStyle,\n uploadZone: {\n textAlign: 'center',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n } as ViewStyle,\n uploadZoneSizingOuter: {\n width: '100%',\n } as ViewStyle,\n /*\n aspect ratio | padding-bottom value\n --------------|----------------------\n 16:9 | 56.25%\n 1:1 | 100%\n 4:3 | 75%\n 3:2 | 66.66%\n 8:5 | 62.5%\n 3:4 | 133%\n */\n uploadZoneThreeByFour: {\n paddingTop: '133%',\n } as ViewStyle,\n uploadZoneFourByThree: {\n paddingTop: '75%',\n } as ViewStyle,\n uploadZoneSquare: {\n paddingTop: '100%',\n } as ViewStyle,\n uploadZoneSizingInner: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n } as ViewStyle,\n image: {\n width: '90%',\n height: '90%',\n } as ImageStyle,\n icon: {\n marginHorizontal: 56,\n marginVertical: 32,\n } as TextStyle,\n uploadSuccessIcon: {\n marginRight: 4,\n } as TextStyle,\n caption: {\n marginTop: 8,\n marginHorizontal: 0,\n textAlign: 'center',\n } as TextStyle,\n error: {\n marginTop: 8,\n marginHorizontal: 0,\n textAlign: 'center',\n } as TextStyle,\n iframe: {\n borderWidth: 0,\n flex: 1,\n },\n buttons: {\n marginTop: 9,\n flex: 1,\n flexWrap: 'wrap',\n } as ViewStyle,\n buttonsRow: {\n flexDirection: 'row',\n } as ViewStyle,\n button: {\n flex: 1,\n marginRight: 12,\n marginBottom: 12,\n } as ViewStyle,\n progressBar: {\n marginTop: 8,\n width: '100%',\n maxWidth: 200,\n height: 6,\n } as ViewStyle,\n centerView: {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n paddingHorizontal: 12,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: `${KHColors.backgroundContrast}cc`,\n } as ViewStyle,\n};\n\nenum FileType {\n IMAGE = 'image',\n PDF = 'pdf',\n UNSUPPORTED = 'unsupported',\n}\n\n// These are arbitrary values for resizing images.\nconst DEFAULT_IMAGE_RESIZE = { width: 1200, height: 1200, quality: 50 };\n\nfunction toFileType(contentType: string | null) {\n switch (contentType) {\n case null:\n return null;\n case 'application/pdf':\n return FileType.PDF;\n case 'image/tiff':\n return FileType.UNSUPPORTED;\n default:\n return FileType.IMAGE;\n }\n}\n\ntype Props = {\n caption?: ReactNode;\n disabled?: boolean;\n border?: boolean;\n displayMode?: 'mobile' | 'desktop';\n onUploadPhotoStart?: () => void;\n onUploadPhotoComplete: (s3Object: S3ObjectInput, s3ObjectID?: string | null) => void;\n aspectRatio?: 'portrait' | 'square' | 'landscape';\n imageResizeMode?: ImageResizeMode;\n privacyLevel?: 'private' | 'public';\n imageStyle?: StyleProp;\n style?: StyleProp;\n pdfPageLimit?: {\n quantity: number;\n limitExceededMessage: string;\n };\n parentID: string;\n parentType: S3ObjectParentType;\n // following 2 props should be removed if we refactor the UploadLabResultsField\n // component since it is unfortunate that these are on a core KH component\n // because we show automatically fetched document from change healthcare which\n // we store in encounter documents but if we manually reupload a lab results\n // we store it in the post-review checklist which belongs to the appointment\n parentIDOverrideForWriting?: string;\n parentTypeOverrideForWriting?: S3ObjectParentType;\n testID?: string;\n onDeletePhoto?: () => void;\n compressPhotoUploads?: 'compress' | 'no-compress';\n s3ObjectID?: string | null;\n} & (\n | {\n // For new files, specify just the S3 key to use when uploading.\n defaultS3Key: string;\n s3Object?: null | undefined;\n }\n | {\n // For existing files, pass the existing S3 object and the key will be reused.\n defaultS3Key?: string | null | undefined; // Ignored to preserve S3 object history.\n s3Object: KHPhotoCard_s3Object | S3ObjectInput;\n }\n);\n\n// fetch is unreliable at accessing the local file store on android devices so we use a raw XHR request\nconst genBlobByUrl = (url: string): Promise => {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.onload = () => resolve(xhr.response);\n xhr.onerror = () => reject(new TypeError('Request failed'));\n xhr.responseType = 'blob';\n\n xhr.open('GET', url, true);\n xhr.send(null);\n });\n};\n\nconst GENERATE_PUT_PRESIGNED_URL: TypedDocumentNode<\n KHPhotoCardUploadGetPUTS3ObjectPresignedURLQuery,\n KHPhotoCardUploadGetPUTS3ObjectPresignedURLQueryVariables\n> = gql`\n query KHPhotoCardUploadGetPUTS3ObjectPresignedURL(\n $accessLevel: String!\n $key: String!\n $identityID: String!\n $contentType: String!\n $parentID: String!\n $parentType: S3ObjectParentType!\n ) {\n getPUTS3ObjectPresignedURL(\n accessLevel: $accessLevel\n key: $key\n identityID: $identityID\n contentType: $contentType\n parentID: $parentID\n parentType: $parentType\n ) {\n url\n s3ObjectID\n }\n }\n`;\n\nexport default function KHPhotoCard({\n defaultS3Key,\n s3Object,\n s3ObjectID,\n caption,\n disabled = false,\n border = true,\n displayMode = 'mobile',\n onUploadPhotoStart,\n onUploadPhotoComplete,\n aspectRatio = 'portrait',\n imageResizeMode = 'contain',\n privacyLevel = 'private',\n imageStyle,\n style,\n onDeletePhoto,\n parentID,\n parentType,\n parentIDOverrideForWriting,\n parentTypeOverrideForWriting,\n testID,\n pdfPageLimit,\n compressPhotoUploads = 'no-compress',\n}: Props): JSX.Element {\n const isMountedRef = useIsMountedRef();\n const [photoSourceLocalURL, setPhotoSourceLocalURL] = useState(null);\n const [photoSourceRemoteURL, setPhotoSourceRemoteURL] = useState(null);\n const [lastUploadS3Key, setLastUploadS3Key] = useState(null);\n const [filePathToUpload, setFilePathToUpload] = useState(null);\n const [fileType, setFileType] = useState(null);\n const [progress, setProgress] = useState(null);\n const [customError, setCustomError] = useState(null);\n const groups = KHAuth.getGroupsOrNull();\n\n const isTech = hasTechGroup(groups ?? []);\n const isScheduler = hasSchedulerGroup(groups ?? []);\n const isTechNotScheduler = isTech && !isScheduler;\n\n // Techs can see the photo card buttons on start so they can upload from the camera or the gallery right away\n const [showButtons, setShowButtons] = useState(isTechNotScheduler);\n\n const photoSourceURL = photoSourceRemoteURL ?? photoSourceLocalURL;\n\n const loggerRef = useLoggerRef({\n photoSourceLocalURL,\n photoSourceRemoteURL,\n filePathToUploadDigest: filePathToUpload?.substring(0, 200),\n fileType,\n });\n\n const [genPUTPresignedURL] = useLazyQuery(GENERATE_PUT_PRESIGNED_URL, {\n fetchPolicy: 'no-cache',\n });\n\n const [genChooseFile, isChoosingFile, errorChoosingFile, clearErrorChoosingFile] = useAsyncAction(\n async (fileSource: FileChooserSource) => {\n // Techs can always continute to see the buttons if the photo source is null\n // Partners and Schedulers should not\n if (isTechNotScheduler) setShowButtons(photoSourceURL === null);\n else setShowButtons(false);\n\n setProgress(0.01);\n\n let fileChoice;\n try {\n fileChoice = await genChooseFileXAPI(\n Platform.OS === 'web'\n ? [FileChooserFileType.IMAGE, FileChooserFileType.PDF]\n : [FileChooserFileType.IMAGE],\n loggerRef.current,\n fileSource,\n );\n } catch (e) {\n loggerRef.current.error({\n eventName: 'KHPhotoCardError',\n subEventName: 'chooseFile',\n ...getErrorLoggingFields(e),\n });\n captureException(e);\n throw e;\n } finally {\n if (isMountedRef.current) setProgress(null);\n }\n\n return fileChoice;\n },\n );\n\n const [\n genUploadFile,\n isUploadingFile,\n errorUploadingFile,\n clearErrorUploadingFile,\n ] = useAsyncAction(async (url: string) => {\n setFilePathToUpload(url);\n setProgress(0.01);\n\n const blob = await genBlobByUrl(url);\n\n if (toFileType(blob.type) === FileType.PDF && pdfPageLimit != null) {\n const blobArrayBuffer = await blob.arrayBuffer();\n const pdf = await PDFDocument.load(blobArrayBuffer);\n if (pdf.getPageCount() > pdfPageLimit.quantity) {\n setProgress(1);\n setCustomError(pdfPageLimit.limitExceededMessage);\n return;\n }\n }\n\n const resizedImageURL = await genResizedImageURLOrNull(\n url,\n DEFAULT_IMAGE_RESIZE.width,\n DEFAULT_IMAGE_RESIZE.height,\n DEFAULT_IMAGE_RESIZE.quality,\n );\n const resizedBlob = resizedImageURL != null ? await genBlobByUrl(resizedImageURL) : null;\n\n if (!isMountedRef.current) return;\n setPhotoSourceRemoteURL(null);\n setPhotoSourceLocalURL(resizedImageURL ?? URL.createObjectURL(blob));\n setFileType(toFileType(blob.type));\n\n try {\n const key = nullthrows(s3Object == null ? defaultS3Key : s3Object.key);\n onUploadPhotoStart?.();\n const blobToUpload = compressPhotoUploads === 'compress' ? resizedBlob ?? blob : blob;\n\n const fileIdentityID = KHAuth.getViewerIdentityIDOrThrow();\n const bucket = awsExports.aws_user_files_s3_bucket;\n let s3ObjectIDCreated = null;\n try {\n const putURLResponse = await genPUTPresignedURL({\n variables: {\n accessLevel: privacyLevel,\n identityID: fileIdentityID,\n key,\n parentID: parentIDOverrideForWriting ?? parentID,\n parentType: parentTypeOverrideForWriting ?? parentType,\n contentType: blobToUpload.type,\n },\n });\n\n const putURL = putURLResponse.data?.getPUTS3ObjectPresignedURL.url ?? null;\n s3ObjectIDCreated = putURLResponse.data?.getPUTS3ObjectPresignedURL.s3ObjectID ?? null;\n if (putURL == null) throw new Error('Failed to generate PUT upload URL');\n\n await uploadFileToURL(blobToUpload, putURL, blobToUpload.type, setProgress);\n\n loggerRef.current.info({\n eventName: 'KHPhotoCardUpload',\n subEventName: 'putURLFileUploadSuccess',\n });\n } catch (error) {\n await Storage.put(key, blobToUpload, {\n contentType: blobToUpload.type,\n level: privacyLevel,\n progressCallback: (p: { loaded: number; total: number }) => {\n setProgress(p.loaded / p.total);\n },\n });\n\n loggerRef.current.error({\n eventName: 'KHPhotoCardUpload',\n subEventName: 'putURLFileUploadFail',\n ...getErrorLoggingFields(error),\n });\n captureException(error);\n }\n\n if (!isMountedRef.current) return;\n setLastUploadS3Key(key);\n setShowButtons(false);\n\n // If we don't wait for the next event loop, the parent could update this component's props\n // before this call of the async action has completed, triggering the useEffect below and\n // causing the second async action call to throw a ReentrancyError.\n setTimeout(() => {\n onUploadPhotoComplete(\n {\n key,\n identityID: fileIdentityID,\n bucket,\n region: awsExports.aws_user_files_s3_bucket_region,\n },\n s3ObjectIDCreated,\n );\n }, 0);\n } catch (e) {\n captureException(e);\n loggerRef.current.error({\n eventName: 'KHPhotoCardError',\n subEventName: 'uploadFile',\n ...getErrorLoggingFields(e),\n });\n throw e;\n }\n });\n\n const s3ObjectKey = s3Object?.key;\n const s3ObjectIdentityID = s3Object?.identityID ?? KHAuth.getViewerIdentityIDOrThrow();\n const [\n genFetchRemoteURL,\n isFetchingRemoteURL,\n errorFetchingRemoteURL,\n clearErrorFetchingRemoteURL,\n ] = useAsyncAction(\n useCallback(async () => {\n clearErrorChoosingFile();\n clearErrorUploadingFile();\n\n // Compare against the last upload key to prevent refetching files that were just uploaded.\n // TODO (iron_bucket) - update logic here to use just s3ObjectID\n if (s3ObjectKey == null || s3ObjectKey === lastUploadS3Key) return;\n setProgress(0.01);\n\n let remoteURL;\n\n if (s3ObjectID != null) {\n try {\n remoteURL = await genChildDocumentURL({\n s3ObjectID,\n parentID,\n parentType,\n logger: loggerRef.current,\n });\n loggerRef.current.info({\n eventName: 'KHPhotoCardUpload',\n subEventName: 'useChildDocumentURLResolverSuccess',\n });\n } catch (e) {\n loggerRef.current.error({\n eventName: 'KHPhotoCardUpload',\n subEventName: 'useChildDocumentURLResolverFail',\n ...getErrorLoggingFields(e),\n });\n const source = await Storage.get(s3ObjectKey, {\n level: privacyLevel,\n identityId: s3ObjectIdentityID,\n });\n remoteURL = typeof source === 'string' ? source : null;\n }\n } else {\n const source = await Storage.get(s3ObjectKey, {\n level: privacyLevel,\n identityId: s3ObjectIdentityID,\n });\n remoteURL = typeof source === 'string' ? source : null;\n loggerRef.current.error({\n eventName: 'KHPhotoCardUpload',\n subEventName: 'useStorageGet',\n });\n }\n const response = remoteURL ? await fetch(remoteURL) : null;\n\n if (!isMountedRef.current) return;\n const contentType = response?.headers.get('content-type');\n if (contentType == null) throw new Error('Network Error');\n setFileType(toFileType(contentType));\n\n if (!isMountedRef.current) return;\n setProgress(0.5);\n\n const resizedRemoteURL = remoteURL\n ? await genResizedImageURLOrNull(\n remoteURL,\n DEFAULT_IMAGE_RESIZE.width,\n DEFAULT_IMAGE_RESIZE.height,\n DEFAULT_IMAGE_RESIZE.quality,\n )\n : null;\n\n if (!isMountedRef.current) return;\n setPhotoSourceRemoteURL(resizedRemoteURL ?? remoteURL);\n setProgress(1);\n }, [\n clearErrorChoosingFile,\n clearErrorUploadingFile,\n s3ObjectKey,\n lastUploadS3Key,\n s3ObjectID,\n isMountedRef,\n parentID,\n parentType,\n privacyLevel,\n s3ObjectIdentityID,\n loggerRef,\n ]),\n );\n\n useEffect(() => {\n void genFetchRemoteURL();\n }, [genFetchRemoteURL]); // Because of its useCallback's deps, this will trigger anytime we receive a new S3 object or privacyLevel.\n\n useEffect(() => {\n if (s3Object == null && isMountedRef.current) {\n setPhotoSourceLocalURL(null);\n setPhotoSourceRemoteURL(null);\n }\n }, [s3Object, isMountedRef]);\n\n async function genChooseAndUploadFile(fileSource: FileChooserSource) {\n clearErrorChoosingFile();\n clearErrorUploadingFile();\n clearErrorFetchingRemoteURL();\n\n const fileChoice = await genChooseFile(fileSource);\n if (fileChoice == null) return;\n\n await genUploadFile(fileChoice.uri);\n }\n\n const shouldDisable = isChoosingFile || isUploadingFile || isFetchingRemoteURL || disabled;\n const hasRetriableError = errorUploadingFile != null || errorFetchingRemoteURL != null;\n const hasProgress = progress != null && progress !== 1;\n\n return (\n \n \n \n \n {photoSourceURL != null && displayMode === 'desktop' ? (\n <>\n {fileType === FileType.PDF ? (\n