@unite-us/app-create-referral 0.15.170 → 0.15.171
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AppReferrals.js.map +1 -1
- package/dist/AppReferrals.scss +2 -2
- package/dist/AppReferrals.test.js +6 -6
- package/dist/AppReferrals.test.js.map +1 -1
- package/dist/__testUtils__/mockServer/handlers.js +6 -6
- package/dist/__testUtils__/mockServer/handlers.js.map +1 -1
- package/dist/__testUtils__/mockServer/server.js.map +1 -1
- package/dist/__testUtils__/test-utils.js +5 -5
- package/dist/__testUtils__/test-utils.js.map +1 -1
- package/dist/actions/Document/Contact/Group/fetchCaseDocuments.js.map +1 -1
- package/dist/actions/Document/Contact/Group/fetchContactDocuments.js.map +1 -1
- package/dist/actions/Document/Contact/Group/fileUploadUtils.js.map +1 -1
- package/dist/actions/Group/fetchCoreGroupForms.js.map +1 -1
- package/dist/actions/Referral/cannotMoveToReferralReasons.js.map +1 -1
- package/dist/actions/Referral/fetchCoreServices.js.map +1 -1
- package/dist/actions/Referral/fetchPrimaryWorkers.js +0 -1
- package/dist/actions/Referral/fetchPrimaryWorkers.js.map +1 -1
- package/dist/actions/Referral/removeReferralProgram.js.map +1 -1
- package/dist/api/ApiHooks.js.map +1 -1
- package/dist/api/config.js.map +1 -1
- package/dist/common/form/DocumentUploader/components/ContactDocumentsSelector.js.map +1 -1
- package/dist/common/form/DocumentUploader/components/DocumentsListView.js.map +1 -1
- package/dist/common/form/ErrorMessage/index.js.map +1 -1
- package/dist/common/form/FileUploadV2/FileUpload.js.map +1 -1
- package/dist/common/form/FileUploadV2/FileUpload.test.js.map +1 -1
- package/dist/common/form/FileUploadV2/components/FilePreviewWrapper.js.map +1 -1
- package/dist/common/form/FileUploadV2/components/FilePreviewWrapper.test.js.map +1 -1
- package/dist/common/form/FileUploadV2/stylesheets/FileUpload.scss +8 -6
- package/dist/common/form/FormForm/index.js.map +1 -1
- package/dist/common/utils/utils.js.map +1 -1
- package/dist/components/Card.js.map +1 -1
- package/dist/components/CreateReferralContainer.js +1 -2
- package/dist/components/CreateReferralContainer.js.map +1 -1
- package/dist/components/DollarAmount.js.map +1 -1
- package/dist/components/ExpandableButton.js.map +1 -1
- package/dist/components/LineItem.js.map +1 -1
- package/dist/components/NavButtons.js +8 -8
- package/dist/components/NavButtons.js.map +1 -1
- package/dist/components/NoReferralsDisplay.js +3 -4
- package/dist/components/NoReferralsDisplay.js.map +1 -1
- package/dist/components/ReferralStepper.js.map +1 -1
- package/dist/components/SearchableField.js.map +1 -1
- package/dist/components/StepHeader.js.map +1 -1
- package/dist/components/Stepper.js +10 -10
- package/dist/components/Stepper.js.map +1 -1
- package/dist/components/modal/Dialog.js +1 -1
- package/dist/components/modal/Dialog.js.map +1 -1
- package/dist/components/modal/Dialog.scss +7 -4
- package/dist/components/service_authorization/AuthorizationSpendCard.js.map +1 -1
- package/dist/components/service_authorization/CapsInfo.js.map +1 -1
- package/dist/components/service_authorization/CaseStatus.js.map +1 -1
- package/dist/components/service_authorization/PreviousAuthorizationRequestsDetails.js +1 -1
- package/dist/components/service_authorization/PreviousAuthorizationRequestsDetails.js.map +1 -1
- package/dist/components/service_authorization/PreviousAuthorizationRequestsDetails.scss +1 -1
- package/dist/components/service_authorization/ReferralAuthSpendExpandable.js.map +1 -1
- package/dist/components/service_authorization/ReferralAuthorizationRequestSummary.js +2 -2
- package/dist/components/service_authorization/ReferralAuthorizationRequestSummary.js.map +1 -1
- package/dist/components/service_authorization/Spend.js +0 -1
- package/dist/components/service_authorization/Spend.js.map +1 -1
- package/dist/components/service_authorization/formatShortDate.js.map +1 -1
- package/dist/components/service_authorization/messageConstants.js.map +1 -1
- package/dist/components/spinners/OverlaySpinner/OverlaySpinner.js.map +1 -1
- package/dist/components/spinners/Spinner/Spinner.js.map +1 -1
- package/dist/components/spinners/Spinner/Spinner.scss +28 -12
- package/dist/constants/callOrLog.js.map +1 -1
- package/dist/constants/enums.js +8 -8
- package/dist/constants/enums.js.map +1 -1
- package/dist/constants/eventConstants.js.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/context/AppCreateReferralProvider.js +4 -4
- package/dist/context/AppCreateReferralProvider.js.map +1 -1
- package/dist/context/state.js.map +1 -1
- package/dist/context/withAppCreateReferralContext.js +1 -1
- package/dist/context/withAppCreateReferralContext.js.map +1 -1
- package/dist/hooks/__tests__/useCreateReferrals.test.js +5 -5
- package/dist/hooks/__tests__/useCreateReferrals.test.js.map +1 -1
- package/dist/hooks/sendReferral.js +3 -3
- package/dist/hooks/sendReferral.js.map +1 -1
- package/dist/hooks/useClinicalModificationOptions.js.map +1 -1
- package/dist/hooks/useCreateReferrals.js +4 -5
- package/dist/hooks/useCreateReferrals.js.map +1 -1
- package/dist/hooks/useCreateResourceList.js +2 -2
- package/dist/hooks/useCreateResourceList.js.map +1 -1
- package/dist/hooks/useCreateShareEvent.js +1 -1
- package/dist/hooks/useCreateShareEvent.js.map +1 -1
- package/dist/hooks/useForwardReferral.js +3 -4
- package/dist/hooks/useForwardReferral.js.map +1 -1
- package/dist/hooks/usePerson.js +5 -5
- package/dist/hooks/usePerson.js.map +1 -1
- package/dist/hooks/useUpdateResourceList.js +1 -1
- package/dist/hooks/useUpdateResourceList.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pages/builder/ReferralBuilder.js.map +1 -1
- package/dist/pages/builder/ReferralBuilderForm.js.map +1 -1
- package/dist/pages/builder/ReferralBuilderForm.scss +0 -1
- package/dist/pages/builder/ReferralBuilderFormContent.js +1 -1
- package/dist/pages/builder/ReferralBuilderFormContent.js.map +1 -1
- package/dist/pages/builder/__tests__/AuthRequiredClinicalCodes.test.js +8 -8
- package/dist/pages/builder/__tests__/AuthRequiredClinicalCodes.test.js.map +1 -1
- package/dist/pages/builder/__tests__/AuthRequiredNonFundedPrograms.test.js +8 -8
- package/dist/pages/builder/__tests__/AuthRequiredNonFundedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/AuthorizationRequiredPrograms.test.js +7 -7
- package/dist/pages/builder/__tests__/AuthorizationRequiredPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/NonSensitiveGroupedPrograms.test.js +26 -26
- package/dist/pages/builder/__tests__/NonSensitiveGroupedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/NonSensitiveSingleProgram.test.js +21 -21
- package/dist/pages/builder/__tests__/NonSensitiveSingleProgram.test.js.map +1 -1
- package/dist/pages/builder/__tests__/ReferralBuilder.test.js +12 -12
- package/dist/pages/builder/__tests__/ReferralBuilder.test.js.map +1 -1
- package/dist/pages/builder/__tests__/ReferralBuilderForm.attachments.test.js.map +1 -1
- package/dist/pages/builder/__tests__/SensitiveProviderGroupedPrograms.test.js +17 -17
- package/dist/pages/builder/__tests__/SensitiveProviderGroupedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/SensitiveServiceGroupedPrograms.test.js +10 -10
- package/dist/pages/builder/__tests__/SensitiveServiceGroupedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/SensitiveServiceSensitiveProviderGroupedPrograms.test.js +13 -13
- package/dist/pages/builder/__tests__/SensitiveServiceSensitiveProviderGroupedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/SensitiveSingleProgram.test.js +18 -18
- package/dist/pages/builder/__tests__/SensitiveSingleProgram.test.js.map +1 -1
- package/dist/pages/builder/__tests__/buildDraftState.test.js.map +1 -1
- package/dist/pages/builder/__tests__/buildGroupedReferrals.networkBug.test.js.map +1 -1
- package/dist/pages/builder/buildDraftState.js +2 -3
- package/dist/pages/builder/buildDraftState.js.map +1 -1
- package/dist/pages/builder/clearDraftState.js +0 -1
- package/dist/pages/builder/clearDraftState.js.map +1 -1
- package/dist/pages/builder/components/AboutGroupedReferralsModal.js.map +1 -1
- package/dist/pages/builder/components/AuthorizationSubform.js.map +1 -1
- package/dist/pages/builder/components/ChooseOneServiceTypeModal.js +1 -1
- package/dist/pages/builder/components/ChooseOneServiceTypeModal.js.map +1 -1
- package/dist/pages/builder/components/DetailsDrawer.js.map +1 -1
- package/dist/pages/builder/components/ProgramHeader.js +4 -4
- package/dist/pages/builder/components/ProgramHeader.js.map +1 -1
- package/dist/pages/builder/components/ProgramMenu.js +3 -3
- package/dist/pages/builder/components/ProgramMenu.js.map +1 -1
- package/dist/pages/builder/components/ReferralBuilderContent.js +1 -1
- package/dist/pages/builder/components/ReferralBuilderContent.js.map +1 -1
- package/dist/pages/builder/components/ReferralCard.js +4 -5
- package/dist/pages/builder/components/ReferralCard.js.map +1 -1
- package/dist/pages/builder/components/ReferralClientNeedsField.js.map +1 -1
- package/dist/pages/builder/components/ReferralProgramCard.js +1 -1
- package/dist/pages/builder/components/ReferralProgramCard.js.map +1 -1
- package/dist/pages/builder/components/ReferralProgramMenu.js +0 -1
- package/dist/pages/builder/components/ReferralProgramMenu.js.map +1 -1
- package/dist/pages/builder/constants.js.map +1 -1
- package/dist/pages/builder/hooks/useBuildReferrals.js +2 -2
- package/dist/pages/builder/hooks/useBuildReferrals.js.map +1 -1
- package/dist/pages/builder/hooks/useReferralMutations.js.map +1 -1
- package/dist/pages/builder/utils/buildGroupedReferrals.js.map +1 -1
- package/dist/pages/builder/utils/buildGroupedReferralsHelpers.js.map +1 -1
- package/dist/pages/builder/utils/formatProgramDetail.js.map +1 -1
- package/dist/pages/builder/utils/referralBuilderFormDraftAuth.js.map +1 -1
- package/dist/pages/builder/utils/referralBuilderFormUtils.js.map +1 -1
- package/dist/pages/builder/utils/referralBuilderFormValidation.js.map +1 -1
- package/dist/pages/builder/utils/referralBuilderUtils.js.map +1 -1
- package/dist/pages/builder/utils.js +0 -1
- package/dist/pages/builder/utils.js.map +1 -1
- package/dist/pages/review/DeleteReferralModal.js +0 -1
- package/dist/pages/review/DeleteReferralModal.js.map +1 -1
- package/dist/pages/review/DropdownMultiplesReferrals.js +1 -2
- package/dist/pages/review/DropdownMultiplesReferrals.js.map +1 -1
- package/dist/pages/review/ReferralsSent.js +5 -5
- package/dist/pages/review/ReferralsSent.js.map +1 -1
- package/dist/pages/review/Review.js +5 -6
- package/dist/pages/review/Review.js.map +1 -1
- package/dist/pages/review/SuccessReferralRedesign.js.map +1 -1
- package/dist/pages/review/__tests__/CallbackNotifications.test.js +8 -8
- package/dist/pages/review/__tests__/CallbackNotifications.test.js.map +1 -1
- package/dist/pages/review/__tests__/ReferralsSent.test.js +11 -11
- package/dist/pages/review/__tests__/ReferralsSent.test.js.map +1 -1
- package/dist/pages/review/__tests__/Review.test.js +61 -61
- package/dist/pages/review/__tests__/Review.test.js.map +1 -1
- package/dist/pages/review/__tests__/data.js +1336 -1336
- package/dist/pages/review/__tests__/data.js.map +1 -1
- package/dist/pages/review/__tests__/referralStatusRedesign.test.js.map +1 -1
- package/dist/pages/review/constants.js.map +1 -1
- package/dist/pages/review/referralStatusRedesign.js +1 -1
- package/dist/pages/review/referralStatusRedesign.js.map +1 -1
- package/dist/pages/supporting-info/SupportingInfo.js +0 -3
- package/dist/pages/supporting-info/SupportingInfo.js.map +1 -1
- package/dist/pages/supporting-info/SupportingInfo.scss +2 -3
- package/dist/pages/supporting-info/__tests__/SupportingInfo.test.js +17 -17
- package/dist/pages/supporting-info/__tests__/SupportingInfo.test.js.map +1 -1
- package/dist/pages/supporting-info/__tests__/data.js +8 -8
- package/dist/pages/supporting-info/__tests__/data.js.map +1 -1
- package/dist/reportWebVitals.js.map +1 -1
- package/dist/setupTests.js.map +1 -1
- package/dist/styles/mixins.scss +46 -39
- package/dist/styles/variables.scss +5 -4
- package/dist/utils/__tests__/addHttpIfNeeded.test.js +6 -6
- package/dist/utils/__tests__/addHttpIfNeeded.test.js.map +1 -1
- package/dist/utils/__tests__/attachmentUtils.test.js.map +1 -1
- package/dist/utils/__tests__/canChangeHoldReason.test.js.map +1 -1
- package/dist/utils/__tests__/checkRoles.test.js +15 -15
- package/dist/utils/__tests__/checkRoles.test.js.map +1 -1
- package/dist/utils/attachmentUtils.js.map +1 -1
- package/dist/utils/canAccept.js +4 -4
- package/dist/utils/canAccept.js.map +1 -1
- package/dist/utils/canChangeHoldReason.js +1 -1
- package/dist/utils/canChangeHoldReason.js.map +1 -1
- package/dist/utils/canHoldForReview.js +4 -4
- package/dist/utils/canHoldForReview.js.map +1 -1
- package/dist/utils/canReject.js.map +1 -1
- package/dist/utils/checkRoles.js +7 -7
- package/dist/utils/checkRoles.js.map +1 -1
- package/dist/utils/getProgramServicesPayload.js +1 -1
- package/dist/utils/getProgramServicesPayload.js.map +1 -1
- package/dist/utils/handleDraftSaveResponse.js.map +1 -1
- package/dist/utils/hasUserRole.js.map +1 -1
- package/dist/utils/isReferralForwarded.js +2 -2
- package/dist/utils/isReferralForwarded.js.map +1 -1
- package/dist/utils/referralToConsent.js +1 -1
- package/dist/utils/referralToConsent.js.map +1 -1
- package/dist/utils/useDebounce.js +1 -1
- package/dist/utils/useDebounce.js.map +1 -1
- package/dist/utils/validateCostAmount.js.map +1 -1
- package/dist/utils/validateUnitAmount.js.map +1 -1
- package/package.json +7 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCreateReferrals.test.js","names":["renderHook","act","useCreateReferrals","useAppCreateReferralContext","useCreateRecord","useUpdateRecord","coreApi","jest","mock","fn","setData","data","type","deleteRecord","deleteFile","findRecord","populateRelationship","setRelationship","query","uploadFile","CALLBACKS","notify","error","referrals","persistedAttachments","pendingAttachments","case","undefined","id","state","paymentAuthForm","amount_requested","service_start","service_end","description","programs","provider","licensed","sendingProvider","network","features","nh_consent","service","primaryWorker","describe","mockDispatch","DRAFT_REFERRAL_ID","CASE_ID","NETWORK_ID","SENDING_PROVIDER_ID","SERVICE_AUTHORIZATION_ID","FUNDED_PROGRAM_ID","FEE_SCHEDULE_ID","createBaseReferral","overrides","arguments","length","setupMocks","mockReturnValue","dispatch","currentEmployee","formResponses","person","formSubmissionId","assistanceRequestId","screeningId","createRecord","mockResolvedValue","updateRecord","buildRecordResponse","queuedPersistedAttachment","filename","content_type","createDraftReferralWithRemovableAttachment","removablePersistedAttachments","service_authorization","fee_schedule_program","authorization_required","createExistingDraftReferral","is_grouped","receiving_program","receiving_provider","receiving_network","sending_provider","sending_network","createFundedProgram","fee_schedule","payment_type","submitDraftUpdate","draft","result","response","current","firstCallOrder","mockFn","expect","toHaveBeenCalled","invocationCallOrder","mockRecordHooks","hook","handlers","methodName","mockImplementation","defaultTo","value","fallback","createRecordMock","setupDraftContext","draftReferral","createDefaultOldCase","service_type","createDefaultOldReferrals","setupDraftCoreApiMocks","_ref","oldCase","oldReferrals","insurance","queryResponses","referral","model","Promise","resolve","status","setupDraftUpdateMocks","_ref2","updatedCase","updatedReferral","createdReferral","createdServiceAuthorization","updatedServiceAuthorization","resolvedOldCase","resolvedOldReferrals","mockCreateReferral","mockCreateServiceAuthorization","mockUpdateCase","mockUpdateReferral","mockUpdateServiceAuthorization","beforeEach","clearAllMocks","it","createReferrals","toHaveProperty","mockCreateCase","toEqual","cases","referralIndex","shippingDetail","index","sent","caseId","attachmentStatus","attachmentErrors","referralsToConsent","programNames","serviceName","setupCreateRecordMocks","someReferrals","referralsFailed","referralsWithNeeds","client_need","toHaveBeenCalledWith","objectContaining","person_conditions","pendingFile","name","tempId","file","preview","not","newFile","referralWithMixedAttachments","path","attachableDocuments","attached","document","title","relationshipModel","toHaveBeenCalledTimes","anything","icd10_code","requester","requested_unit_amount","clinical_modifications","toBeLessThan","requested_cents","toContain","auto_authorizes","mockRejectedValue","Error","toBe","referralWithPendingAttachment","toMatchObject","operation","message"],"sources":["../../../src/hooks/__tests__/useCreateReferrals.test.js"],"sourcesContent":["import { renderHook, act } from '@testing-library/react-hooks';\nimport useCreateReferrals from '../useCreateReferrals';\nimport { useAppCreateReferralContext } from '../../context/AppCreateReferralProvider';\nimport { useCreateRecord, useUpdateRecord } from '../../api/ApiHooks';\nimport { coreApi } from '../../api/config';\n\njest.mock('../../context/AppCreateReferralProvider', () => ({\n useAppCreateReferralContext: jest.fn(),\n setData: (data) => ({ type: 'set', data }),\n}));\n\njest.mock('../../api/ApiHooks', () => ({\n useCreateRecord: jest.fn(),\n useUpdateRecord: jest.fn(),\n}));\n\njest.mock('../../api/config', () => ({\n coreApi: {\n deleteRecord: jest.fn(),\n deleteFile: jest.fn(),\n findRecord: jest.fn(),\n populateRelationship: jest.fn(),\n setRelationship: jest.fn(),\n query: jest.fn(),\n uploadFile: jest.fn(),\n },\n CALLBACKS: {\n notify: {\n error: jest.fn(),\n },\n },\n}));\n\nconst referrals = [\n {\n persistedAttachments: [],\n pendingAttachments: [],\n case: undefined,\n id: undefined,\n state: undefined,\n paymentAuthForm: { amount_requested: null, service_start: null, service_end: null },\n description: 'Test Referral',\n programs: [{ id: 'program1', provider: { id: 'provider1', licensed: true } }],\n sendingProvider: { id: 'provider2' },\n network: { id: 'network1', features: { nh_consent: true } },\n service: { id: 'service1' },\n primaryWorker: { id: \"primary-worker-id\" },\n },\n];\n\ndescribe('useCreateReferrals', () => {\n const mockDispatch = jest.fn();\n const DRAFT_REFERRAL_ID = 'draft-referral-1';\n const CASE_ID = 'case-1';\n const NETWORK_ID = 'network1';\n const SENDING_PROVIDER_ID = 'provider2';\n const SERVICE_AUTHORIZATION_ID = 'service-auth-1';\n const FUNDED_PROGRAM_ID = 'fee-schedule-program-1';\n const FEE_SCHEDULE_ID = 'fee-schedule-1';\n\n const createBaseReferral = (overrides = {}) => ({\n persistedAttachments: [],\n pendingAttachments: [],\n case: undefined,\n id: undefined,\n state: undefined,\n paymentAuthForm: { amount_requested: null, service_start: null, service_end: null },\n programs: [{ id: 'program1', provider: { id: 'provider1', licensed: true } }],\n sendingProvider: { id: 'provider2' },\n network: { id: 'network1', features: { nh_consent: true } },\n service: { id: 'service1' },\n primaryWorker: { id: \"primary-worker-id\" },\n ...overrides,\n });\n\n const setupMocks = (referrals) => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n };\n\n const buildRecordResponse = (data) => ({\n data: {\n data,\n },\n });\n\n const queuedPersistedAttachment = {\n id: 'persisted-file-1',\n filename: 'existing.pdf',\n content_type: 'application/pdf',\n };\n\n const createDraftReferralWithRemovableAttachment = (overrides = {}) => createBaseReferral({\n id: 'draft-referral-1',\n state: 'draft',\n description: 'Draft referral with removed file',\n removablePersistedAttachments: [queuedPersistedAttachment],\n case: {\n id: 'case-1',\n service_authorization: {\n id: 'service-auth-1',\n },\n },\n programs: [{\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n authorization_required: false,\n },\n }],\n ...overrides,\n });\n\n const createExistingDraftReferral = (overrides = {}) => ({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n is_grouped: false,\n receiving_program: { id: 'old-program' },\n receiving_provider: { id: 'old-provider' },\n receiving_network: { id: NETWORK_ID },\n sending_provider: { id: SENDING_PROVIDER_ID },\n sending_network: { id: NETWORK_ID },\n ...overrides,\n });\n\n const createFundedProgram = (overrides = {}) => ({\n id: 'funded-program',\n provider: { id: 'funded-provider', licensed: true },\n fee_schedule_program: {\n id: FUNDED_PROGRAM_ID,\n authorization_required: true,\n fee_schedule: { id: FEE_SCHEDULE_ID },\n payment_type: 'unit_based',\n },\n ...overrides,\n });\n\n const submitDraftUpdate = async ({ draft = false } = {}) => {\n const { result } = renderHook(() => useCreateReferrals());\n let response;\n\n await act(async () => {\n response = await result.current({ draft });\n });\n\n return response;\n };\n\n // Jest records a global invocation counter per call, which lets us assert the ordering of\n // requests issued through separate mocks without relying on timing.\n const firstCallOrder = (mockFn) => {\n expect(mockFn).toHaveBeenCalled();\n return mockFn.mock.invocationCallOrder[0];\n };\n\n const mockRecordHooks = (hook, handlers, methodName) => {\n hook.mockImplementation((type) => ({\n [methodName]: handlers[type] || jest.fn().mockResolvedValue(buildRecordResponse({})),\n }));\n };\n\n const defaultTo = (value, fallback) => (\n value === undefined ? fallback : value\n );\n\n const createRecordMock = (data) => (\n jest.fn().mockResolvedValue(buildRecordResponse(defaultTo(data, {})))\n );\n\n const setupDraftContext = (draftReferral) => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals: [draftReferral],\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n };\n\n const createDefaultOldCase = (draftReferral) => ({\n id: draftReferral.case.id,\n description: 'Original draft referral',\n service_type: { id: draftReferral.service.id },\n provider: { id: draftReferral.sendingProvider.id },\n network: { id: draftReferral.network.id },\n service_authorization: draftReferral.case.service_authorization,\n });\n\n const createDefaultOldReferrals = (draftReferral) => [createExistingDraftReferral({\n id: draftReferral.id,\n receiving_program: { id: draftReferral.programs[0].id },\n receiving_provider: { id: draftReferral.programs[0].provider.id },\n receiving_network: { id: draftReferral.network.id },\n sending_provider: { id: draftReferral.sendingProvider.id },\n sending_network: { id: draftReferral.network.id },\n })];\n\n const setupDraftCoreApiMocks = ({ oldCase, oldReferrals, insurance }) => {\n const queryResponses = {\n referral: oldReferrals,\n insurance: [defaultTo(insurance, { id: 'insurance-1' })],\n };\n\n coreApi.findRecord.mockResolvedValue(buildRecordResponse(oldCase));\n coreApi.query.mockImplementation((model) => (\n Promise.resolve(buildRecordResponse(defaultTo(queryResponses[model], [])))\n ));\n coreApi.deleteRecord.mockResolvedValue({ status: 204 });\n };\n\n const setupDraftUpdateMocks = ({\n draftReferral,\n oldCase,\n oldReferrals,\n updatedCase,\n updatedReferral,\n createdReferral,\n createdServiceAuthorization,\n updatedServiceAuthorization,\n insurance,\n }) => {\n const resolvedOldCase = defaultTo(oldCase, createDefaultOldCase(draftReferral));\n const resolvedOldReferrals = defaultTo(oldReferrals, createDefaultOldReferrals(draftReferral));\n\n setupDraftContext(draftReferral);\n\n const mockCreateReferral = createRecordMock(createdReferral);\n const mockCreateServiceAuthorization = createRecordMock(createdServiceAuthorization);\n mockRecordHooks(useCreateRecord, {\n referral: mockCreateReferral,\n service_authorization: mockCreateServiceAuthorization,\n }, 'createRecord');\n\n const mockUpdateCase = createRecordMock(updatedCase);\n const mockUpdateReferral = createRecordMock(updatedReferral);\n const mockUpdateServiceAuthorization = createRecordMock(updatedServiceAuthorization);\n mockRecordHooks(useUpdateRecord, {\n case: mockUpdateCase,\n referral: mockUpdateReferral,\n service_authorization: mockUpdateServiceAuthorization,\n }, 'updateRecord');\n\n setupDraftCoreApiMocks({\n oldCase: resolvedOldCase,\n oldReferrals: resolvedOldReferrals,\n insurance,\n });\n\n return {\n mockCreateReferral,\n mockCreateServiceAuthorization,\n mockUpdateCase,\n mockUpdateReferral,\n mockUpdateServiceAuthorization,\n };\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n coreApi.deleteFile.mockResolvedValue({});\n coreApi.deleteRecord.mockResolvedValue({});\n coreApi.findRecord.mockResolvedValue({ data: { data: { id: 'case-1' } } });\n coreApi.setRelationship.mockResolvedValue({});\n coreApi.uploadFile.mockResolvedValue({});\n coreApi.query.mockResolvedValue({ data: { data: [] } });\n });\n\n it('should validate response structure no matters the result', async () => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({ referrals, person: { id: 'person1' }, draft: false });\n expect(response).toHaveProperty('cases');\n expect(response).toHaveProperty('referrals');\n expect(response).toHaveProperty('shippingDetail');\n });\n });\n\n\n it('should create all referrals successfully', async () => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n const mockCreateCase = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'case1', description: 'Test Case' },\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'referral1', state: 'sent' },\n },\n });\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { createRecord: mockCreateCase };\n } else if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn() };\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({ referrals, person: { id: 'person1' }, draft: false });\n expect(response).toEqual({\n cases: [{ id: 'case1', description: 'Test Case' }],\n referrals: [{ id: 'referral1', state: 'sent', referralIndex: 0 }],\n shippingDetail: [{ id: 'referral-result-0', index: 0, sent: true, error: null, caseId: \"case1\", attachmentStatus: 'not_requested', attachmentErrors: [] }],\n referralsToConsent: [{\n programNames: ['Unknown Program'],\n referrals: ['referral1'],\n serviceName: 'Unknown Service',\n }],\n });\n });\n });\n\n const setupCreateRecordMocks = () => {\n const mockCreateCase = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'case1', description: 'Test Case' },\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'referral1', state: 'sent' },\n },\n });\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { createRecord: mockCreateCase };\n } else if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn() };\n });\n };\n\n it('should create SOME referrals', async () => {\n const someReferrals = [\n createBaseReferral({ description: 'Test Referral' }),\n createBaseReferral({\n description: null,\n programs: [{ id: 'program2', provider: { id: 'provider1', licensed: true } }],\n service: { id: 'service2' }\n }),\n ];\n\n setupMocks(someReferrals);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({ referrals: someReferrals, person: { id: 'person1' }, draft: false });\n expect(response).toEqual(\n {\n cases: [\n { id: 'case1', description: 'Test Case' }\n ],\n referrals: [\n { id: 'referral1', state: 'sent', referralIndex: 0 }\n ],\n shippingDetail: [\n { id: 'referral-result-0', index: 0, sent: true, error: null, caseId: \"case1\", attachmentStatus: 'not_requested', attachmentErrors: [] },\n {\n id: 'referral-result-1',\n index: 1,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n }\n ],\n referralsToConsent: [{\n programNames: ['Unknown Program'],\n referrals: ['referral1'],\n serviceName: 'Unknown Service',\n }],\n });\n });\n });\n\n it('should FAIL all referrals', async () => {\n const referralsFailed = [\n createBaseReferral({ description: null }),\n createBaseReferral({\n description: null,\n programs: [{ id: 'program2', provider: { id: 'provider1', licensed: true } }],\n service: { id: 'service2' }\n }),\n ];\n\n setupMocks(referralsFailed);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({ referrals: referralsFailed, person: { id: 'person1' }, draft: false });\n expect(response).toEqual(\n {\n cases: [],\n referrals: [],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n {\n id: 'referral-result-1',\n index: 1,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n }\n ],\n referralsToConsent: [],\n });\n });\n });\n\n it('should not create referrals to consent when nh_consent is false', async () => {\n const referrals = [\n createBaseReferral({\n description: 'Test Referral',\n network: { id: 'network1', features: { nh_consent: false } }\n }),\n ];\n\n setupMocks(referrals);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({ referrals, person: { id: 'person1' }, draft: false });\n expect(response).toEqual({\n cases: [{ id: 'case1', description: 'Test Case' }],\n referrals: [{ id: 'referral1', state: 'sent', referralIndex: 0 }],\n shippingDetail: [{ id: 'referral-result-0', index: 0, sent: true, error: null, caseId: \"case1\", attachmentStatus: 'not_requested', attachmentErrors: [] }],\n referralsToConsent: [],\n });\n });\n });\n\n it('should include associated needs when creating draft referrals', async () => {\n const referralsWithNeeds = [\n createBaseReferral({\n description: 'Draft referral with needs',\n client_need: ['need-1', 'need-2'],\n }),\n ];\n\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals: referralsWithNeeds,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n const mockCreateCase = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'case1', description: 'Draft Case' },\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'referral1', state: 'draft' },\n },\n });\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { createRecord: mockCreateCase };\n } else if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }) };\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: true });\n });\n\n expect(mockCreateCase).toHaveBeenCalledWith(expect.objectContaining({\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n }));\n\n expect(mockCreateReferral).toHaveBeenCalledWith(expect.objectContaining({\n state: 'draft',\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n }));\n });\n\n it('deletes queued persisted attachments and uploads new ones when saving an existing draft', async () => {\n const pendingFile = { name: 'new.pdf', type: 'application/pdf' };\n const draftReferral = createDraftReferralWithRemovableAttachment({\n case: {\n id: 'case-1',\n service_authorization: null,\n },\n pendingAttachments: [\n {\n tempId: 'temp-file-1',\n file: pendingFile,\n preview: 'blob:new-preview',\n },\n ],\n });\n\n setupDraftUpdateMocks({\n draftReferral,\n updatedCase: { id: 'case-1' },\n updatedReferral: { id: 'draft-referral-1', state: 'draft' },\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: true });\n });\n\n expect(coreApi.deleteFile).toHaveBeenCalledWith('case', 'case-1', 'persisted-file-1');\n expect(coreApi.uploadFile).toHaveBeenCalledWith('case', 'case-1', pendingFile);\n });\n\n it('does not delete queued persisted attachments when saving non-draft referrals', async () => {\n const referral = createBaseReferral({\n id: 'referral-1',\n state: 'open',\n removablePersistedAttachments: [queuedPersistedAttachment],\n case: {\n id: 'case-1',\n },\n programs: [{\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n authorization_required: false,\n },\n }],\n });\n\n setupMocks([referral]);\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ referrals: [referral], person: { id: 'person1' }, draft: false });\n });\n\n expect(coreApi.deleteFile).not.toHaveBeenCalled();\n });\n\n it('does not delete draft attachments when no removable persisted attachment ids are present', async () => {\n const draftReferral = createDraftReferralWithRemovableAttachment({\n removablePersistedAttachments: [\n {\n filename: 'existing.pdf',\n content_type: 'application/pdf',\n },\n ],\n });\n\n setupDraftUpdateMocks({\n draftReferral,\n updatedCase: { id: 'case-1' },\n updatedReferral: { id: 'draft-referral-1', state: 'draft' },\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: true });\n });\n\n expect(coreApi.deleteFile).not.toHaveBeenCalled();\n });\n\n it('uploads only new attachments and skips persisted draft documents', async () => {\n const newFile = { name: 'new.pdf', type: 'application/pdf' };\n const referralWithMixedAttachments = [\n createBaseReferral({\n description: 'Referral with mixed attachments',\n persistedAttachments: [\n {\n id: 'persisted-file-1',\n filename: 'existing.pdf',\n content_type: 'application/pdf',\n path: '/files/existing.pdf',\n },\n ],\n pendingAttachments: [\n {\n tempId: 'temp-file-1',\n file: newFile,\n preview: 'blob:new-preview',\n },\n ],\n attachableDocuments: [\n {\n attached: true,\n document: {\n id: 'existing-doc-1',\n title: 'Existing Document',\n },\n },\n ],\n }),\n ];\n\n setupMocks(referralWithMixedAttachments);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ referrals: referralWithMixedAttachments, person: { id: 'person1' }, draft: false });\n });\n\n expect(coreApi.setRelationship).toHaveBeenCalledWith(\n 'case',\n 'case1',\n { relationshipModel: 'file_upload', value: ['existing-doc-1'] },\n );\n expect(coreApi.uploadFile).toHaveBeenCalledTimes(1);\n expect(coreApi.uploadFile).toHaveBeenCalledWith('case', 'case1', newFile);\n });\n\n it('should update an existing draft referral when replacing the selected program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated draft referral',\n case: { id: CASE_ID },\n programs: [{\n id: 'new-program',\n provider: { id: 'new-provider', licensed: true },\n }],\n });\n\n const {\n mockCreateReferral,\n mockUpdateReferral,\n mockCreateServiceAuthorization,\n } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'sent' },\n });\n\n await submitDraftUpdate();\n\n // No authorization is involved, so the frontend still owns the final state.\n expect(mockUpdateReferral).toHaveBeenCalledWith(DRAFT_REFERRAL_ID, expect.objectContaining({\n state: 'sent',\n receiving_program: 'new-program',\n receiving_provider: 'new-provider',\n }));\n expect(mockCreateServiceAuthorization).not.toHaveBeenCalled();\n expect(coreApi.deleteRecord).not.toHaveBeenCalledWith('referral', expect.anything());\n expect(mockCreateReferral).not.toHaveBeenCalled();\n });\n\n it('should update authorization and recipient when sending a funded draft referral', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 12,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: { id: 'icd10-1' },\n },\n programs: [createFundedProgram({\n id: 'program1',\n provider: { id: 'new-provider', licensed: true },\n })],\n });\n\n const { mockUpdateReferral, mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n })],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate();\n\n expect(mockUpdateServiceAuthorization).toHaveBeenCalledWith(SERVICE_AUTHORIZATION_ID, expect.objectContaining({\n state: 'requested',\n fee_schedule_program: FUNDED_PROGRAM_ID,\n requester: 'employee1',\n insurance: 'insurance-1',\n person: 'person1',\n requested_unit_amount: 12,\n clinical_modifications: ['icd10-1'],\n }));\n expect(mockUpdateReferral).toHaveBeenCalledWith(DRAFT_REFERRAL_ID, expect.objectContaining({\n receiving_provider: 'new-provider',\n }));\n // Core moves the referral out of draft when the authorization is requested, so the referral\n // update must not also write the final state.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n // The recipient change is only accepted while the referral is still in draft.\n expect(firstCallOrder(mockUpdateReferral))\n .toBeLessThan(firstCallOrder(mockUpdateServiceAuthorization));\n });\n\n it('should not resend draft state when saving an existing draft authorization', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral description',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 12,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: { id: 'icd10-1' },\n },\n programs: [createFundedProgram({\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n })],\n });\n\n const { mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n receiving_provider: { id: 'provider1' },\n })],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate({ draft: true });\n\n expect(mockUpdateServiceAuthorization).toHaveBeenCalledWith(\n SERVICE_AUTHORIZATION_ID,\n expect.not.objectContaining({ state: 'draft' }),\n );\n });\n\n it('should send cost-based draft authorization amounts as integer cents', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated cost-based funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 150.36,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [createFundedProgram({\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n id: FUNDED_PROGRAM_ID,\n authorization_required: true,\n fee_schedule: { id: FEE_SCHEDULE_ID },\n payment_type: 'cost_based_reimbursement',\n },\n })],\n });\n\n const { mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n receiving_provider: { id: 'provider1' },\n })],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate({ draft: true });\n\n expect(mockUpdateServiceAuthorization).toHaveBeenCalledWith(\n SERVICE_AUTHORIZATION_ID,\n expect.objectContaining({ requested_cents: 15036 }),\n );\n });\n\n it('should not change the service for a draft referral with an existing authorization', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 1100,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [createFundedProgram({\n id: 'new-funded-program',\n provider: { id: 'new-funded-provider', licensed: true },\n })],\n });\n\n const {\n mockUpdateCase,\n mockUpdateReferral,\n mockUpdateServiceAuthorization,\n } = setupDraftUpdateMocks({\n draftReferral,\n oldCase: {\n ...createDefaultOldCase(draftReferral),\n service_type: { id: 'old-service' },\n },\n oldReferrals: [createExistingDraftReferral({\n receiving_program: { id: 'old-funded-program' },\n })],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n const response = await submitDraftUpdate({ draft: true });\n\n expect(response.shippingDetail[0].error).toContain(\n 'This draft referral already has an authorization request. To change the program, create a new draft referral.',\n );\n expect(coreApi.deleteRecord).not.toHaveBeenCalledWith('service_authorization', SERVICE_AUTHORIZATION_ID);\n expect(mockUpdateCase).not.toHaveBeenCalled();\n expect(mockUpdateServiceAuthorization).not.toHaveBeenCalled();\n expect(mockUpdateReferral).not.toHaveBeenCalled();\n });\n\n it('should create authorization when a draft referral changes to a funded program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 7,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [createFundedProgram()],\n });\n\n const { mockCreateServiceAuthorization, mockUpdateReferral } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'pending_authorization' },\n });\n\n await submitDraftUpdate();\n\n expect(mockCreateServiceAuthorization).toHaveBeenCalledWith(expect.objectContaining({\n case: CASE_ID,\n state: 'requested',\n fee_schedule_program: FUNDED_PROGRAM_ID,\n insurance: 'insurance-1',\n person: 'person1',\n }));\n expect(mockUpdateReferral).toHaveBeenCalledWith(DRAFT_REFERRAL_ID, expect.objectContaining({\n receiving_program: 'funded-program',\n receiving_provider: 'funded-provider',\n }));\n // Core owns the transition once the authorization is requested.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n // The new recipient must be persisted while the referral is still updatable.\n expect(firstCallOrder(mockUpdateReferral))\n .toBeLessThan(firstCallOrder(mockCreateServiceAuthorization));\n });\n\n it('should not remove authorization when a draft referral changes to a non-funded program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated non-funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n programs: [{\n id: 'non-funded-program',\n provider: { id: 'non-funded-provider', licensed: true },\n }],\n });\n\n const { mockUpdateReferral, mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral({\n receiving_program: { id: 'old-funded-program' },\n })],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'sent' },\n });\n\n const response = await submitDraftUpdate();\n\n expect(response.shippingDetail[0].error).toContain(\n 'This draft referral already has an authorization request. To change the program, create a new draft referral.',\n );\n expect(coreApi.deleteRecord).not.toHaveBeenCalledWith('service_authorization', SERVICE_AUTHORIZATION_ID);\n expect(mockUpdateServiceAuthorization).not.toHaveBeenCalled();\n expect(mockUpdateReferral).not.toHaveBeenCalled();\n });\n\n it('should create added referrals with an explicit authorization state after requesting the authorization', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Funded referral with an added program',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 4,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({ id: 'program1', provider: { id: 'provider1', licensed: true } }),\n { id: 'program2', provider: { id: 'provider2', licensed: true } },\n ],\n });\n\n const {\n mockCreateReferral,\n mockUpdateReferral,\n mockCreateServiceAuthorization,\n } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n receiving_provider: { id: 'provider1' },\n })],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n createdReferral: { id: 'created-referral-1', state: 'pending_authorization' },\n });\n\n await submitDraftUpdate();\n\n // Records created after the authorization keep their explicit state: core accepts creating a\n // referral directly in pending_authorization.\n expect(mockCreateReferral).toHaveBeenCalledWith(expect.objectContaining({\n state: 'pending_authorization',\n receiving_program: 'program2',\n receiving_provider: 'provider2',\n }));\n // The state omission applies only to the existing referral.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n expect(firstCallOrder(mockUpdateReferral))\n .toBeLessThan(firstCallOrder(mockCreateServiceAuthorization));\n expect(firstCallOrder(mockCreateServiceAuthorization))\n .toBeLessThan(firstCallOrder(mockCreateReferral));\n });\n\n it('should not force a state on the existing referral for an auto-approving funded program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Auto approving funded referral',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 9,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [createFundedProgram({\n fee_schedule_program: {\n id: FUNDED_PROGRAM_ID,\n authorization_required: true,\n auto_authorizes: true,\n fee_schedule: { id: FEE_SCHEDULE_ID },\n payment_type: 'unit_based',\n },\n })],\n });\n\n const { mockUpdateReferral } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate();\n\n // Core sends auto-approved authorizations straight to 'sent'; hardcoding\n // pending_authorization here would conflict with that.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n });\n\n it('should leave the referral recoverable when the authorization request fails', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Funded referral with a failing authorization',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 7,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [createFundedProgram()],\n });\n\n const {\n mockCreateReferral,\n mockUpdateReferral,\n mockCreateServiceAuthorization,\n } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n mockCreateServiceAuthorization.mockRejectedValue(new Error('Authorization request failed'));\n\n const response = await submitDraftUpdate();\n\n expect(response.shippingDetail[0].sent).toBe(false);\n expect(response.shippingDetail[0].error).toContain('Authorization request failed');\n // The recipient change landed while the referral was still in draft and no state was written,\n // so the referral stays editable and the operation can be retried.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n expect(mockCreateReferral).not.toHaveBeenCalled();\n });\n\n it('creates the referral when a document upload fails', async () => {\n const pendingFile = { name: 'unavailable.pdf', type: 'application/pdf' };\n const referralWithPendingAttachment = [createBaseReferral({\n description: 'Referral with failed attachment',\n pendingAttachments: [{ tempId: 'temp-file-1', file: pendingFile }],\n })];\n setupMocks(referralWithPendingAttachment);\n setupCreateRecordMocks();\n coreApi.uploadFile.mockRejectedValue(new Error('Upload failed'));\n\n const { result } = renderHook(() => useCreateReferrals());\n let response;\n await act(async () => {\n response = await result.current({ referrals: referralWithPendingAttachment, person: { id: 'person1' } });\n });\n\n expect(response.shippingDetail[0]).toMatchObject({\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'failed',\n attachmentErrors: [{ operation: 'upload', name: 'unavailable.pdf', message: 'Upload failed' }],\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useCreateReferrals.test.js","names":["renderHook","act","useCreateReferrals","useAppCreateReferralContext","useCreateRecord","useUpdateRecord","coreApi","jest","mock","fn","setData","data","type","deleteRecord","deleteFile","findRecord","populateRelationship","setRelationship","query","uploadFile","CALLBACKS","notify","error","referrals","persistedAttachments","pendingAttachments","case","undefined","id","state","paymentAuthForm","amount_requested","service_start","service_end","description","programs","provider","licensed","sendingProvider","network","features","nh_consent","service","primaryWorker","describe","mockDispatch","DRAFT_REFERRAL_ID","CASE_ID","NETWORK_ID","SENDING_PROVIDER_ID","SERVICE_AUTHORIZATION_ID","FUNDED_PROGRAM_ID","FEE_SCHEDULE_ID","createBaseReferral","overrides","arguments","length","setupMocks","mockReturnValue","dispatch","currentEmployee","formResponses","person","formSubmissionId","assistanceRequestId","screeningId","createRecord","mockResolvedValue","updateRecord","buildRecordResponse","queuedPersistedAttachment","filename","content_type","createDraftReferralWithRemovableAttachment","removablePersistedAttachments","service_authorization","fee_schedule_program","authorization_required","createExistingDraftReferral","is_grouped","receiving_program","receiving_provider","receiving_network","sending_provider","sending_network","createFundedProgram","fee_schedule","payment_type","submitDraftUpdate","draft","result","response","current","firstCallOrder","mockFn","expect","toHaveBeenCalled","invocationCallOrder","mockRecordHooks","hook","handlers","methodName","mockImplementation","defaultTo","value","fallback","createRecordMock","setupDraftContext","draftReferral","createDefaultOldCase","service_type","createDefaultOldReferrals","setupDraftCoreApiMocks","_ref","oldCase","oldReferrals","insurance","queryResponses","referral","model","Promise","resolve","status","setupDraftUpdateMocks","_ref2","updatedCase","updatedReferral","createdReferral","createdServiceAuthorization","updatedServiceAuthorization","resolvedOldCase","resolvedOldReferrals","mockCreateReferral","mockCreateServiceAuthorization","mockUpdateCase","mockUpdateReferral","mockUpdateServiceAuthorization","beforeEach","clearAllMocks","it","createReferrals","toHaveProperty","mockCreateCase","toEqual","cases","referralIndex","shippingDetail","index","sent","caseId","attachmentStatus","attachmentErrors","referralsToConsent","programNames","serviceName","setupCreateRecordMocks","someReferrals","referralsFailed","referralsWithNeeds","client_need","toHaveBeenCalledWith","objectContaining","person_conditions","pendingFile","name","tempId","file","preview","not","newFile","referralWithMixedAttachments","path","attachableDocuments","attached","document","title","relationshipModel","toHaveBeenCalledTimes","anything","icd10_code","requester","requested_unit_amount","clinical_modifications","toBeLessThan","requested_cents","toContain","auto_authorizes","mockRejectedValue","Error","toBe","referralWithPendingAttachment","toMatchObject","operation","message"],"sources":["../../../src/hooks/__tests__/useCreateReferrals.test.js"],"sourcesContent":["import { renderHook, act } from '@testing-library/react-hooks';\nimport useCreateReferrals from '../useCreateReferrals';\nimport { useAppCreateReferralContext } from '../../context/AppCreateReferralProvider';\nimport { useCreateRecord, useUpdateRecord } from '../../api/ApiHooks';\nimport { coreApi } from '../../api/config';\n\njest.mock('../../context/AppCreateReferralProvider', () => ({\n useAppCreateReferralContext: jest.fn(),\n setData: (data) => ({ type: 'set', data }),\n}));\n\njest.mock('../../api/ApiHooks', () => ({\n useCreateRecord: jest.fn(),\n useUpdateRecord: jest.fn(),\n}));\n\njest.mock('../../api/config', () => ({\n coreApi: {\n deleteRecord: jest.fn(),\n deleteFile: jest.fn(),\n findRecord: jest.fn(),\n populateRelationship: jest.fn(),\n setRelationship: jest.fn(),\n query: jest.fn(),\n uploadFile: jest.fn(),\n },\n CALLBACKS: {\n notify: {\n error: jest.fn(),\n },\n },\n}));\n\nconst referrals = [\n {\n persistedAttachments: [],\n pendingAttachments: [],\n case: undefined,\n id: undefined,\n state: undefined,\n paymentAuthForm: { amount_requested: null, service_start: null, service_end: null },\n description: 'Test Referral',\n programs: [{ id: 'program1', provider: { id: 'provider1', licensed: true } }],\n sendingProvider: { id: 'provider2' },\n network: { id: 'network1', features: { nh_consent: true } },\n service: { id: 'service1' },\n primaryWorker: { id: 'primary-worker-id' },\n },\n];\n\ndescribe('useCreateReferrals', () => {\n const mockDispatch = jest.fn();\n const DRAFT_REFERRAL_ID = 'draft-referral-1';\n const CASE_ID = 'case-1';\n const NETWORK_ID = 'network1';\n const SENDING_PROVIDER_ID = 'provider2';\n const SERVICE_AUTHORIZATION_ID = 'service-auth-1';\n const FUNDED_PROGRAM_ID = 'fee-schedule-program-1';\n const FEE_SCHEDULE_ID = 'fee-schedule-1';\n\n const createBaseReferral = (overrides = {}) => ({\n persistedAttachments: [],\n pendingAttachments: [],\n case: undefined,\n id: undefined,\n state: undefined,\n paymentAuthForm: { amount_requested: null, service_start: null, service_end: null },\n programs: [{ id: 'program1', provider: { id: 'provider1', licensed: true } }],\n sendingProvider: { id: 'provider2' },\n network: { id: 'network1', features: { nh_consent: true } },\n service: { id: 'service1' },\n primaryWorker: { id: 'primary-worker-id' },\n ...overrides,\n });\n\n const setupMocks = (referrals) => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n };\n\n const buildRecordResponse = (data) => ({\n data: {\n data,\n },\n });\n\n const queuedPersistedAttachment = {\n id: 'persisted-file-1',\n filename: 'existing.pdf',\n content_type: 'application/pdf',\n };\n\n const createDraftReferralWithRemovableAttachment = (overrides = {}) =>\n createBaseReferral({\n id: 'draft-referral-1',\n state: 'draft',\n description: 'Draft referral with removed file',\n removablePersistedAttachments: [queuedPersistedAttachment],\n case: {\n id: 'case-1',\n service_authorization: {\n id: 'service-auth-1',\n },\n },\n programs: [\n {\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n authorization_required: false,\n },\n },\n ],\n ...overrides,\n });\n\n const createExistingDraftReferral = (overrides = {}) => ({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n is_grouped: false,\n receiving_program: { id: 'old-program' },\n receiving_provider: { id: 'old-provider' },\n receiving_network: { id: NETWORK_ID },\n sending_provider: { id: SENDING_PROVIDER_ID },\n sending_network: { id: NETWORK_ID },\n ...overrides,\n });\n\n const createFundedProgram = (overrides = {}) => ({\n id: 'funded-program',\n provider: { id: 'funded-provider', licensed: true },\n fee_schedule_program: {\n id: FUNDED_PROGRAM_ID,\n authorization_required: true,\n fee_schedule: { id: FEE_SCHEDULE_ID },\n payment_type: 'unit_based',\n },\n ...overrides,\n });\n\n const submitDraftUpdate = async ({ draft = false } = {}) => {\n const { result } = renderHook(() => useCreateReferrals());\n let response;\n\n await act(async () => {\n response = await result.current({ draft });\n });\n\n return response;\n };\n\n // Jest records a global invocation counter per call, which lets us assert the ordering of\n // requests issued through separate mocks without relying on timing.\n const firstCallOrder = (mockFn) => {\n expect(mockFn).toHaveBeenCalled();\n return mockFn.mock.invocationCallOrder[0];\n };\n\n const mockRecordHooks = (hook, handlers, methodName) => {\n hook.mockImplementation((type) => ({\n [methodName]: handlers[type] || jest.fn().mockResolvedValue(buildRecordResponse({})),\n }));\n };\n\n const defaultTo = (value, fallback) => (value === undefined ? fallback : value);\n\n const createRecordMock = (data) =>\n jest.fn().mockResolvedValue(buildRecordResponse(defaultTo(data, {})));\n\n const setupDraftContext = (draftReferral) => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals: [draftReferral],\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n };\n\n const createDefaultOldCase = (draftReferral) => ({\n id: draftReferral.case.id,\n description: 'Original draft referral',\n service_type: { id: draftReferral.service.id },\n provider: { id: draftReferral.sendingProvider.id },\n network: { id: draftReferral.network.id },\n service_authorization: draftReferral.case.service_authorization,\n });\n\n const createDefaultOldReferrals = (draftReferral) => [\n createExistingDraftReferral({\n id: draftReferral.id,\n receiving_program: { id: draftReferral.programs[0].id },\n receiving_provider: { id: draftReferral.programs[0].provider.id },\n receiving_network: { id: draftReferral.network.id },\n sending_provider: { id: draftReferral.sendingProvider.id },\n sending_network: { id: draftReferral.network.id },\n }),\n ];\n\n const setupDraftCoreApiMocks = ({ oldCase, oldReferrals, insurance }) => {\n const queryResponses = {\n referral: oldReferrals,\n insurance: [defaultTo(insurance, { id: 'insurance-1' })],\n };\n\n coreApi.findRecord.mockResolvedValue(buildRecordResponse(oldCase));\n coreApi.query.mockImplementation((model) =>\n Promise.resolve(buildRecordResponse(defaultTo(queryResponses[model], []))),\n );\n coreApi.deleteRecord.mockResolvedValue({ status: 204 });\n };\n\n const setupDraftUpdateMocks = ({\n draftReferral,\n oldCase,\n oldReferrals,\n updatedCase,\n updatedReferral,\n createdReferral,\n createdServiceAuthorization,\n updatedServiceAuthorization,\n insurance,\n }) => {\n const resolvedOldCase = defaultTo(oldCase, createDefaultOldCase(draftReferral));\n const resolvedOldReferrals = defaultTo(oldReferrals, createDefaultOldReferrals(draftReferral));\n\n setupDraftContext(draftReferral);\n\n const mockCreateReferral = createRecordMock(createdReferral);\n const mockCreateServiceAuthorization = createRecordMock(createdServiceAuthorization);\n mockRecordHooks(\n useCreateRecord,\n {\n referral: mockCreateReferral,\n service_authorization: mockCreateServiceAuthorization,\n },\n 'createRecord',\n );\n\n const mockUpdateCase = createRecordMock(updatedCase);\n const mockUpdateReferral = createRecordMock(updatedReferral);\n const mockUpdateServiceAuthorization = createRecordMock(updatedServiceAuthorization);\n mockRecordHooks(\n useUpdateRecord,\n {\n case: mockUpdateCase,\n referral: mockUpdateReferral,\n service_authorization: mockUpdateServiceAuthorization,\n },\n 'updateRecord',\n );\n\n setupDraftCoreApiMocks({\n oldCase: resolvedOldCase,\n oldReferrals: resolvedOldReferrals,\n insurance,\n });\n\n return {\n mockCreateReferral,\n mockCreateServiceAuthorization,\n mockUpdateCase,\n mockUpdateReferral,\n mockUpdateServiceAuthorization,\n };\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n coreApi.deleteFile.mockResolvedValue({});\n coreApi.deleteRecord.mockResolvedValue({});\n coreApi.findRecord.mockResolvedValue({ data: { data: { id: 'case-1' } } });\n coreApi.setRelationship.mockResolvedValue({});\n coreApi.uploadFile.mockResolvedValue({});\n coreApi.query.mockResolvedValue({ data: { data: [] } });\n });\n\n it('should validate response structure no matters the result', async () => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toHaveProperty('cases');\n expect(response).toHaveProperty('referrals');\n expect(response).toHaveProperty('shippingDetail');\n });\n });\n\n it('should create all referrals successfully', async () => {\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n const mockCreateCase = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'case1', description: 'Test Case' },\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'referral1', state: 'sent' },\n },\n });\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { createRecord: mockCreateCase };\n } else if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn() };\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toEqual({\n cases: [{ id: 'case1', description: 'Test Case' }],\n referrals: [{ id: 'referral1', state: 'sent', referralIndex: 0 }],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n ],\n referralsToConsent: [\n {\n programNames: ['Unknown Program'],\n referrals: ['referral1'],\n serviceName: 'Unknown Service',\n },\n ],\n });\n });\n });\n\n const setupCreateRecordMocks = () => {\n const mockCreateCase = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'case1', description: 'Test Case' },\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'referral1', state: 'sent' },\n },\n });\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { createRecord: mockCreateCase };\n } else if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn() };\n });\n };\n\n it('should create SOME referrals', async () => {\n const someReferrals = [\n createBaseReferral({ description: 'Test Referral' }),\n createBaseReferral({\n description: null,\n programs: [{ id: 'program2', provider: { id: 'provider1', licensed: true } }],\n service: { id: 'service2' },\n }),\n ];\n\n setupMocks(someReferrals);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals: someReferrals,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toEqual({\n cases: [{ id: 'case1', description: 'Test Case' }],\n referrals: [{ id: 'referral1', state: 'sent', referralIndex: 0 }],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n {\n id: 'referral-result-1',\n index: 1,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n ],\n referralsToConsent: [\n {\n programNames: ['Unknown Program'],\n referrals: ['referral1'],\n serviceName: 'Unknown Service',\n },\n ],\n });\n });\n });\n\n it('should FAIL all referrals', async () => {\n const referralsFailed = [\n createBaseReferral({ description: null }),\n createBaseReferral({\n description: null,\n programs: [{ id: 'program2', provider: { id: 'provider1', licensed: true } }],\n service: { id: 'service2' },\n }),\n ];\n\n setupMocks(referralsFailed);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals: referralsFailed,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toEqual({\n cases: [],\n referrals: [],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n {\n id: 'referral-result-1',\n index: 1,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n ],\n referralsToConsent: [],\n });\n });\n });\n\n it('should not create referrals to consent when nh_consent is false', async () => {\n const referrals = [\n createBaseReferral({\n description: 'Test Referral',\n network: { id: 'network1', features: { nh_consent: false } },\n }),\n ];\n\n setupMocks(referrals);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n const createReferrals = result.current;\n const response = await createReferrals({\n referrals,\n person: { id: 'person1' },\n draft: false,\n });\n expect(response).toEqual({\n cases: [{ id: 'case1', description: 'Test Case' }],\n referrals: [{ id: 'referral1', state: 'sent', referralIndex: 0 }],\n shippingDetail: [\n {\n id: 'referral-result-0',\n index: 0,\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'not_requested',\n attachmentErrors: [],\n },\n ],\n referralsToConsent: [],\n });\n });\n });\n\n it('should include associated needs when creating draft referrals', async () => {\n const referralsWithNeeds = [\n createBaseReferral({\n description: 'Draft referral with needs',\n client_need: ['need-1', 'need-2'],\n }),\n ];\n\n useAppCreateReferralContext.mockReturnValue({\n dispatch: mockDispatch,\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals: referralsWithNeeds,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n },\n });\n\n const mockCreateCase = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'case1', description: 'Draft Case' },\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue({\n data: {\n data: { id: 'referral1', state: 'draft' },\n },\n });\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { createRecord: mockCreateCase };\n } else if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn().mockResolvedValue({ data: { data: {} } }) };\n });\n\n useUpdateRecord.mockReturnValue({\n updateRecord: jest.fn().mockResolvedValue({ data: { data: {} } }),\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: true });\n });\n\n expect(mockCreateCase).toHaveBeenCalledWith(\n expect.objectContaining({\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n }),\n );\n\n expect(mockCreateReferral).toHaveBeenCalledWith(\n expect.objectContaining({\n state: 'draft',\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n }),\n );\n });\n\n it('deletes queued persisted attachments and uploads new ones when saving an existing draft', async () => {\n const pendingFile = { name: 'new.pdf', type: 'application/pdf' };\n const draftReferral = createDraftReferralWithRemovableAttachment({\n case: {\n id: 'case-1',\n service_authorization: null,\n },\n pendingAttachments: [\n {\n tempId: 'temp-file-1',\n file: pendingFile,\n preview: 'blob:new-preview',\n },\n ],\n });\n\n setupDraftUpdateMocks({\n draftReferral,\n updatedCase: { id: 'case-1' },\n updatedReferral: { id: 'draft-referral-1', state: 'draft' },\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: true });\n });\n\n expect(coreApi.deleteFile).toHaveBeenCalledWith('case', 'case-1', 'persisted-file-1');\n expect(coreApi.uploadFile).toHaveBeenCalledWith('case', 'case-1', pendingFile);\n });\n\n it('does not delete queued persisted attachments when saving non-draft referrals', async () => {\n const referral = createBaseReferral({\n id: 'referral-1',\n state: 'open',\n removablePersistedAttachments: [queuedPersistedAttachment],\n case: {\n id: 'case-1',\n },\n programs: [\n {\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n authorization_required: false,\n },\n },\n ],\n });\n\n setupMocks([referral]);\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ referrals: [referral], person: { id: 'person1' }, draft: false });\n });\n\n expect(coreApi.deleteFile).not.toHaveBeenCalled();\n });\n\n it('does not delete draft attachments when no removable persisted attachment ids are present', async () => {\n const draftReferral = createDraftReferralWithRemovableAttachment({\n removablePersistedAttachments: [\n {\n filename: 'existing.pdf',\n content_type: 'application/pdf',\n },\n ],\n });\n\n setupDraftUpdateMocks({\n draftReferral,\n updatedCase: { id: 'case-1' },\n updatedReferral: { id: 'draft-referral-1', state: 'draft' },\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({ draft: true });\n });\n\n expect(coreApi.deleteFile).not.toHaveBeenCalled();\n });\n\n it('uploads only new attachments and skips persisted draft documents', async () => {\n const newFile = { name: 'new.pdf', type: 'application/pdf' };\n const referralWithMixedAttachments = [\n createBaseReferral({\n description: 'Referral with mixed attachments',\n persistedAttachments: [\n {\n id: 'persisted-file-1',\n filename: 'existing.pdf',\n content_type: 'application/pdf',\n path: '/files/existing.pdf',\n },\n ],\n pendingAttachments: [\n {\n tempId: 'temp-file-1',\n file: newFile,\n preview: 'blob:new-preview',\n },\n ],\n attachableDocuments: [\n {\n attached: true,\n document: {\n id: 'existing-doc-1',\n title: 'Existing Document',\n },\n },\n ],\n }),\n ];\n\n setupMocks(referralWithMixedAttachments);\n setupCreateRecordMocks();\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current({\n referrals: referralWithMixedAttachments,\n person: { id: 'person1' },\n draft: false,\n });\n });\n\n expect(coreApi.setRelationship).toHaveBeenCalledWith('case', 'case1', {\n relationshipModel: 'file_upload',\n value: ['existing-doc-1'],\n });\n expect(coreApi.uploadFile).toHaveBeenCalledTimes(1);\n expect(coreApi.uploadFile).toHaveBeenCalledWith('case', 'case1', newFile);\n });\n\n it('should update an existing draft referral when replacing the selected program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated draft referral',\n case: { id: CASE_ID },\n programs: [\n {\n id: 'new-program',\n provider: { id: 'new-provider', licensed: true },\n },\n ],\n });\n\n const { mockCreateReferral, mockUpdateReferral, mockCreateServiceAuthorization } =\n setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'sent' },\n });\n\n await submitDraftUpdate();\n\n // No authorization is involved, so the frontend still owns the final state.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.objectContaining({\n state: 'sent',\n receiving_program: 'new-program',\n receiving_provider: 'new-provider',\n }),\n );\n expect(mockCreateServiceAuthorization).not.toHaveBeenCalled();\n expect(coreApi.deleteRecord).not.toHaveBeenCalledWith('referral', expect.anything());\n expect(mockCreateReferral).not.toHaveBeenCalled();\n });\n\n it('should update authorization and recipient when sending a funded draft referral', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 12,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: { id: 'icd10-1' },\n },\n programs: [\n createFundedProgram({\n id: 'program1',\n provider: { id: 'new-provider', licensed: true },\n }),\n ],\n });\n\n const { mockUpdateReferral, mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate();\n\n expect(mockUpdateServiceAuthorization).toHaveBeenCalledWith(\n SERVICE_AUTHORIZATION_ID,\n expect.objectContaining({\n state: 'requested',\n fee_schedule_program: FUNDED_PROGRAM_ID,\n requester: 'employee1',\n insurance: 'insurance-1',\n person: 'person1',\n requested_unit_amount: 12,\n clinical_modifications: ['icd10-1'],\n }),\n );\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.objectContaining({\n receiving_provider: 'new-provider',\n }),\n );\n // Core moves the referral out of draft when the authorization is requested, so the referral\n // update must not also write the final state.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n // The recipient change is only accepted while the referral is still in draft.\n expect(firstCallOrder(mockUpdateReferral)).toBeLessThan(\n firstCallOrder(mockUpdateServiceAuthorization),\n );\n });\n\n it('should not resend draft state when saving an existing draft authorization', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral description',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 12,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: { id: 'icd10-1' },\n },\n programs: [\n createFundedProgram({\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n }),\n ],\n });\n\n const { mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n receiving_provider: { id: 'provider1' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate({ draft: true });\n\n expect(mockUpdateServiceAuthorization).toHaveBeenCalledWith(\n SERVICE_AUTHORIZATION_ID,\n expect.not.objectContaining({ state: 'draft' }),\n );\n });\n\n it('should send cost-based draft authorization amounts as integer cents', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated cost-based funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 150.36,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({\n id: 'program1',\n provider: { id: 'provider1', licensed: true },\n fee_schedule_program: {\n id: FUNDED_PROGRAM_ID,\n authorization_required: true,\n fee_schedule: { id: FEE_SCHEDULE_ID },\n payment_type: 'cost_based_reimbursement',\n },\n }),\n ],\n });\n\n const { mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n receiving_provider: { id: 'provider1' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate({ draft: true });\n\n expect(mockUpdateServiceAuthorization).toHaveBeenCalledWith(\n SERVICE_AUTHORIZATION_ID,\n expect.objectContaining({ requested_cents: 15036 }),\n );\n });\n\n it('should not change the service for a draft referral with an existing authorization', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n paymentAuthForm: {\n amount_requested: 1100,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({\n id: 'new-funded-program',\n provider: { id: 'new-funded-provider', licensed: true },\n }),\n ],\n });\n\n const { mockUpdateCase, mockUpdateReferral, mockUpdateServiceAuthorization } =\n setupDraftUpdateMocks({\n draftReferral,\n oldCase: {\n ...createDefaultOldCase(draftReferral),\n service_type: { id: 'old-service' },\n },\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'old-funded-program' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n const response = await submitDraftUpdate({ draft: true });\n\n expect(response.shippingDetail[0].error).toContain(\n 'This draft referral already has an authorization request. To change the program, create a new draft referral.',\n );\n expect(coreApi.deleteRecord).not.toHaveBeenCalledWith(\n 'service_authorization',\n SERVICE_AUTHORIZATION_ID,\n );\n expect(mockUpdateCase).not.toHaveBeenCalled();\n expect(mockUpdateServiceAuthorization).not.toHaveBeenCalled();\n expect(mockUpdateReferral).not.toHaveBeenCalled();\n });\n\n it('should create authorization when a draft referral changes to a funded program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated funded referral',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 7,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [createFundedProgram()],\n });\n\n const { mockCreateServiceAuthorization, mockUpdateReferral } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'pending_authorization' },\n });\n\n await submitDraftUpdate();\n\n expect(mockCreateServiceAuthorization).toHaveBeenCalledWith(\n expect.objectContaining({\n case: CASE_ID,\n state: 'requested',\n fee_schedule_program: FUNDED_PROGRAM_ID,\n insurance: 'insurance-1',\n person: 'person1',\n }),\n );\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.objectContaining({\n receiving_program: 'funded-program',\n receiving_provider: 'funded-provider',\n }),\n );\n // Core owns the transition once the authorization is requested.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n // The new recipient must be persisted while the referral is still updatable.\n expect(firstCallOrder(mockUpdateReferral)).toBeLessThan(\n firstCallOrder(mockCreateServiceAuthorization),\n );\n });\n\n it('should not remove authorization when a draft referral changes to a non-funded program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Updated non-funded referral',\n case: {\n id: CASE_ID,\n service_authorization: { id: SERVICE_AUTHORIZATION_ID },\n },\n programs: [\n {\n id: 'non-funded-program',\n provider: { id: 'non-funded-provider', licensed: true },\n },\n ],\n });\n\n const { mockUpdateReferral, mockUpdateServiceAuthorization } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'old-funded-program' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'sent' },\n });\n\n const response = await submitDraftUpdate();\n\n expect(response.shippingDetail[0].error).toContain(\n 'This draft referral already has an authorization request. To change the program, create a new draft referral.',\n );\n expect(coreApi.deleteRecord).not.toHaveBeenCalledWith(\n 'service_authorization',\n SERVICE_AUTHORIZATION_ID,\n );\n expect(mockUpdateServiceAuthorization).not.toHaveBeenCalled();\n expect(mockUpdateReferral).not.toHaveBeenCalled();\n });\n\n it('should create added referrals with an explicit authorization state after requesting the authorization', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Funded referral with an added program',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 4,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({ id: 'program1', provider: { id: 'provider1', licensed: true } }),\n { id: 'program2', provider: { id: 'provider2', licensed: true } },\n ],\n });\n\n const { mockCreateReferral, mockUpdateReferral, mockCreateServiceAuthorization } =\n setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [\n createExistingDraftReferral({\n receiving_program: { id: 'program1' },\n receiving_provider: { id: 'provider1' },\n }),\n ],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n createdReferral: { id: 'created-referral-1', state: 'pending_authorization' },\n });\n\n await submitDraftUpdate();\n\n // Records created after the authorization keep their explicit state: core accepts creating a\n // referral directly in pending_authorization.\n expect(mockCreateReferral).toHaveBeenCalledWith(\n expect.objectContaining({\n state: 'pending_authorization',\n receiving_program: 'program2',\n receiving_provider: 'provider2',\n }),\n );\n // The state omission applies only to the existing referral.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n expect(firstCallOrder(mockUpdateReferral)).toBeLessThan(\n firstCallOrder(mockCreateServiceAuthorization),\n );\n expect(firstCallOrder(mockCreateServiceAuthorization)).toBeLessThan(\n firstCallOrder(mockCreateReferral),\n );\n });\n\n it('should not force a state on the existing referral for an auto-approving funded program', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Auto approving funded referral',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 9,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [\n createFundedProgram({\n fee_schedule_program: {\n id: FUNDED_PROGRAM_ID,\n authorization_required: true,\n auto_authorizes: true,\n fee_schedule: { id: FEE_SCHEDULE_ID },\n payment_type: 'unit_based',\n },\n }),\n ],\n });\n\n const { mockUpdateReferral } = setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n\n await submitDraftUpdate();\n\n // Core sends auto-approved authorizations straight to 'sent'; hardcoding\n // pending_authorization here would conflict with that.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n });\n\n it('should leave the referral recoverable when the authorization request fails', async () => {\n const draftReferral = createBaseReferral({\n id: DRAFT_REFERRAL_ID,\n state: 'draft',\n description: 'Funded referral with a failing authorization',\n case: { id: CASE_ID },\n paymentAuthForm: {\n amount_requested: 7,\n service_start: 1719792000,\n service_end: 1719878400,\n icd10_code: {},\n },\n programs: [createFundedProgram()],\n });\n\n const { mockCreateReferral, mockUpdateReferral, mockCreateServiceAuthorization } =\n setupDraftUpdateMocks({\n draftReferral,\n oldReferrals: [createExistingDraftReferral()],\n updatedCase: { id: CASE_ID },\n updatedReferral: { id: DRAFT_REFERRAL_ID, state: 'draft' },\n });\n mockCreateServiceAuthorization.mockRejectedValue(new Error('Authorization request failed'));\n\n const response = await submitDraftUpdate();\n\n expect(response.shippingDetail[0].sent).toBe(false);\n expect(response.shippingDetail[0].error).toContain('Authorization request failed');\n // The recipient change landed while the referral was still in draft and no state was written,\n // so the referral stays editable and the operation can be retried.\n expect(mockUpdateReferral).toHaveBeenCalledWith(\n DRAFT_REFERRAL_ID,\n expect.not.objectContaining({ state: expect.anything() }),\n );\n expect(mockCreateReferral).not.toHaveBeenCalled();\n });\n\n it('creates the referral when a document upload fails', async () => {\n const pendingFile = { name: 'unavailable.pdf', type: 'application/pdf' };\n const referralWithPendingAttachment = [\n createBaseReferral({\n description: 'Referral with failed attachment',\n pendingAttachments: [{ tempId: 'temp-file-1', file: pendingFile }],\n }),\n ];\n setupMocks(referralWithPendingAttachment);\n setupCreateRecordMocks();\n coreApi.uploadFile.mockRejectedValue(new Error('Upload failed'));\n\n const { result } = renderHook(() => useCreateReferrals());\n let response;\n await act(async () => {\n response = await result.current({\n referrals: referralWithPendingAttachment,\n person: { id: 'person1' },\n });\n });\n\n expect(response.shippingDetail[0]).toMatchObject({\n sent: true,\n error: null,\n caseId: 'case1',\n attachmentStatus: 'failed',\n attachmentErrors: [\n { operation: 'upload', name: 'unavailable.pdf', message: 'Upload failed' },\n ],\n });\n });\n});\n"],"mappings":"AAAA,SAASA,UAAU,EAAEC,GAAG,QAAQ,8BAA8B;AAC9D,OAAOC,kBAAkB,MAAM,uBAAuB;AACtD,SAASC,2BAA2B,QAAQ,yCAAyC;AACrF,SAASC,eAAe,EAAEC,eAAe,QAAQ,oBAAoB;AACrE,SAASC,OAAO,QAAQ,kBAAkB;AAE1CC,IAAI,CAACC,IAAI,CAAC,yCAAyC,EAAE,OAAO;EAC1DL,2BAA2B,EAAEI,IAAI,CAACE,EAAE,CAAC,CAAC;EACtCC,OAAO,EAAGC,IAAI,KAAM;IAAEC,IAAI,EAAE,KAAK;IAAED;EAAK,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEHJ,IAAI,CAACC,IAAI,CAAC,oBAAoB,EAAE,OAAO;EACrCJ,eAAe,EAAEG,IAAI,CAACE,EAAE,CAAC,CAAC;EAC1BJ,eAAe,EAAEE,IAAI,CAACE,EAAE,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEHF,IAAI,CAACC,IAAI,CAAC,kBAAkB,EAAE,OAAO;EACnCF,OAAO,EAAE;IACPO,YAAY,EAAEN,IAAI,CAACE,EAAE,CAAC,CAAC;IACvBK,UAAU,EAAEP,IAAI,CAACE,EAAE,CAAC,CAAC;IACrBM,UAAU,EAAER,IAAI,CAACE,EAAE,CAAC,CAAC;IACrBO,oBAAoB,EAAET,IAAI,CAACE,EAAE,CAAC,CAAC;IAC/BQ,eAAe,EAAEV,IAAI,CAACE,EAAE,CAAC,CAAC;IAC1BS,KAAK,EAAEX,IAAI,CAACE,EAAE,CAAC,CAAC;IAChBU,UAAU,EAAEZ,IAAI,CAACE,EAAE,CAAC;EACtB,CAAC;EACDW,SAAS,EAAE;IACTC,MAAM,EAAE;MACNC,KAAK,EAAEf,IAAI,CAACE,EAAE,CAAC;IACjB;EACF;AACF,CAAC,CAAC,CAAC;AAEH,MAAMc,SAAS,GAAG,CAChB;EACEC,oBAAoB,EAAE,EAAE;EACxBC,kBAAkB,EAAE,EAAE;EACtBC,IAAI,EAAEC,SAAS;EACfC,EAAE,EAAED,SAAS;EACbE,KAAK,EAAEF,SAAS;EAChBG,eAAe,EAAE;IAAEC,gBAAgB,EAAE,IAAI;IAAEC,aAAa,EAAE,IAAI;IAAEC,WAAW,EAAE;EAAK,CAAC;EACnFC,WAAW,EAAE,eAAe;EAC5BC,QAAQ,EAAE,CAAC;IAAEP,EAAE,EAAE,UAAU;IAAEQ,QAAQ,EAAE;MAAER,EAAE,EAAE,WAAW;MAAES,QAAQ,EAAE;IAAK;EAAE,CAAC,CAAC;EAC7EC,eAAe,EAAE;IAAEV,EAAE,EAAE;EAAY,CAAC;EACpCW,OAAO,EAAE;IAAEX,EAAE,EAAE,UAAU;IAAEY,QAAQ,EAAE;MAAEC,UAAU,EAAE;IAAK;EAAE,CAAC;EAC3DC,OAAO,EAAE;IAAEd,EAAE,EAAE;EAAW,CAAC;EAC3Be,aAAa,EAAE;IAAEf,EAAE,EAAE;EAAoB;AAC3C,CAAC,CACF;AAEDgB,QAAQ,CAAC,oBAAoB,EAAE,MAAM;EACnC,MAAMC,YAAY,GAAGtC,IAAI,CAACE,EAAE,CAAC,CAAC;EAC9B,MAAMqC,iBAAiB,GAAG,kBAAkB;EAC5C,MAAMC,OAAO,GAAG,QAAQ;EACxB,MAAMC,UAAU,GAAG,UAAU;EAC7B,MAAMC,mBAAmB,GAAG,WAAW;EACvC,MAAMC,wBAAwB,GAAG,gBAAgB;EACjD,MAAMC,iBAAiB,GAAG,wBAAwB;EAClD,MAAMC,eAAe,GAAG,gBAAgB;EAExC,MAAMC,kBAAkB,GAAG,SAAAA,CAAA;IAAA,IAACC,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA5B,SAAA,GAAA4B,SAAA,MAAG,CAAC,CAAC;IAAA,OAAM;MAC9C/B,oBAAoB,EAAE,EAAE;MACxBC,kBAAkB,EAAE,EAAE;MACtBC,IAAI,EAAEC,SAAS;MACfC,EAAE,EAAED,SAAS;MACbE,KAAK,EAAEF,SAAS;MAChBG,eAAe,EAAE;QAAEC,gBAAgB,EAAE,IAAI;QAAEC,aAAa,EAAE,IAAI;QAAEC,WAAW,EAAE;MAAK,CAAC;MACnFE,QAAQ,EAAE,CAAC;QAAEP,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC,CAAC;MAC7EC,eAAe,EAAE;QAAEV,EAAE,EAAE;MAAY,CAAC;MACpCW,OAAO,EAAE;QAAEX,EAAE,EAAE,UAAU;QAAEY,QAAQ,EAAE;UAAEC,UAAU,EAAE;QAAK;MAAE,CAAC;MAC3DC,OAAO,EAAE;QAAEd,EAAE,EAAE;MAAW,CAAC;MAC3Be,aAAa,EAAE;QAAEf,EAAE,EAAE;MAAoB,CAAC;MAC1C,GAAG0B;IACL,CAAC;EAAA,CAAC;EAEF,MAAMG,UAAU,GAAIlC,SAAS,IAAK;IAChCpB,2BAA2B,CAACuD,eAAe,CAAC;MAC1CC,QAAQ,EAAEd,YAAY;MACtBhB,KAAK,EAAE;QACL+B,eAAe,EAAE;UAAEhC,EAAE,EAAE;QAAY,CAAC;QACpCiC,aAAa,EAAE,EAAE;QACjBC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzBL,SAAS;QACTwC,gBAAgB,EAAE,IAAI;QACtBC,mBAAmB,EAAE,IAAI;QACzBC,WAAW,EAAE;MACf;IACF,CAAC,CAAC;IAEF7D,eAAe,CAACsD,eAAe,CAAC;MAC9BQ,YAAY,EAAE3D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;IAEFN,eAAe,CAACqD,eAAe,CAAC;MAC9BU,YAAY,EAAE7D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;EACJ,CAAC;EAED,MAAM0D,mBAAmB,GAAI1D,IAAI,KAAM;IACrCA,IAAI,EAAE;MACJA;IACF;EACF,CAAC,CAAC;EAEF,MAAM2D,yBAAyB,GAAG;IAChC1C,EAAE,EAAE,kBAAkB;IACtB2C,QAAQ,EAAE,cAAc;IACxBC,YAAY,EAAE;EAChB,CAAC;EAED,MAAMC,0CAA0C,GAAG,SAAAA,CAAA;IAAA,IAACnB,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA5B,SAAA,GAAA4B,SAAA,MAAG,CAAC,CAAC;IAAA,OAChEF,kBAAkB,CAAC;MACjBzB,EAAE,EAAE,kBAAkB;MACtBC,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,kCAAkC;MAC/CwC,6BAA6B,EAAE,CAACJ,yBAAyB,CAAC;MAC1D5C,IAAI,EAAE;QACJE,EAAE,EAAE,QAAQ;QACZ+C,qBAAqB,EAAE;UACrB/C,EAAE,EAAE;QACN;MACF,CAAC;MACDO,QAAQ,EAAE,CACR;QACEP,EAAE,EAAE,UAAU;QACdQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK,CAAC;QAC7CuC,oBAAoB,EAAE;UACpBC,sBAAsB,EAAE;QAC1B;MACF,CAAC,CACF;MACD,GAAGvB;IACL,CAAC,CAAC;EAAA;EAEJ,MAAMwB,2BAA2B,GAAG,SAAAA,CAAA;IAAA,IAACxB,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA5B,SAAA,GAAA4B,SAAA,MAAG,CAAC,CAAC;IAAA,OAAM;MACvD3B,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdkD,UAAU,EAAE,KAAK;MACjBC,iBAAiB,EAAE;QAAEpD,EAAE,EAAE;MAAc,CAAC;MACxCqD,kBAAkB,EAAE;QAAErD,EAAE,EAAE;MAAe,CAAC;MAC1CsD,iBAAiB,EAAE;QAAEtD,EAAE,EAAEoB;MAAW,CAAC;MACrCmC,gBAAgB,EAAE;QAAEvD,EAAE,EAAEqB;MAAoB,CAAC;MAC7CmC,eAAe,EAAE;QAAExD,EAAE,EAAEoB;MAAW,CAAC;MACnC,GAAGM;IACL,CAAC;EAAA,CAAC;EAEF,MAAM+B,mBAAmB,GAAG,SAAAA,CAAA;IAAA,IAAC/B,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA5B,SAAA,GAAA4B,SAAA,MAAG,CAAC,CAAC;IAAA,OAAM;MAC/C3B,EAAE,EAAE,gBAAgB;MACpBQ,QAAQ,EAAE;QAAER,EAAE,EAAE,iBAAiB;QAAES,QAAQ,EAAE;MAAK,CAAC;MACnDuC,oBAAoB,EAAE;QACpBhD,EAAE,EAAEuB,iBAAiB;QACrB0B,sBAAsB,EAAE,IAAI;QAC5BS,YAAY,EAAE;UAAE1D,EAAE,EAAEwB;QAAgB,CAAC;QACrCmC,YAAY,EAAE;MAChB,CAAC;MACD,GAAGjC;IACL,CAAC;EAAA,CAAC;EAEF,MAAMkC,iBAAiB,GAAG,eAAAA,CAAA,EAAkC;IAAA,IAA3B;MAAEC,KAAK,GAAG;IAAM,CAAC,GAAAlC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA5B,SAAA,GAAA4B,SAAA,MAAG,CAAC,CAAC;IACrD,MAAM;MAAEmC;IAAO,CAAC,GAAG1F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IACzD,IAAIyF,QAAQ;IAEZ,MAAM1F,GAAG,CAAC,YAAY;MACpB0F,QAAQ,GAAG,MAAMD,MAAM,CAACE,OAAO,CAAC;QAAEH;MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,OAAOE,QAAQ;EACjB,CAAC;;EAED;EACA;EACA,MAAME,cAAc,GAAIC,MAAM,IAAK;IACjCC,MAAM,CAACD,MAAM,CAAC,CAACE,gBAAgB,CAAC,CAAC;IACjC,OAAOF,MAAM,CAACtF,IAAI,CAACyF,mBAAmB,CAAC,CAAC,CAAC;EAC3C,CAAC;EAED,MAAMC,eAAe,GAAGA,CAACC,IAAI,EAAEC,QAAQ,EAAEC,UAAU,KAAK;IACtDF,IAAI,CAACG,kBAAkB,CAAE1F,IAAI,KAAM;MACjC,CAACyF,UAAU,GAAGD,QAAQ,CAACxF,IAAI,CAAC,IAAIL,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAACE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;EACL,CAAC;EAED,MAAMkC,SAAS,GAAGA,CAACC,KAAK,EAAEC,QAAQ,KAAMD,KAAK,KAAK7E,SAAS,GAAG8E,QAAQ,GAAGD,KAAM;EAE/E,MAAME,gBAAgB,GAAI/F,IAAI,IAC5BJ,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAACE,mBAAmB,CAACkC,SAAS,CAAC5F,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAEvE,MAAMgG,iBAAiB,GAAIC,aAAa,IAAK;IAC3CzG,2BAA2B,CAACuD,eAAe,CAAC;MAC1CC,QAAQ,EAAEd,YAAY;MACtBhB,KAAK,EAAE;QACL+B,eAAe,EAAE;UAAEhC,EAAE,EAAE;QAAY,CAAC;QACpCiC,aAAa,EAAE,EAAE;QACjBC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzBL,SAAS,EAAE,CAACqF,aAAa,CAAC;QAC1B7C,gBAAgB,EAAE,IAAI;QACtBC,mBAAmB,EAAE,IAAI;QACzBC,WAAW,EAAE;MACf;IACF,CAAC,CAAC;EACJ,CAAC;EAED,MAAM4C,oBAAoB,GAAID,aAAa,KAAM;IAC/ChF,EAAE,EAAEgF,aAAa,CAAClF,IAAI,CAACE,EAAE;IACzBM,WAAW,EAAE,yBAAyB;IACtC4E,YAAY,EAAE;MAAElF,EAAE,EAAEgF,aAAa,CAAClE,OAAO,CAACd;IAAG,CAAC;IAC9CQ,QAAQ,EAAE;MAAER,EAAE,EAAEgF,aAAa,CAACtE,eAAe,CAACV;IAAG,CAAC;IAClDW,OAAO,EAAE;MAAEX,EAAE,EAAEgF,aAAa,CAACrE,OAAO,CAACX;IAAG,CAAC;IACzC+C,qBAAqB,EAAEiC,aAAa,CAAClF,IAAI,CAACiD;EAC5C,CAAC,CAAC;EAEF,MAAMoC,yBAAyB,GAAIH,aAAa,IAAK,CACnD9B,2BAA2B,CAAC;IAC1BlD,EAAE,EAAEgF,aAAa,CAAChF,EAAE;IACpBoD,iBAAiB,EAAE;MAAEpD,EAAE,EAAEgF,aAAa,CAACzE,QAAQ,CAAC,CAAC,CAAC,CAACP;IAAG,CAAC;IACvDqD,kBAAkB,EAAE;MAAErD,EAAE,EAAEgF,aAAa,CAACzE,QAAQ,CAAC,CAAC,CAAC,CAACC,QAAQ,CAACR;IAAG,CAAC;IACjEsD,iBAAiB,EAAE;MAAEtD,EAAE,EAAEgF,aAAa,CAACrE,OAAO,CAACX;IAAG,CAAC;IACnDuD,gBAAgB,EAAE;MAAEvD,EAAE,EAAEgF,aAAa,CAACtE,eAAe,CAACV;IAAG,CAAC;IAC1DwD,eAAe,EAAE;MAAExD,EAAE,EAAEgF,aAAa,CAACrE,OAAO,CAACX;IAAG;EAClD,CAAC,CAAC,CACH;EAED,MAAMoF,sBAAsB,GAAGC,IAAA,IAA0C;IAAA,IAAzC;MAAEC,OAAO;MAAEC,YAAY;MAAEC;IAAU,CAAC,GAAAH,IAAA;IAClE,MAAMI,cAAc,GAAG;MACrBC,QAAQ,EAAEH,YAAY;MACtBC,SAAS,EAAE,CAACb,SAAS,CAACa,SAAS,EAAE;QAAExF,EAAE,EAAE;MAAc,CAAC,CAAC;IACzD,CAAC;IAEDtB,OAAO,CAACS,UAAU,CAACoD,iBAAiB,CAACE,mBAAmB,CAAC6C,OAAO,CAAC,CAAC;IAClE5G,OAAO,CAACY,KAAK,CAACoF,kBAAkB,CAAEiB,KAAK,IACrCC,OAAO,CAACC,OAAO,CAACpD,mBAAmB,CAACkC,SAAS,CAACc,cAAc,CAACE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAC3E,CAAC;IACDjH,OAAO,CAACO,YAAY,CAACsD,iBAAiB,CAAC;MAAEuD,MAAM,EAAE;IAAI,CAAC,CAAC;EACzD,CAAC;EAED,MAAMC,qBAAqB,GAAGC,KAAA,IAUxB;IAAA,IAVyB;MAC7BhB,aAAa;MACbM,OAAO;MACPC,YAAY;MACZU,WAAW;MACXC,eAAe;MACfC,eAAe;MACfC,2BAA2B;MAC3BC,2BAA2B;MAC3Bb;IACF,CAAC,GAAAQ,KAAA;IACC,MAAMM,eAAe,GAAG3B,SAAS,CAACW,OAAO,EAAEL,oBAAoB,CAACD,aAAa,CAAC,CAAC;IAC/E,MAAMuB,oBAAoB,GAAG5B,SAAS,CAACY,YAAY,EAAEJ,yBAAyB,CAACH,aAAa,CAAC,CAAC;IAE9FD,iBAAiB,CAACC,aAAa,CAAC;IAEhC,MAAMwB,kBAAkB,GAAG1B,gBAAgB,CAACqB,eAAe,CAAC;IAC5D,MAAMM,8BAA8B,GAAG3B,gBAAgB,CAACsB,2BAA2B,CAAC;IACpF9B,eAAe,CACb9F,eAAe,EACf;MACEkH,QAAQ,EAAEc,kBAAkB;MAC5BzD,qBAAqB,EAAE0D;IACzB,CAAC,EACD,cACF,CAAC;IAED,MAAMC,cAAc,GAAG5B,gBAAgB,CAACmB,WAAW,CAAC;IACpD,MAAMU,kBAAkB,GAAG7B,gBAAgB,CAACoB,eAAe,CAAC;IAC5D,MAAMU,8BAA8B,GAAG9B,gBAAgB,CAACuB,2BAA2B,CAAC;IACpF/B,eAAe,CACb7F,eAAe,EACf;MACEqB,IAAI,EAAE4G,cAAc;MACpBhB,QAAQ,EAAEiB,kBAAkB;MAC5B5D,qBAAqB,EAAE6D;IACzB,CAAC,EACD,cACF,CAAC;IAEDxB,sBAAsB,CAAC;MACrBE,OAAO,EAAEgB,eAAe;MACxBf,YAAY,EAAEgB,oBAAoB;MAClCf;IACF,CAAC,CAAC;IAEF,OAAO;MACLgB,kBAAkB;MAClBC,8BAA8B;MAC9BC,cAAc;MACdC,kBAAkB;MAClBC;IACF,CAAC;EACH,CAAC;EAEDC,UAAU,CAAC,MAAM;IACflI,IAAI,CAACmI,aAAa,CAAC,CAAC;IACpBpI,OAAO,CAACQ,UAAU,CAACqD,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACxC7D,OAAO,CAACO,YAAY,CAACsD,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC1C7D,OAAO,CAACS,UAAU,CAACoD,iBAAiB,CAAC;MAAExD,IAAI,EAAE;QAAEA,IAAI,EAAE;UAAEiB,EAAE,EAAE;QAAS;MAAE;IAAE,CAAC,CAAC;IAC1EtB,OAAO,CAACW,eAAe,CAACkD,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC7C7D,OAAO,CAACa,UAAU,CAACgD,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACxC7D,OAAO,CAACY,KAAK,CAACiD,iBAAiB,CAAC;MAAExD,IAAI,EAAE;QAAEA,IAAI,EAAE;MAAG;IAAE,CAAC,CAAC;EACzD,CAAC,CAAC;EAEFgI,EAAE,CAAC,0DAA0D,EAAE,YAAY;IACzExI,2BAA2B,CAACuD,eAAe,CAAC;MAC1CC,QAAQ,EAAEd,YAAY;MACtBhB,KAAK,EAAE;QACL+B,eAAe,EAAE;UAAEhC,EAAE,EAAE;QAAY,CAAC;QACpCiC,aAAa,EAAE,EAAE;QACjBC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzBL,SAAS;QACTwC,gBAAgB,EAAE,IAAI;QACtBC,mBAAmB,EAAE,IAAI;QACzBC,WAAW,EAAE;MACf;IACF,CAAC,CAAC;IAEF7D,eAAe,CAACsD,eAAe,CAAC;MAC9BQ,YAAY,EAAE3D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;IAEFN,eAAe,CAACqD,eAAe,CAAC;MAC9BU,YAAY,EAAE7D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;IAEF,MAAM;MAAE+E;IAAO,CAAC,GAAG1F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2I,eAAe,GAAGlD,MAAM,CAACE,OAAO;MACtC,MAAMD,QAAQ,GAAG,MAAMiD,eAAe,CAAC;QACrCrH,SAAS;QACTuC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzB6D,KAAK,EAAE;MACT,CAAC,CAAC;MACFM,MAAM,CAACJ,QAAQ,CAAC,CAACkD,cAAc,CAAC,OAAO,CAAC;MACxC9C,MAAM,CAACJ,QAAQ,CAAC,CAACkD,cAAc,CAAC,WAAW,CAAC;MAC5C9C,MAAM,CAACJ,QAAQ,CAAC,CAACkD,cAAc,CAAC,gBAAgB,CAAC;IACnD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFF,EAAE,CAAC,0CAA0C,EAAE,YAAY;IACzDxI,2BAA2B,CAACuD,eAAe,CAAC;MAC1CC,QAAQ,EAAEd,YAAY;MACtBhB,KAAK,EAAE;QACL+B,eAAe,EAAE;UAAEhC,EAAE,EAAE;QAAY,CAAC;QACpCiC,aAAa,EAAE,EAAE;QACjBC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzBL,SAAS;QACTwC,gBAAgB,EAAE,IAAI;QACtBC,mBAAmB,EAAE,IAAI;QACzBC,WAAW,EAAE;MACf;IACF,CAAC,CAAC;IAEF7D,eAAe,CAACsD,eAAe,CAAC;MAC9BQ,YAAY,EAAE3D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;IAEFN,eAAe,CAACqD,eAAe,CAAC;MAC9BU,YAAY,EAAE7D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;IAEF,MAAMmI,cAAc,GAAGvI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACjDxD,IAAI,EAAE;QACJA,IAAI,EAAE;UAAEiB,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAY;MAChD;IACF,CAAC,CAAC;IAEF,MAAMkG,kBAAkB,GAAG7H,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACrDxD,IAAI,EAAE;QACJA,IAAI,EAAE;UAAEiB,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE;QAAO;MACzC;IACF,CAAC,CAAC;IAEFzB,eAAe,CAACkG,kBAAkB,CAAE1F,IAAI,IAAK;MAC3C,IAAIA,IAAI,KAAK,MAAM,EAAE;QACnB,OAAO;UAAEsD,YAAY,EAAE4E;QAAe,CAAC;MACzC,CAAC,MAAM,IAAIlI,IAAI,KAAK,UAAU,EAAE;QAC9B,OAAO;UAAEsD,YAAY,EAAEkE;QAAmB,CAAC;MAC7C;MACA,OAAO;QAAElE,YAAY,EAAE3D,IAAI,CAACE,EAAE,CAAC;MAAE,CAAC;IACpC,CAAC,CAAC;IAEF,MAAM;MAAEiF;IAAO,CAAC,GAAG1F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2I,eAAe,GAAGlD,MAAM,CAACE,OAAO;MACtC,MAAMD,QAAQ,GAAG,MAAMiD,eAAe,CAAC;QACrCrH,SAAS;QACTuC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzB6D,KAAK,EAAE;MACT,CAAC,CAAC;MACFM,MAAM,CAACJ,QAAQ,CAAC,CAACoD,OAAO,CAAC;QACvBC,KAAK,EAAE,CAAC;UAAEpH,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAY,CAAC,CAAC;QAClDX,SAAS,EAAE,CAAC;UAAEK,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE,MAAM;UAAEoH,aAAa,EAAE;QAAE,CAAC,CAAC;QACjEC,cAAc,EAAE,CACd;UACEtH,EAAE,EAAE,mBAAmB;UACvBuH,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,IAAI;UACV9H,KAAK,EAAE,IAAI;UACX+H,MAAM,EAAE,OAAO;UACfC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE;QACpB,CAAC,CACF;QACDC,kBAAkB,EAAE,CAClB;UACEC,YAAY,EAAE,CAAC,iBAAiB,CAAC;UACjClI,SAAS,EAAE,CAAC,WAAW,CAAC;UACxBmI,WAAW,EAAE;QACf,CAAC;MAEL,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMC,sBAAsB,GAAGA,CAAA,KAAM;IACnC,MAAMb,cAAc,GAAGvI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACjDxD,IAAI,EAAE;QACJA,IAAI,EAAE;UAAEiB,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAY;MAChD;IACF,CAAC,CAAC;IAEF,MAAMkG,kBAAkB,GAAG7H,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACrDxD,IAAI,EAAE;QACJA,IAAI,EAAE;UAAEiB,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE;QAAO;MACzC;IACF,CAAC,CAAC;IAEFzB,eAAe,CAACkG,kBAAkB,CAAE1F,IAAI,IAAK;MAC3C,IAAIA,IAAI,KAAK,MAAM,EAAE;QACnB,OAAO;UAAEsD,YAAY,EAAE4E;QAAe,CAAC;MACzC,CAAC,MAAM,IAAIlI,IAAI,KAAK,UAAU,EAAE;QAC9B,OAAO;UAAEsD,YAAY,EAAEkE;QAAmB,CAAC;MAC7C;MACA,OAAO;QAAElE,YAAY,EAAE3D,IAAI,CAACE,EAAE,CAAC;MAAE,CAAC;IACpC,CAAC,CAAC;EACJ,CAAC;EAEDkI,EAAE,CAAC,8BAA8B,EAAE,YAAY;IAC7C,MAAMiB,aAAa,GAAG,CACpBvG,kBAAkB,CAAC;MAAEnB,WAAW,EAAE;IAAgB,CAAC,CAAC,EACpDmB,kBAAkB,CAAC;MACjBnB,WAAW,EAAE,IAAI;MACjBC,QAAQ,EAAE,CAAC;QAAEP,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC,CAAC;MAC7EK,OAAO,EAAE;QAAEd,EAAE,EAAE;MAAW;IAC5B,CAAC,CAAC,CACH;IAED6B,UAAU,CAACmG,aAAa,CAAC;IACzBD,sBAAsB,CAAC,CAAC;IAExB,MAAM;MAAEjE;IAAO,CAAC,GAAG1F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2I,eAAe,GAAGlD,MAAM,CAACE,OAAO;MACtC,MAAMD,QAAQ,GAAG,MAAMiD,eAAe,CAAC;QACrCrH,SAAS,EAAEqI,aAAa;QACxB9F,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzB6D,KAAK,EAAE;MACT,CAAC,CAAC;MACFM,MAAM,CAACJ,QAAQ,CAAC,CAACoD,OAAO,CAAC;QACvBC,KAAK,EAAE,CAAC;UAAEpH,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAY,CAAC,CAAC;QAClDX,SAAS,EAAE,CAAC;UAAEK,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE,MAAM;UAAEoH,aAAa,EAAE;QAAE,CAAC,CAAC;QACjEC,cAAc,EAAE,CACd;UACEtH,EAAE,EAAE,mBAAmB;UACvBuH,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,IAAI;UACV9H,KAAK,EAAE,IAAI;UACX+H,MAAM,EAAE,OAAO;UACfC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE;QACpB,CAAC,EACD;UACE3H,EAAE,EAAE,mBAAmB;UACvBuH,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,KAAK;UACX9H,KAAK,EAAE,+EAA+E;UACtF+H,MAAM,EAAE,IAAI;UACZC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE;QACpB,CAAC,CACF;QACDC,kBAAkB,EAAE,CAClB;UACEC,YAAY,EAAE,CAAC,iBAAiB,CAAC;UACjClI,SAAS,EAAE,CAAC,WAAW,CAAC;UACxBmI,WAAW,EAAE;QACf,CAAC;MAEL,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFf,EAAE,CAAC,2BAA2B,EAAE,YAAY;IAC1C,MAAMkB,eAAe,GAAG,CACtBxG,kBAAkB,CAAC;MAAEnB,WAAW,EAAE;IAAK,CAAC,CAAC,EACzCmB,kBAAkB,CAAC;MACjBnB,WAAW,EAAE,IAAI;MACjBC,QAAQ,EAAE,CAAC;QAAEP,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC,CAAC;MAC7EK,OAAO,EAAE;QAAEd,EAAE,EAAE;MAAW;IAC5B,CAAC,CAAC,CACH;IAED6B,UAAU,CAACoG,eAAe,CAAC;IAC3BF,sBAAsB,CAAC,CAAC;IAExB,MAAM;MAAEjE;IAAO,CAAC,GAAG1F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2I,eAAe,GAAGlD,MAAM,CAACE,OAAO;MACtC,MAAMD,QAAQ,GAAG,MAAMiD,eAAe,CAAC;QACrCrH,SAAS,EAAEsI,eAAe;QAC1B/F,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzB6D,KAAK,EAAE;MACT,CAAC,CAAC;MACFM,MAAM,CAACJ,QAAQ,CAAC,CAACoD,OAAO,CAAC;QACvBC,KAAK,EAAE,EAAE;QACTzH,SAAS,EAAE,EAAE;QACb2H,cAAc,EAAE,CACd;UACEtH,EAAE,EAAE,mBAAmB;UACvBuH,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,KAAK;UACX9H,KAAK,EAAE,+EAA+E;UACtF+H,MAAM,EAAE,IAAI;UACZC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE;QACpB,CAAC,EACD;UACE3H,EAAE,EAAE,mBAAmB;UACvBuH,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,KAAK;UACX9H,KAAK,EAAE,+EAA+E;UACtF+H,MAAM,EAAE,IAAI;UACZC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE;QACpB,CAAC,CACF;QACDC,kBAAkB,EAAE;MACtB,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFb,EAAE,CAAC,iEAAiE,EAAE,YAAY;IAChF,MAAMpH,SAAS,GAAG,CAChB8B,kBAAkB,CAAC;MACjBnB,WAAW,EAAE,eAAe;MAC5BK,OAAO,EAAE;QAAEX,EAAE,EAAE,UAAU;QAAEY,QAAQ,EAAE;UAAEC,UAAU,EAAE;QAAM;MAAE;IAC7D,CAAC,CAAC,CACH;IAEDgB,UAAU,CAAClC,SAAS,CAAC;IACrBoI,sBAAsB,CAAC,CAAC;IAExB,MAAM;MAAEjE;IAAO,CAAC,GAAG1F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAM2I,eAAe,GAAGlD,MAAM,CAACE,OAAO;MACtC,MAAMD,QAAQ,GAAG,MAAMiD,eAAe,CAAC;QACrCrH,SAAS;QACTuC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzB6D,KAAK,EAAE;MACT,CAAC,CAAC;MACFM,MAAM,CAACJ,QAAQ,CAAC,CAACoD,OAAO,CAAC;QACvBC,KAAK,EAAE,CAAC;UAAEpH,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAY,CAAC,CAAC;QAClDX,SAAS,EAAE,CAAC;UAAEK,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE,MAAM;UAAEoH,aAAa,EAAE;QAAE,CAAC,CAAC;QACjEC,cAAc,EAAE,CACd;UACEtH,EAAE,EAAE,mBAAmB;UACvBuH,KAAK,EAAE,CAAC;UACRC,IAAI,EAAE,IAAI;UACV9H,KAAK,EAAE,IAAI;UACX+H,MAAM,EAAE,OAAO;UACfC,gBAAgB,EAAE,eAAe;UACjCC,gBAAgB,EAAE;QACpB,CAAC,CACF;QACDC,kBAAkB,EAAE;MACtB,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFb,EAAE,CAAC,+DAA+D,EAAE,YAAY;IAC9E,MAAMmB,kBAAkB,GAAG,CACzBzG,kBAAkB,CAAC;MACjBnB,WAAW,EAAE,2BAA2B;MACxC6H,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ;IAClC,CAAC,CAAC,CACH;IAED5J,2BAA2B,CAACuD,eAAe,CAAC;MAC1CC,QAAQ,EAAEd,YAAY;MACtBhB,KAAK,EAAE;QACL+B,eAAe,EAAE;UAAEhC,EAAE,EAAE;QAAY,CAAC;QACpCiC,aAAa,EAAE,EAAE;QACjBC,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzBL,SAAS,EAAEuI,kBAAkB;QAC7B/F,gBAAgB,EAAE,IAAI;QACtBC,mBAAmB,EAAE,IAAI;QACzBC,WAAW,EAAE;MACf;IACF,CAAC,CAAC;IAEF,MAAM6E,cAAc,GAAGvI,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACjDxD,IAAI,EAAE;QACJA,IAAI,EAAE;UAAEiB,EAAE,EAAE,OAAO;UAAEM,WAAW,EAAE;QAAa;MACjD;IACF,CAAC,CAAC;IAEF,MAAMkG,kBAAkB,GAAG7H,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;MACrDxD,IAAI,EAAE;QACJA,IAAI,EAAE;UAAEiB,EAAE,EAAE,WAAW;UAAEC,KAAK,EAAE;QAAQ;MAC1C;IACF,CAAC,CAAC;IAEFzB,eAAe,CAACkG,kBAAkB,CAAE1F,IAAI,IAAK;MAC3C,IAAIA,IAAI,KAAK,MAAM,EAAE;QACnB,OAAO;UAAEsD,YAAY,EAAE4E;QAAe,CAAC;MACzC,CAAC,MAAM,IAAIlI,IAAI,KAAK,UAAU,EAAE;QAC9B,OAAO;UAAEsD,YAAY,EAAEkE;QAAmB,CAAC;MAC7C;MACA,OAAO;QAAElE,YAAY,EAAE3D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;UAAExD,IAAI,EAAE;YAAEA,IAAI,EAAE,CAAC;UAAE;QAAE,CAAC;MAAE,CAAC;IAC9E,CAAC,CAAC;IAEFN,eAAe,CAACqD,eAAe,CAAC;MAC9BU,YAAY,EAAE7D,IAAI,CAACE,EAAE,CAAC,CAAC,CAAC0D,iBAAiB,CAAC;QAAExD,IAAI,EAAE;UAAEA,IAAI,EAAE,CAAC;QAAE;MAAE,CAAC;IAClE,CAAC,CAAC;IAEF,MAAM;MAAE+E;IAAO,CAAC,GAAG1F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAMyF,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFM,MAAM,CAAC+C,cAAc,CAAC,CAACkB,oBAAoB,CACzCjE,MAAM,CAACkE,gBAAgB,CAAC;MACtBC,iBAAiB,EAAE,CACjB;QAAEtI,EAAE,EAAE,QAAQ;QAAEhB,IAAI,EAAE;MAAmB,CAAC,EAC1C;QAAEgB,EAAE,EAAE,QAAQ;QAAEhB,IAAI,EAAE;MAAmB,CAAC;IAE9C,CAAC,CACH,CAAC;IAEDmF,MAAM,CAACqC,kBAAkB,CAAC,CAAC4B,oBAAoB,CAC7CjE,MAAM,CAACkE,gBAAgB,CAAC;MACtBpI,KAAK,EAAE,OAAO;MACdqI,iBAAiB,EAAE,CACjB;QAAEtI,EAAE,EAAE,QAAQ;QAAEhB,IAAI,EAAE;MAAmB,CAAC,EAC1C;QAAEgB,EAAE,EAAE,QAAQ;QAAEhB,IAAI,EAAE;MAAmB,CAAC;IAE9C,CAAC,CACH,CAAC;EACH,CAAC,CAAC;EAEF+H,EAAE,CAAC,yFAAyF,EAAE,YAAY;IACxG,MAAMwB,WAAW,GAAG;MAAEC,IAAI,EAAE,SAAS;MAAExJ,IAAI,EAAE;IAAkB,CAAC;IAChE,MAAMgG,aAAa,GAAGnC,0CAA0C,CAAC;MAC/D/C,IAAI,EAAE;QACJE,EAAE,EAAE,QAAQ;QACZ+C,qBAAqB,EAAE;MACzB,CAAC;MACDlD,kBAAkB,EAAE,CAClB;QACE4I,MAAM,EAAE,aAAa;QACrBC,IAAI,EAAEH,WAAW;QACjBI,OAAO,EAAE;MACX,CAAC;IAEL,CAAC,CAAC;IAEF5C,qBAAqB,CAAC;MACpBf,aAAa;MACbiB,WAAW,EAAE;QAAEjG,EAAE,EAAE;MAAS,CAAC;MAC7BkG,eAAe,EAAE;QAAElG,EAAE,EAAE,kBAAkB;QAAEC,KAAK,EAAE;MAAQ;IAC5D,CAAC,CAAC;IAEF,MAAM;MAAE6D;IAAO,CAAC,GAAG1F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAMyF,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFM,MAAM,CAACzF,OAAO,CAACQ,UAAU,CAAC,CAACkJ,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,CAAC;IACrFjE,MAAM,CAACzF,OAAO,CAACa,UAAU,CAAC,CAAC6I,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAEG,WAAW,CAAC;EAChF,CAAC,CAAC;EAEFxB,EAAE,CAAC,8EAA8E,EAAE,YAAY;IAC7F,MAAMrB,QAAQ,GAAGjE,kBAAkB,CAAC;MAClCzB,EAAE,EAAE,YAAY;MAChBC,KAAK,EAAE,MAAM;MACb6C,6BAA6B,EAAE,CAACJ,yBAAyB,CAAC;MAC1D5C,IAAI,EAAE;QACJE,EAAE,EAAE;MACN,CAAC;MACDO,QAAQ,EAAE,CACR;QACEP,EAAE,EAAE,UAAU;QACdQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK,CAAC;QAC7CuC,oBAAoB,EAAE;UACpBC,sBAAsB,EAAE;QAC1B;MACF,CAAC;IAEL,CAAC,CAAC;IAEFpB,UAAU,CAAC,CAAC6D,QAAQ,CAAC,CAAC;IAEtB,MAAM;MAAE5B;IAAO,CAAC,GAAG1F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAMyF,MAAM,CAACE,OAAO,CAAC;QAAErE,SAAS,EAAE,CAAC+F,QAAQ,CAAC;QAAExD,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QAAE6D,KAAK,EAAE;MAAM,CAAC,CAAC;IAC1F,CAAC,CAAC;IAEFM,MAAM,CAACzF,OAAO,CAACQ,UAAU,CAAC,CAAC0J,GAAG,CAACxE,gBAAgB,CAAC,CAAC;EACnD,CAAC,CAAC;EAEF2C,EAAE,CAAC,0FAA0F,EAAE,YAAY;IACzG,MAAM/B,aAAa,GAAGnC,0CAA0C,CAAC;MAC/DC,6BAA6B,EAAE,CAC7B;QACEH,QAAQ,EAAE,cAAc;QACxBC,YAAY,EAAE;MAChB,CAAC;IAEL,CAAC,CAAC;IAEFmD,qBAAqB,CAAC;MACpBf,aAAa;MACbiB,WAAW,EAAE;QAAEjG,EAAE,EAAE;MAAS,CAAC;MAC7BkG,eAAe,EAAE;QAAElG,EAAE,EAAE,kBAAkB;QAAEC,KAAK,EAAE;MAAQ;IAC5D,CAAC,CAAC;IAEF,MAAM;MAAE6D;IAAO,CAAC,GAAG1F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAMyF,MAAM,CAACE,OAAO,CAAC;QAAEH,KAAK,EAAE;MAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFM,MAAM,CAACzF,OAAO,CAACQ,UAAU,CAAC,CAAC0J,GAAG,CAACxE,gBAAgB,CAAC,CAAC;EACnD,CAAC,CAAC;EAEF2C,EAAE,CAAC,kEAAkE,EAAE,YAAY;IACjF,MAAM8B,OAAO,GAAG;MAAEL,IAAI,EAAE,SAAS;MAAExJ,IAAI,EAAE;IAAkB,CAAC;IAC5D,MAAM8J,4BAA4B,GAAG,CACnCrH,kBAAkB,CAAC;MACjBnB,WAAW,EAAE,iCAAiC;MAC9CV,oBAAoB,EAAE,CACpB;QACEI,EAAE,EAAE,kBAAkB;QACtB2C,QAAQ,EAAE,cAAc;QACxBC,YAAY,EAAE,iBAAiB;QAC/BmG,IAAI,EAAE;MACR,CAAC,CACF;MACDlJ,kBAAkB,EAAE,CAClB;QACE4I,MAAM,EAAE,aAAa;QACrBC,IAAI,EAAEG,OAAO;QACbF,OAAO,EAAE;MACX,CAAC,CACF;MACDK,mBAAmB,EAAE,CACnB;QACEC,QAAQ,EAAE,IAAI;QACdC,QAAQ,EAAE;UACRlJ,EAAE,EAAE,gBAAgB;UACpBmJ,KAAK,EAAE;QACT;MACF,CAAC;IAEL,CAAC,CAAC,CACH;IAEDtH,UAAU,CAACiH,4BAA4B,CAAC;IACxCf,sBAAsB,CAAC,CAAC;IAExB,MAAM;MAAEjE;IAAO,CAAC,GAAG1F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IAEzD,MAAMD,GAAG,CAAC,YAAY;MACpB,MAAMyF,MAAM,CAACE,OAAO,CAAC;QACnBrE,SAAS,EAAEmJ,4BAA4B;QACvC5G,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU,CAAC;QACzB6D,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFM,MAAM,CAACzF,OAAO,CAACW,eAAe,CAAC,CAAC+I,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE;MACpEgB,iBAAiB,EAAE,aAAa;MAChCxE,KAAK,EAAE,CAAC,gBAAgB;IAC1B,CAAC,CAAC;IACFT,MAAM,CAACzF,OAAO,CAACa,UAAU,CAAC,CAAC8J,qBAAqB,CAAC,CAAC,CAAC;IACnDlF,MAAM,CAACzF,OAAO,CAACa,UAAU,CAAC,CAAC6I,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAES,OAAO,CAAC;EAC3E,CAAC,CAAC;EAEF9B,EAAE,CAAC,8EAA8E,EAAE,YAAY;IAC7F,MAAM/B,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,wBAAwB;MACrCR,IAAI,EAAE;QAAEE,EAAE,EAAEmB;MAAQ,CAAC;MACrBZ,QAAQ,EAAE,CACR;QACEP,EAAE,EAAE,aAAa;QACjBQ,QAAQ,EAAE;UAAER,EAAE,EAAE,cAAc;UAAES,QAAQ,EAAE;QAAK;MACjD,CAAC;IAEL,CAAC,CAAC;IAEF,MAAM;MAAE+F,kBAAkB;MAAEG,kBAAkB;MAAEF;IAA+B,CAAC,GAC9EV,qBAAqB,CAAC;MACpBf,aAAa;MACbO,YAAY,EAAE,CAACrC,2BAA2B,CAAC,CAAC,CAAC;MAC7C+C,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAO;IAC1D,CAAC,CAAC;IAEJ,MAAM2D,iBAAiB,CAAC,CAAC;;IAEzB;IACAO,MAAM,CAACwC,kBAAkB,CAAC,CAACyB,oBAAoB,CAC7ClH,iBAAiB,EACjBiD,MAAM,CAACkE,gBAAgB,CAAC;MACtBpI,KAAK,EAAE,MAAM;MACbmD,iBAAiB,EAAE,aAAa;MAChCC,kBAAkB,EAAE;IACtB,CAAC,CACH,CAAC;IACDc,MAAM,CAACsC,8BAA8B,CAAC,CAACmC,GAAG,CAACxE,gBAAgB,CAAC,CAAC;IAC7DD,MAAM,CAACzF,OAAO,CAACO,YAAY,CAAC,CAAC2J,GAAG,CAACR,oBAAoB,CAAC,UAAU,EAAEjE,MAAM,CAACmF,QAAQ,CAAC,CAAC,CAAC;IACpFnF,MAAM,CAACqC,kBAAkB,CAAC,CAACoC,GAAG,CAACxE,gBAAgB,CAAC,CAAC;EACnD,CAAC,CAAC;EAEF2C,EAAE,CAAC,gFAAgF,EAAE,YAAY;IAC/F,MAAM/B,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,yBAAyB;MACtCR,IAAI,EAAE;QACJE,EAAE,EAAEmB,OAAO;QACX4B,qBAAqB,EAAE;UAAE/C,EAAE,EAAEsB;QAAyB;MACxD,CAAC;MACDpB,eAAe,EAAE;QACfC,gBAAgB,EAAE,EAAE;QACpBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBkJ,UAAU,EAAE;UAAEvJ,EAAE,EAAE;QAAU;MAC9B,CAAC;MACDO,QAAQ,EAAE,CACRkD,mBAAmB,CAAC;QAClBzD,EAAE,EAAE,UAAU;QACdQ,QAAQ,EAAE;UAAER,EAAE,EAAE,cAAc;UAAES,QAAQ,EAAE;QAAK;MACjD,CAAC,CAAC;IAEN,CAAC,CAAC;IAEF,MAAM;MAAEkG,kBAAkB;MAAEC;IAA+B,CAAC,GAAGb,qBAAqB,CAAC;MACnFf,aAAa;MACbO,YAAY,EAAE,CACZrC,2BAA2B,CAAC;QAC1BE,iBAAiB,EAAE;UAAEpD,EAAE,EAAE;QAAW;MACtC,CAAC,CAAC,CACH;MACDiG,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ;IAC3D,CAAC,CAAC;IAEF,MAAM2D,iBAAiB,CAAC,CAAC;IAEzBO,MAAM,CAACyC,8BAA8B,CAAC,CAACwB,oBAAoB,CACzD9G,wBAAwB,EACxB6C,MAAM,CAACkE,gBAAgB,CAAC;MACtBpI,KAAK,EAAE,WAAW;MAClB+C,oBAAoB,EAAEzB,iBAAiB;MACvCiI,SAAS,EAAE,WAAW;MACtBhE,SAAS,EAAE,aAAa;MACxBtD,MAAM,EAAE,SAAS;MACjBuH,qBAAqB,EAAE,EAAE;MACzBC,sBAAsB,EAAE,CAAC,SAAS;IACpC,CAAC,CACH,CAAC;IACDvF,MAAM,CAACwC,kBAAkB,CAAC,CAACyB,oBAAoB,CAC7ClH,iBAAiB,EACjBiD,MAAM,CAACkE,gBAAgB,CAAC;MACtBhF,kBAAkB,EAAE;IACtB,CAAC,CACH,CAAC;IACD;IACA;IACAc,MAAM,CAACwC,kBAAkB,CAAC,CAACyB,oBAAoB,CAC7ClH,iBAAiB,EACjBiD,MAAM,CAACyE,GAAG,CAACP,gBAAgB,CAAC;MAAEpI,KAAK,EAAEkE,MAAM,CAACmF,QAAQ,CAAC;IAAE,CAAC,CAC1D,CAAC;IACD;IACAnF,MAAM,CAACF,cAAc,CAAC0C,kBAAkB,CAAC,CAAC,CAACgD,YAAY,CACrD1F,cAAc,CAAC2C,8BAA8B,CAC/C,CAAC;EACH,CAAC,CAAC;EAEFG,EAAE,CAAC,2EAA2E,EAAE,YAAY;IAC1F,MAAM/B,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,qCAAqC;MAClDR,IAAI,EAAE;QACJE,EAAE,EAAEmB,OAAO;QACX4B,qBAAqB,EAAE;UAAE/C,EAAE,EAAEsB;QAAyB;MACxD,CAAC;MACDpB,eAAe,EAAE;QACfC,gBAAgB,EAAE,EAAE;QACpBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBkJ,UAAU,EAAE;UAAEvJ,EAAE,EAAE;QAAU;MAC9B,CAAC;MACDO,QAAQ,EAAE,CACRkD,mBAAmB,CAAC;QAClBzD,EAAE,EAAE,UAAU;QACdQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAC9C,CAAC,CAAC;IAEN,CAAC,CAAC;IAEF,MAAM;MAAEmG;IAA+B,CAAC,GAAGb,qBAAqB,CAAC;MAC/Df,aAAa;MACbO,YAAY,EAAE,CACZrC,2BAA2B,CAAC;QAC1BE,iBAAiB,EAAE;UAAEpD,EAAE,EAAE;QAAW,CAAC;QACrCqD,kBAAkB,EAAE;UAAErD,EAAE,EAAE;QAAY;MACxC,CAAC,CAAC,CACH;MACDiG,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ;IAC3D,CAAC,CAAC;IAEF,MAAM2D,iBAAiB,CAAC;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;IAExCM,MAAM,CAACyC,8BAA8B,CAAC,CAACwB,oBAAoB,CACzD9G,wBAAwB,EACxB6C,MAAM,CAACyE,GAAG,CAACP,gBAAgB,CAAC;MAAEpI,KAAK,EAAE;IAAQ,CAAC,CAChD,CAAC;EACH,CAAC,CAAC;EAEF8G,EAAE,CAAC,qEAAqE,EAAE,YAAY;IACpF,MAAM/B,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,oCAAoC;MACjDR,IAAI,EAAE;QACJE,EAAE,EAAEmB,OAAO;QACX4B,qBAAqB,EAAE;UAAE/C,EAAE,EAAEsB;QAAyB;MACxD,CAAC;MACDpB,eAAe,EAAE;QACfC,gBAAgB,EAAE,MAAM;QACxBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBkJ,UAAU,EAAE,CAAC;MACf,CAAC;MACDhJ,QAAQ,EAAE,CACRkD,mBAAmB,CAAC;QAClBzD,EAAE,EAAE,UAAU;QACdQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK,CAAC;QAC7CuC,oBAAoB,EAAE;UACpBhD,EAAE,EAAEuB,iBAAiB;UACrB0B,sBAAsB,EAAE,IAAI;UAC5BS,YAAY,EAAE;YAAE1D,EAAE,EAAEwB;UAAgB,CAAC;UACrCmC,YAAY,EAAE;QAChB;MACF,CAAC,CAAC;IAEN,CAAC,CAAC;IAEF,MAAM;MAAEiD;IAA+B,CAAC,GAAGb,qBAAqB,CAAC;MAC/Df,aAAa;MACbO,YAAY,EAAE,CACZrC,2BAA2B,CAAC;QAC1BE,iBAAiB,EAAE;UAAEpD,EAAE,EAAE;QAAW,CAAC;QACrCqD,kBAAkB,EAAE;UAAErD,EAAE,EAAE;QAAY;MACxC,CAAC,CAAC,CACH;MACDiG,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ;IAC3D,CAAC,CAAC;IAEF,MAAM2D,iBAAiB,CAAC;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;IAExCM,MAAM,CAACyC,8BAA8B,CAAC,CAACwB,oBAAoB,CACzD9G,wBAAwB,EACxB6C,MAAM,CAACkE,gBAAgB,CAAC;MAAEuB,eAAe,EAAE;IAAM,CAAC,CACpD,CAAC;EACH,CAAC,CAAC;EAEF7C,EAAE,CAAC,mFAAmF,EAAE,YAAY;IAClG,MAAM/B,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,yBAAyB;MACtCR,IAAI,EAAE;QACJE,EAAE,EAAEmB,OAAO;QACX4B,qBAAqB,EAAE;UAAE/C,EAAE,EAAEsB;QAAyB;MACxD,CAAC;MACDpB,eAAe,EAAE;QACfC,gBAAgB,EAAE,IAAI;QACtBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBkJ,UAAU,EAAE,CAAC;MACf,CAAC;MACDhJ,QAAQ,EAAE,CACRkD,mBAAmB,CAAC;QAClBzD,EAAE,EAAE,oBAAoB;QACxBQ,QAAQ,EAAE;UAAER,EAAE,EAAE,qBAAqB;UAAES,QAAQ,EAAE;QAAK;MACxD,CAAC,CAAC;IAEN,CAAC,CAAC;IAEF,MAAM;MAAEiG,cAAc;MAAEC,kBAAkB;MAAEC;IAA+B,CAAC,GAC1Eb,qBAAqB,CAAC;MACpBf,aAAa;MACbM,OAAO,EAAE;QACP,GAAGL,oBAAoB,CAACD,aAAa,CAAC;QACtCE,YAAY,EAAE;UAAElF,EAAE,EAAE;QAAc;MACpC,CAAC;MACDuF,YAAY,EAAE,CACZrC,2BAA2B,CAAC;QAC1BE,iBAAiB,EAAE;UAAEpD,EAAE,EAAE;QAAqB;MAChD,CAAC,CAAC,CACH;MACDiG,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ;IAC3D,CAAC,CAAC;IAEJ,MAAM8D,QAAQ,GAAG,MAAMH,iBAAiB,CAAC;MAAEC,KAAK,EAAE;IAAK,CAAC,CAAC;IAEzDM,MAAM,CAACJ,QAAQ,CAACuD,cAAc,CAAC,CAAC,CAAC,CAAC5H,KAAK,CAAC,CAACmK,SAAS,CAChD,+GACF,CAAC;IACD1F,MAAM,CAACzF,OAAO,CAACO,YAAY,CAAC,CAAC2J,GAAG,CAACR,oBAAoB,CACnD,uBAAuB,EACvB9G,wBACF,CAAC;IACD6C,MAAM,CAACuC,cAAc,CAAC,CAACkC,GAAG,CAACxE,gBAAgB,CAAC,CAAC;IAC7CD,MAAM,CAACyC,8BAA8B,CAAC,CAACgC,GAAG,CAACxE,gBAAgB,CAAC,CAAC;IAC7DD,MAAM,CAACwC,kBAAkB,CAAC,CAACiC,GAAG,CAACxE,gBAAgB,CAAC,CAAC;EACnD,CAAC,CAAC;EAEF2C,EAAE,CAAC,+EAA+E,EAAE,YAAY;IAC9F,MAAM/B,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,yBAAyB;MACtCR,IAAI,EAAE;QAAEE,EAAE,EAAEmB;MAAQ,CAAC;MACrBjB,eAAe,EAAE;QACfC,gBAAgB,EAAE,CAAC;QACnBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBkJ,UAAU,EAAE,CAAC;MACf,CAAC;MACDhJ,QAAQ,EAAE,CAACkD,mBAAmB,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM;MAAEgD,8BAA8B;MAAEE;IAAmB,CAAC,GAAGZ,qBAAqB,CAAC;MACnFf,aAAa;MACbO,YAAY,EAAE,CAACrC,2BAA2B,CAAC,CAAC,CAAC;MAC7C+C,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAwB;IAC3E,CAAC,CAAC;IAEF,MAAM2D,iBAAiB,CAAC,CAAC;IAEzBO,MAAM,CAACsC,8BAA8B,CAAC,CAAC2B,oBAAoB,CACzDjE,MAAM,CAACkE,gBAAgB,CAAC;MACtBvI,IAAI,EAAEqB,OAAO;MACblB,KAAK,EAAE,WAAW;MAClB+C,oBAAoB,EAAEzB,iBAAiB;MACvCiE,SAAS,EAAE,aAAa;MACxBtD,MAAM,EAAE;IACV,CAAC,CACH,CAAC;IACDiC,MAAM,CAACwC,kBAAkB,CAAC,CAACyB,oBAAoB,CAC7ClH,iBAAiB,EACjBiD,MAAM,CAACkE,gBAAgB,CAAC;MACtBjF,iBAAiB,EAAE,gBAAgB;MACnCC,kBAAkB,EAAE;IACtB,CAAC,CACH,CAAC;IACD;IACAc,MAAM,CAACwC,kBAAkB,CAAC,CAACyB,oBAAoB,CAC7ClH,iBAAiB,EACjBiD,MAAM,CAACyE,GAAG,CAACP,gBAAgB,CAAC;MAAEpI,KAAK,EAAEkE,MAAM,CAACmF,QAAQ,CAAC;IAAE,CAAC,CAC1D,CAAC;IACD;IACAnF,MAAM,CAACF,cAAc,CAAC0C,kBAAkB,CAAC,CAAC,CAACgD,YAAY,CACrD1F,cAAc,CAACwC,8BAA8B,CAC/C,CAAC;EACH,CAAC,CAAC;EAEFM,EAAE,CAAC,uFAAuF,EAAE,YAAY;IACtG,MAAM/B,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,6BAA6B;MAC1CR,IAAI,EAAE;QACJE,EAAE,EAAEmB,OAAO;QACX4B,qBAAqB,EAAE;UAAE/C,EAAE,EAAEsB;QAAyB;MACxD,CAAC;MACDf,QAAQ,EAAE,CACR;QACEP,EAAE,EAAE,oBAAoB;QACxBQ,QAAQ,EAAE;UAAER,EAAE,EAAE,qBAAqB;UAAES,QAAQ,EAAE;QAAK;MACxD,CAAC;IAEL,CAAC,CAAC;IAEF,MAAM;MAAEkG,kBAAkB;MAAEC;IAA+B,CAAC,GAAGb,qBAAqB,CAAC;MACnFf,aAAa;MACbO,YAAY,EAAE,CACZrC,2BAA2B,CAAC;QAC1BE,iBAAiB,EAAE;UAAEpD,EAAE,EAAE;QAAqB;MAChD,CAAC,CAAC,CACH;MACDiG,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAO;IAC1D,CAAC,CAAC;IAEF,MAAM8D,QAAQ,GAAG,MAAMH,iBAAiB,CAAC,CAAC;IAE1CO,MAAM,CAACJ,QAAQ,CAACuD,cAAc,CAAC,CAAC,CAAC,CAAC5H,KAAK,CAAC,CAACmK,SAAS,CAChD,+GACF,CAAC;IACD1F,MAAM,CAACzF,OAAO,CAACO,YAAY,CAAC,CAAC2J,GAAG,CAACR,oBAAoB,CACnD,uBAAuB,EACvB9G,wBACF,CAAC;IACD6C,MAAM,CAACyC,8BAA8B,CAAC,CAACgC,GAAG,CAACxE,gBAAgB,CAAC,CAAC;IAC7DD,MAAM,CAACwC,kBAAkB,CAAC,CAACiC,GAAG,CAACxE,gBAAgB,CAAC,CAAC;EACnD,CAAC,CAAC;EAEF2C,EAAE,CAAC,uGAAuG,EAAE,YAAY;IACtH,MAAM/B,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,uCAAuC;MACpDR,IAAI,EAAE;QAAEE,EAAE,EAAEmB;MAAQ,CAAC;MACrBjB,eAAe,EAAE;QACfC,gBAAgB,EAAE,CAAC;QACnBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBkJ,UAAU,EAAE,CAAC;MACf,CAAC;MACDhJ,QAAQ,EAAE,CACRkD,mBAAmB,CAAC;QAAEzD,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC,CAAC,EACtF;QAAET,EAAE,EAAE,UAAU;QAAEQ,QAAQ,EAAE;UAAER,EAAE,EAAE,WAAW;UAAES,QAAQ,EAAE;QAAK;MAAE,CAAC;IAErE,CAAC,CAAC;IAEF,MAAM;MAAE+F,kBAAkB;MAAEG,kBAAkB;MAAEF;IAA+B,CAAC,GAC9EV,qBAAqB,CAAC;MACpBf,aAAa;MACbO,YAAY,EAAE,CACZrC,2BAA2B,CAAC;QAC1BE,iBAAiB,EAAE;UAAEpD,EAAE,EAAE;QAAW,CAAC;QACrCqD,kBAAkB,EAAE;UAAErD,EAAE,EAAE;QAAY;MACxC,CAAC,CAAC,CACH;MACDiG,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ,CAAC;MAC1DkG,eAAe,EAAE;QAAEnG,EAAE,EAAE,oBAAoB;QAAEC,KAAK,EAAE;MAAwB;IAC9E,CAAC,CAAC;IAEJ,MAAM2D,iBAAiB,CAAC,CAAC;;IAEzB;IACA;IACAO,MAAM,CAACqC,kBAAkB,CAAC,CAAC4B,oBAAoB,CAC7CjE,MAAM,CAACkE,gBAAgB,CAAC;MACtBpI,KAAK,EAAE,uBAAuB;MAC9BmD,iBAAiB,EAAE,UAAU;MAC7BC,kBAAkB,EAAE;IACtB,CAAC,CACH,CAAC;IACD;IACAc,MAAM,CAACwC,kBAAkB,CAAC,CAACyB,oBAAoB,CAC7ClH,iBAAiB,EACjBiD,MAAM,CAACyE,GAAG,CAACP,gBAAgB,CAAC;MAAEpI,KAAK,EAAEkE,MAAM,CAACmF,QAAQ,CAAC;IAAE,CAAC,CAC1D,CAAC;IACDnF,MAAM,CAACF,cAAc,CAAC0C,kBAAkB,CAAC,CAAC,CAACgD,YAAY,CACrD1F,cAAc,CAACwC,8BAA8B,CAC/C,CAAC;IACDtC,MAAM,CAACF,cAAc,CAACwC,8BAA8B,CAAC,CAAC,CAACkD,YAAY,CACjE1F,cAAc,CAACuC,kBAAkB,CACnC,CAAC;EACH,CAAC,CAAC;EAEFO,EAAE,CAAC,wFAAwF,EAAE,YAAY;IACvG,MAAM/B,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,gCAAgC;MAC7CR,IAAI,EAAE;QAAEE,EAAE,EAAEmB;MAAQ,CAAC;MACrBjB,eAAe,EAAE;QACfC,gBAAgB,EAAE,CAAC;QACnBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBkJ,UAAU,EAAE,CAAC;MACf,CAAC;MACDhJ,QAAQ,EAAE,CACRkD,mBAAmB,CAAC;QAClBT,oBAAoB,EAAE;UACpBhD,EAAE,EAAEuB,iBAAiB;UACrB0B,sBAAsB,EAAE,IAAI;UAC5B6G,eAAe,EAAE,IAAI;UACrBpG,YAAY,EAAE;YAAE1D,EAAE,EAAEwB;UAAgB,CAAC;UACrCmC,YAAY,EAAE;QAChB;MACF,CAAC,CAAC;IAEN,CAAC,CAAC;IAEF,MAAM;MAAEgD;IAAmB,CAAC,GAAGZ,qBAAqB,CAAC;MACnDf,aAAa;MACbO,YAAY,EAAE,CAACrC,2BAA2B,CAAC,CAAC,CAAC;MAC7C+C,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ;IAC3D,CAAC,CAAC;IAEF,MAAM2D,iBAAiB,CAAC,CAAC;;IAEzB;IACA;IACAO,MAAM,CAACwC,kBAAkB,CAAC,CAACyB,oBAAoB,CAC7ClH,iBAAiB,EACjBiD,MAAM,CAACyE,GAAG,CAACP,gBAAgB,CAAC;MAAEpI,KAAK,EAAEkE,MAAM,CAACmF,QAAQ,CAAC;IAAE,CAAC,CAC1D,CAAC;EACH,CAAC,CAAC;EAEFvC,EAAE,CAAC,4EAA4E,EAAE,YAAY;IAC3F,MAAM/B,aAAa,GAAGvD,kBAAkB,CAAC;MACvCzB,EAAE,EAAEkB,iBAAiB;MACrBjB,KAAK,EAAE,OAAO;MACdK,WAAW,EAAE,8CAA8C;MAC3DR,IAAI,EAAE;QAAEE,EAAE,EAAEmB;MAAQ,CAAC;MACrBjB,eAAe,EAAE;QACfC,gBAAgB,EAAE,CAAC;QACnBC,aAAa,EAAE,UAAU;QACzBC,WAAW,EAAE,UAAU;QACvBkJ,UAAU,EAAE,CAAC;MACf,CAAC;MACDhJ,QAAQ,EAAE,CAACkD,mBAAmB,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM;MAAE+C,kBAAkB;MAAEG,kBAAkB;MAAEF;IAA+B,CAAC,GAC9EV,qBAAqB,CAAC;MACpBf,aAAa;MACbO,YAAY,EAAE,CAACrC,2BAA2B,CAAC,CAAC,CAAC;MAC7C+C,WAAW,EAAE;QAAEjG,EAAE,EAAEmB;MAAQ,CAAC;MAC5B+E,eAAe,EAAE;QAAElG,EAAE,EAAEkB,iBAAiB;QAAEjB,KAAK,EAAE;MAAQ;IAC3D,CAAC,CAAC;IACJwG,8BAA8B,CAACsD,iBAAiB,CAAC,IAAIC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE3F,MAAMjG,QAAQ,GAAG,MAAMH,iBAAiB,CAAC,CAAC;IAE1CO,MAAM,CAACJ,QAAQ,CAACuD,cAAc,CAAC,CAAC,CAAC,CAACE,IAAI,CAAC,CAACyC,IAAI,CAAC,KAAK,CAAC;IACnD9F,MAAM,CAACJ,QAAQ,CAACuD,cAAc,CAAC,CAAC,CAAC,CAAC5H,KAAK,CAAC,CAACmK,SAAS,CAAC,8BAA8B,CAAC;IAClF;IACA;IACA1F,MAAM,CAACwC,kBAAkB,CAAC,CAACyB,oBAAoB,CAC7ClH,iBAAiB,EACjBiD,MAAM,CAACyE,GAAG,CAACP,gBAAgB,CAAC;MAAEpI,KAAK,EAAEkE,MAAM,CAACmF,QAAQ,CAAC;IAAE,CAAC,CAC1D,CAAC;IACDnF,MAAM,CAACqC,kBAAkB,CAAC,CAACoC,GAAG,CAACxE,gBAAgB,CAAC,CAAC;EACnD,CAAC,CAAC;EAEF2C,EAAE,CAAC,mDAAmD,EAAE,YAAY;IAClE,MAAMwB,WAAW,GAAG;MAAEC,IAAI,EAAE,iBAAiB;MAAExJ,IAAI,EAAE;IAAkB,CAAC;IACxE,MAAMkL,6BAA6B,GAAG,CACpCzI,kBAAkB,CAAC;MACjBnB,WAAW,EAAE,iCAAiC;MAC9CT,kBAAkB,EAAE,CAAC;QAAE4I,MAAM,EAAE,aAAa;QAAEC,IAAI,EAAEH;MAAY,CAAC;IACnE,CAAC,CAAC,CACH;IACD1G,UAAU,CAACqI,6BAA6B,CAAC;IACzCnC,sBAAsB,CAAC,CAAC;IACxBrJ,OAAO,CAACa,UAAU,CAACwK,iBAAiB,CAAC,IAAIC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEhE,MAAM;MAAElG;IAAO,CAAC,GAAG1F,UAAU,CAAC,MAAME,kBAAkB,CAAC,CAAC,CAAC;IACzD,IAAIyF,QAAQ;IACZ,MAAM1F,GAAG,CAAC,YAAY;MACpB0F,QAAQ,GAAG,MAAMD,MAAM,CAACE,OAAO,CAAC;QAC9BrE,SAAS,EAAEuK,6BAA6B;QACxChI,MAAM,EAAE;UAAElC,EAAE,EAAE;QAAU;MAC1B,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFmE,MAAM,CAACJ,QAAQ,CAACuD,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC6C,aAAa,CAAC;MAC/C3C,IAAI,EAAE,IAAI;MACV9H,KAAK,EAAE,IAAI;MACX+H,MAAM,EAAE,OAAO;MACfC,gBAAgB,EAAE,QAAQ;MAC1BC,gBAAgB,EAAE,CAChB;QAAEyC,SAAS,EAAE,QAAQ;QAAE5B,IAAI,EAAE,iBAAiB;QAAE6B,OAAO,EAAE;MAAgB,CAAC;IAE9E,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -72,7 +72,7 @@ const createOONReferral = async function () {
|
|
|
72
72
|
try {
|
|
73
73
|
let result;
|
|
74
74
|
const oonProvider = referral.out_of_network_providers[0];
|
|
75
|
-
if (oonProvider.provider_type ===
|
|
75
|
+
if (oonProvider.provider_type === 'CUSTOM') {
|
|
76
76
|
const unlistedProgramNote = {
|
|
77
77
|
subjectType: 'case',
|
|
78
78
|
subject: referral.case_id,
|
|
@@ -145,7 +145,7 @@ const sendReferrals = async _ref => {
|
|
|
145
145
|
try {
|
|
146
146
|
if (!isOON && old_receiving_network !== new_receiving_network) {
|
|
147
147
|
return {
|
|
148
|
-
errorMessage:
|
|
148
|
+
errorMessage: 'Error: The organization is in a different network than the original sender.'
|
|
149
149
|
};
|
|
150
150
|
}
|
|
151
151
|
if (['sent', 'in_review'].includes(oldReferral.state)) {
|
|
@@ -169,7 +169,7 @@ const sendReferrals = async _ref => {
|
|
|
169
169
|
const results = await Promise.all(newReferrals.map(referral => !isOON ? createReferral(referral) : createOONReferral(referral, kase)));
|
|
170
170
|
return results;
|
|
171
171
|
} catch (error) {
|
|
172
|
-
console.error(
|
|
172
|
+
console.error('Error sending referral', error);
|
|
173
173
|
return false;
|
|
174
174
|
}
|
|
175
175
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendReferral.js","names":["isError","coreApi","formatShortDate2FromTimestamp","updateCase","kase","options","arguments","length","undefined","state","otherOptions","caseData","service_type_id","service","description","client_need","person_conditions","map","id","type","opened_date","primary_worker","primary_worker_id","updateRecord","error","console","acceptReferral","referral","isHttpSuccess","response","codeNumber","status","archiveReferral","referralId","flagged_for_sender","createOONReferral","result","oonProvider","out_of_network_providers","provider_type","unlistedProgramNote","subjectType","subject","case_id","employee","visibility","category","text","custom_name","createRecord","newReferral","is_grouped","case","sending_provider","referred_by_group_id","sending_network","referred_by_network_id","receiving_network","referred_to_network_id","receiving_provider","provider_id","program_id","receiving_program","includes","createReferral","referred_to_groups","group_id","createdReferral","sendReferrals","_ref","oldReferral","isOON","newReferrals","old_receiving_network","new_receiving_network","errorMessage","acceptedReferral","updatedCase","Promise","all","client_need_id","results"],"sources":["../../src/hooks/sendReferral.js"],"sourcesContent":["import { isError } from 'lodash';\nimport { coreApi } from '../api/config';\nimport { formatShortDate2FromTimestamp } from '../components/service_authorization/formatShortDate';\n\nconst updateCase = async (kase, options = {}) => {\n try {\n const { state, ...otherOptions } = options;\n const caseData = {\n ...(kase.service_type_id && { service: kase.service_type_id }),\n ...(kase.description && { description: kase.description }),\n ...(kase.client_need && { person_conditions: kase.client_need.map(id => ({ id, type: 'person_condition' })) }),\n ...(kase.opened_date && { opened_date: formatShortDate2FromTimestamp(kase.opened_date) }),\n ...(state && { \n state,\n primary_worker: state !== 'draft' ? kase.primary_worker_id : null\n }),\n ...otherOptions\n };\n return await coreApi.updateRecord('case', kase.id, caseData);\n } catch (error) {\n console.error('Error updating case attributes:', error);\n return false;\n }\n};\n\nconst acceptReferral = async (referral = {}) => {\n try {\n return await coreApi.updateRecord('referral', referral.id, {\n state: 'accepted',\n });\n } catch (error) {\n console.error('Error accepting referral:', error);\n return false;\n }\n};\n\nexport const isHttpSuccess = (response) => {\n let codeNumber = response;\n if (typeof codeNumber === 'object') {\n codeNumber = response.status;\n }\n return isError(response) || (codeNumber > 199 && codeNumber < 300);\n};\n\nexport const archiveReferral = async (referralId) => {\n try {\n const response = await coreApi.updateRecord('referral', referralId, {\n flagged_for_sender: false,\n });\n if (!response || !isHttpSuccess(response.status)) return false;\n return true;\n } catch (error) {\n console.error('Error archiveReferral:', error);\n return false;\n }\n};\n\nconst createOONReferral = async (referral = {}, kase = {}) => {\n try {\n let result;\n const oonProvider = referral.out_of_network_providers[0];\n if (oonProvider.provider_type === \"CUSTOM\") {\n const unlistedProgramNote = {\n subjectType: 'case',\n subject: referral.case_id,\n employee: kase.primary_worker_id,\n visibility: 'public',\n category: 'external_provider',\n text: `Referred off platform to ${oonProvider.custom_name}`\n }\n result = await coreApi.createRecord('note', unlistedProgramNote);\n } else {\n const newReferral = {\n is_grouped: referral.is_grouped,\n state: 'off_platform',\n case: referral.case_id,\n sending_provider: referral.referred_by_group_id,\n sending_network: referral.referred_by_network_id,\n receiving_network: referral.referred_to_network_id || referral.referred_by_network_id,\n receiving_provider: oonProvider.provider_id,\n ...(oonProvider.program_id ? { receiving_program: oonProvider.program_id } : null),\n }\n result = await coreApi.createRecord('referral', newReferral);\n }\n if (['recalled', 'declined'].includes(referral.state)) {\n await archiveReferral(referral.id);\n }\n return result;\n } catch (error) {\n console.error('Error creating Out Of Network case:', error);\n return false;\n }\n};\n\nconst createReferral = async (referral = {}) => {\n try {\n const newReferral = {\n state: 'sent',\n case: referral.case_id,\n sending_provider: referral.referred_by_group_id,\n sending_network: referral.referred_by_network_id,\n receiving_network: referral.referred_to_network_id,\n receiving_provider: referral.referred_to_groups[0].group_id,\n ...(referral.referred_to_groups[0].program_id ? { receiving_program: referral.referred_to_groups[0].program_id } : {}),\n is_grouped: referral.is_grouped,\n }\n const createdReferral = await coreApi.createRecord('referral', newReferral)\n if (['recalled', 'declined'].includes(referral.state)) {\n await archiveReferral(referral.id);\n }\n return createdReferral;\n } catch (error) {\n console.error('Error creating referral:', error);\n return false;\n }\n};\n\n// To forward a referral, first accept it, then update the case with the new service type, and finally create the new referral/s with the new provider.\nconst sendReferrals = async ({ oldReferral, isOON = false, newReferrals, kase, old_receiving_network, new_receiving_network }) => {\n try {\n if (!isOON && old_receiving_network !== new_receiving_network) {\n return { errorMessage: \"Error: The organization is in a different network than the original sender.\" };\n }\n\n if (['sent', 'in_review'].includes(oldReferral.state)) {\n const [acceptedReferral, updatedCase] = await Promise.all([\n acceptReferral(oldReferral),\n updateCase(kase),\n ]);\n if (!acceptedReferral || !updatedCase) return false;\n } else if (['recalled', 'declined'].includes(oldReferral.state) && kase?.client_need_id) {\n await updateCase({ id: kase.id, client_need_id: kase.client_need_id }); //we only update the client need id\n }\n if (isOON) {\n await updateCase({\n id: kase.id,\n opened_date: kase.opened_date,\n primary_worker_id: kase.primary_worker_id,\n }, { state: 'off_platform' });\n }\n\n const results = await Promise.all(newReferrals.map(referral =>\n !isOON ? createReferral(referral) : createOONReferral(referral, kase)\n ));\n return results;\n } catch (error) {\n console.error(\"Error sending referral\", error);\n return false;\n }\n};\n\nexport default sendReferrals;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"sendReferral.js","names":["isError","coreApi","formatShortDate2FromTimestamp","updateCase","kase","options","arguments","length","undefined","state","otherOptions","caseData","service_type_id","service","description","client_need","person_conditions","map","id","type","opened_date","primary_worker","primary_worker_id","updateRecord","error","console","acceptReferral","referral","isHttpSuccess","response","codeNumber","status","archiveReferral","referralId","flagged_for_sender","createOONReferral","result","oonProvider","out_of_network_providers","provider_type","unlistedProgramNote","subjectType","subject","case_id","employee","visibility","category","text","custom_name","createRecord","newReferral","is_grouped","case","sending_provider","referred_by_group_id","sending_network","referred_by_network_id","receiving_network","referred_to_network_id","receiving_provider","provider_id","program_id","receiving_program","includes","createReferral","referred_to_groups","group_id","createdReferral","sendReferrals","_ref","oldReferral","isOON","newReferrals","old_receiving_network","new_receiving_network","errorMessage","acceptedReferral","updatedCase","Promise","all","client_need_id","results"],"sources":["../../src/hooks/sendReferral.js"],"sourcesContent":["import { isError } from 'lodash';\nimport { coreApi } from '../api/config';\nimport { formatShortDate2FromTimestamp } from '../components/service_authorization/formatShortDate';\n\nconst updateCase = async (kase, options = {}) => {\n try {\n const { state, ...otherOptions } = options;\n const caseData = {\n ...(kase.service_type_id && { service: kase.service_type_id }),\n ...(kase.description && { description: kase.description }),\n ...(kase.client_need && {\n person_conditions: kase.client_need.map((id) => ({ id, type: 'person_condition' })),\n }),\n ...(kase.opened_date && { opened_date: formatShortDate2FromTimestamp(kase.opened_date) }),\n ...(state && {\n state,\n primary_worker: state !== 'draft' ? kase.primary_worker_id : null,\n }),\n ...otherOptions,\n };\n return await coreApi.updateRecord('case', kase.id, caseData);\n } catch (error) {\n console.error('Error updating case attributes:', error);\n return false;\n }\n};\n\nconst acceptReferral = async (referral = {}) => {\n try {\n return await coreApi.updateRecord('referral', referral.id, {\n state: 'accepted',\n });\n } catch (error) {\n console.error('Error accepting referral:', error);\n return false;\n }\n};\n\nexport const isHttpSuccess = (response) => {\n let codeNumber = response;\n if (typeof codeNumber === 'object') {\n codeNumber = response.status;\n }\n return isError(response) || (codeNumber > 199 && codeNumber < 300);\n};\n\nexport const archiveReferral = async (referralId) => {\n try {\n const response = await coreApi.updateRecord('referral', referralId, {\n flagged_for_sender: false,\n });\n if (!response || !isHttpSuccess(response.status)) return false;\n return true;\n } catch (error) {\n console.error('Error archiveReferral:', error);\n return false;\n }\n};\n\nconst createOONReferral = async (referral = {}, kase = {}) => {\n try {\n let result;\n const oonProvider = referral.out_of_network_providers[0];\n if (oonProvider.provider_type === 'CUSTOM') {\n const unlistedProgramNote = {\n subjectType: 'case',\n subject: referral.case_id,\n employee: kase.primary_worker_id,\n visibility: 'public',\n category: 'external_provider',\n text: `Referred off platform to ${oonProvider.custom_name}`,\n };\n result = await coreApi.createRecord('note', unlistedProgramNote);\n } else {\n const newReferral = {\n is_grouped: referral.is_grouped,\n state: 'off_platform',\n case: referral.case_id,\n sending_provider: referral.referred_by_group_id,\n sending_network: referral.referred_by_network_id,\n receiving_network: referral.referred_to_network_id || referral.referred_by_network_id,\n receiving_provider: oonProvider.provider_id,\n ...(oonProvider.program_id ? { receiving_program: oonProvider.program_id } : null),\n };\n result = await coreApi.createRecord('referral', newReferral);\n }\n if (['recalled', 'declined'].includes(referral.state)) {\n await archiveReferral(referral.id);\n }\n return result;\n } catch (error) {\n console.error('Error creating Out Of Network case:', error);\n return false;\n }\n};\n\nconst createReferral = async (referral = {}) => {\n try {\n const newReferral = {\n state: 'sent',\n case: referral.case_id,\n sending_provider: referral.referred_by_group_id,\n sending_network: referral.referred_by_network_id,\n receiving_network: referral.referred_to_network_id,\n receiving_provider: referral.referred_to_groups[0].group_id,\n ...(referral.referred_to_groups[0].program_id\n ? { receiving_program: referral.referred_to_groups[0].program_id }\n : {}),\n is_grouped: referral.is_grouped,\n };\n const createdReferral = await coreApi.createRecord('referral', newReferral);\n if (['recalled', 'declined'].includes(referral.state)) {\n await archiveReferral(referral.id);\n }\n return createdReferral;\n } catch (error) {\n console.error('Error creating referral:', error);\n return false;\n }\n};\n\n// To forward a referral, first accept it, then update the case with the new service type, and finally create the new referral/s with the new provider.\nconst sendReferrals = async ({\n oldReferral,\n isOON = false,\n newReferrals,\n kase,\n old_receiving_network,\n new_receiving_network,\n}) => {\n try {\n if (!isOON && old_receiving_network !== new_receiving_network) {\n return {\n errorMessage: 'Error: The organization is in a different network than the original sender.',\n };\n }\n\n if (['sent', 'in_review'].includes(oldReferral.state)) {\n const [acceptedReferral, updatedCase] = await Promise.all([\n acceptReferral(oldReferral),\n updateCase(kase),\n ]);\n if (!acceptedReferral || !updatedCase) return false;\n } else if (['recalled', 'declined'].includes(oldReferral.state) && kase?.client_need_id) {\n await updateCase({ id: kase.id, client_need_id: kase.client_need_id }); //we only update the client need id\n }\n if (isOON) {\n await updateCase(\n {\n id: kase.id,\n opened_date: kase.opened_date,\n primary_worker_id: kase.primary_worker_id,\n },\n { state: 'off_platform' },\n );\n }\n\n const results = await Promise.all(\n newReferrals.map((referral) =>\n !isOON ? createReferral(referral) : createOONReferral(referral, kase),\n ),\n );\n return results;\n } catch (error) {\n console.error('Error sending referral', error);\n return false;\n }\n};\n\nexport default sendReferrals;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useClinicalModificationOptions.js","names":["useEffect","useRef","useState","debounce","groupBy","map","useFind","useClinicalModificationOptions","query","code","setCode","debounceSearch","current","cancel","data","response","queryConfig","enabled","placeholderData","undefined","page","number","size","cmCodes","clinicalModificationOptions","val","key","label","value","join","id"],"sources":["../../src/hooks/useClinicalModificationOptions.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { debounce, groupBy, map } from 'lodash';\nimport { useFind } from '../api/ApiHooks';\n\nconst useClinicalModificationOptions = (query) => {\n const [code, setCode] = useState(null);\n\n const debounceSearch = useRef(debounce(setCode, 400)).current;\n\n useEffect(() => {\n debounceSearch(query);\n\n return () => {\n
|
|
1
|
+
{"version":3,"file":"useClinicalModificationOptions.js","names":["useEffect","useRef","useState","debounce","groupBy","map","useFind","useClinicalModificationOptions","query","code","setCode","debounceSearch","current","cancel","data","response","queryConfig","enabled","placeholderData","undefined","page","number","size","cmCodes","clinicalModificationOptions","val","key","label","value","join","id"],"sources":["../../src/hooks/useClinicalModificationOptions.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { debounce, groupBy, map } from 'lodash';\nimport { useFind } from '../api/ApiHooks';\n\nconst useClinicalModificationOptions = (query) => {\n const [code, setCode] = useState(null);\n\n const debounceSearch = useRef(debounce(setCode, 400)).current;\n\n useEffect(() => {\n debounceSearch(query);\n\n return () => {\n debounceSearch.cancel();\n };\n }, [debounceSearch, query]);\n\n const { data: response } = useFind(\n 'clinical_modifications',\n {\n code,\n },\n {\n queryConfig: {\n enabled: !!code,\n placeholderData: undefined,\n },\n page: { number: 1, size: 30 },\n },\n );\n\n const cmCodes = groupBy(response?.data?.data ?? [], 'code');\n const clinicalModificationOptions = map(cmCodes, (val, key) => ({\n label: key,\n value: map(val, 'code').join(','),\n id: map(val, 'id').join(','),\n }));\n\n return clinicalModificationOptions;\n};\n\nexport default useClinicalModificationOptions;\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACnD,SAASC,QAAQ,EAAEC,OAAO,EAAEC,GAAG,QAAQ,QAAQ;AAC/C,SAASC,OAAO,QAAQ,iBAAiB;AAEzC,MAAMC,8BAA8B,GAAIC,KAAK,IAAK;EAChD,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGR,QAAQ,CAAC,IAAI,CAAC;EAEtC,MAAMS,cAAc,GAAGV,MAAM,CAACE,QAAQ,CAACO,OAAO,EAAE,GAAG,CAAC,CAAC,CAACE,OAAO;EAE7DZ,SAAS,CAAC,MAAM;IACdW,cAAc,CAACH,KAAK,CAAC;IAErB,OAAO,MAAM;MACXG,cAAc,CAACE,MAAM,CAAC,CAAC;IACzB,CAAC;EACH,CAAC,EAAE,CAACF,cAAc,EAAEH,KAAK,CAAC,CAAC;EAE3B,MAAM;IAAEM,IAAI,EAAEC;EAAS,CAAC,GAAGT,OAAO,CAChC,wBAAwB,EACxB;IACEG;EACF,CAAC,EACD;IACEO,WAAW,EAAE;MACXC,OAAO,EAAE,CAAC,CAACR,IAAI;MACfS,eAAe,EAAEC;IACnB,CAAC;IACDC,IAAI,EAAE;MAAEC,MAAM,EAAE,CAAC;MAAEC,IAAI,EAAE;IAAG;EAC9B,CACF,CAAC;EAED,MAAMC,OAAO,GAAGnB,OAAO,CAACW,QAAQ,EAAED,IAAI,EAAEA,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC;EAC3D,MAAMU,2BAA2B,GAAGnB,GAAG,CAACkB,OAAO,EAAE,CAACE,GAAG,EAAEC,GAAG,MAAM;IAC9DC,KAAK,EAAED,GAAG;IACVE,KAAK,EAAEvB,GAAG,CAACoB,GAAG,EAAE,MAAM,CAAC,CAACI,IAAI,CAAC,GAAG,CAAC;IACjCC,EAAE,EAAEzB,GAAG,CAACoB,GAAG,EAAE,IAAI,CAAC,CAACI,IAAI,CAAC,GAAG;EAC7B,CAAC,CAAC,CAAC;EAEH,OAAOL,2BAA2B;AACpC,CAAC;AAED,eAAejB,8BAA8B","ignoreList":[]}
|
|
@@ -339,7 +339,7 @@ export default function useCreateReferrals() {
|
|
|
339
339
|
return Promise.all(promises).then(responses => {
|
|
340
340
|
return responses;
|
|
341
341
|
}).catch(err => {
|
|
342
|
-
CALLBACKS.notify.error(
|
|
342
|
+
CALLBACKS.notify.error('Error submitting Assessments');
|
|
343
343
|
throw err;
|
|
344
344
|
});
|
|
345
345
|
};
|
|
@@ -513,7 +513,7 @@ export default function useCreateReferrals() {
|
|
|
513
513
|
});
|
|
514
514
|
return true;
|
|
515
515
|
} catch {
|
|
516
|
-
result.shippingDetail[index].error =
|
|
516
|
+
result.shippingDetail[index].error = 'Error creating the note on the case for the unlisted program';
|
|
517
517
|
return false;
|
|
518
518
|
}
|
|
519
519
|
};
|
|
@@ -971,7 +971,7 @@ export default function useCreateReferrals() {
|
|
|
971
971
|
if (err.message === DRAFT_AUTHORIZATION_PROGRAM_CHANGE_MESSAGE) {
|
|
972
972
|
CALLBACKS.notify.error(DRAFT_AUTHORIZATION_PROGRAM_CHANGE_MESSAGE);
|
|
973
973
|
} else if (!draft) {
|
|
974
|
-
CALLBACKS.notify.error(
|
|
974
|
+
CALLBACKS.notify.error('Error updating the Draft Referral');
|
|
975
975
|
}
|
|
976
976
|
};
|
|
977
977
|
const updateDraftReferralCrtb1239Core = async function (referral) {
|
|
@@ -1117,7 +1117,7 @@ export default function useCreateReferrals() {
|
|
|
1117
1117
|
if (err.message === DRAFT_AUTHORIZATION_PROGRAM_CHANGE_MESSAGE) {
|
|
1118
1118
|
CALLBACKS.notify.error(DRAFT_AUTHORIZATION_PROGRAM_CHANGE_MESSAGE);
|
|
1119
1119
|
} else if (!draft) {
|
|
1120
|
-
CALLBACKS.notify.error(
|
|
1120
|
+
CALLBACKS.notify.error('Error updating the Draft Referral');
|
|
1121
1121
|
}
|
|
1122
1122
|
throw err;
|
|
1123
1123
|
}
|
|
@@ -1149,5 +1149,4 @@ export default function useCreateReferrals() {
|
|
|
1149
1149
|
};
|
|
1150
1150
|
};
|
|
1151
1151
|
}
|
|
1152
|
-
;
|
|
1153
1152
|
//# sourceMappingURL=useCreateReferrals.js.map
|