@unite-us/app-create-referral 0.15.166 → 0.15.168
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 +3 -4
- package/dist/AppReferrals.js.map +1 -1
- package/dist/AppReferrals.test.js +27 -20
- package/dist/AppReferrals.test.js.map +1 -1
- package/dist/__testUtils__/mockData/utils.js +13 -19
- package/dist/__testUtils__/mockData/utils.js.map +1 -1
- package/dist/__testUtils__/mockServer/handlers.js +7 -13
- package/dist/__testUtils__/mockServer/handlers.js.map +1 -1
- package/dist/__testUtils__/test-utils.js +10 -15
- package/dist/__testUtils__/test-utils.js.map +1 -1
- package/dist/actions/Document/Contact/Group/fileUploadUtils.js +1 -1
- package/dist/actions/Document/Contact/Group/fileUploadUtils.js.map +1 -1
- package/dist/actions/Group/fetchCoreGroupForms.js +1 -1
- package/dist/actions/Group/fetchCoreGroupForms.js.map +1 -1
- package/dist/actions/Referral/cannotMoveToReferralReasons.js +10 -11
- package/dist/actions/Referral/cannotMoveToReferralReasons.js.map +1 -1
- package/dist/actions/Referral/fetchCoreServices.js +19 -25
- package/dist/actions/Referral/fetchCoreServices.js.map +1 -1
- package/dist/actions/Referral/removeReferralProgram.js +3 -5
- package/dist/actions/Referral/removeReferralProgram.js.map +1 -1
- package/dist/api/ApiHooks.js +39 -36
- package/dist/api/ApiHooks.js.map +1 -1
- package/dist/api/config.js +9 -8
- package/dist/api/config.js.map +1 -1
- package/dist/common/form/CurrencyField/index.js +3 -5
- package/dist/common/form/CurrencyField/index.js.map +1 -1
- package/dist/common/form/DocumentUploader/components/ContactDocumentsSelector.js +3 -3
- package/dist/common/form/DocumentUploader/components/ContactDocumentsSelector.js.map +1 -1
- package/dist/common/form/DocumentUploader/components/DocumentsListView.js +1 -1
- package/dist/common/form/DocumentUploader/components/DocumentsListView.js.map +1 -1
- package/dist/common/form/FileUploadV2/FileUpload.js +27 -15
- package/dist/common/form/FileUploadV2/FileUpload.js.map +1 -1
- package/dist/common/form/FileUploadV2/FileUpload.test.js +6 -10
- package/dist/common/form/FileUploadV2/FileUpload.test.js.map +1 -1
- package/dist/common/form/FileUploadV2/components/FilePreviewWrapper.js +6 -7
- package/dist/common/form/FileUploadV2/components/FilePreviewWrapper.js.map +1 -1
- package/dist/common/form/FormForm/index.js +10 -10
- package/dist/common/form/FormForm/index.js.map +1 -1
- package/dist/components/DollarAmount.js +2 -2
- package/dist/components/DollarAmount.js.map +1 -1
- package/dist/components/LineItem.js +1 -1
- package/dist/components/LineItem.js.map +1 -1
- package/dist/components/ReferralStepper.js +4 -5
- package/dist/components/ReferralStepper.js.map +1 -1
- package/dist/components/SearchableField.js +3 -4
- package/dist/components/SearchableField.js.map +1 -1
- package/dist/components/Stepper.js +7 -7
- package/dist/components/Stepper.js.map +1 -1
- package/dist/components/modal/Dialog.js +15 -10
- package/dist/components/modal/Dialog.js.map +1 -1
- package/dist/components/service_authorization/AuthorizationSpendCard.js +5 -5
- package/dist/components/service_authorization/AuthorizationSpendCard.js.map +1 -1
- package/dist/components/service_authorization/CapsInfo.js +10 -10
- package/dist/components/service_authorization/CapsInfo.js.map +1 -1
- package/dist/components/service_authorization/CaseStatus.js +2 -2
- package/dist/components/service_authorization/CaseStatus.js.map +1 -1
- package/dist/components/service_authorization/PreviousAuthorizationRequestsDetails.js +1 -2
- package/dist/components/service_authorization/PreviousAuthorizationRequestsDetails.js.map +1 -1
- package/dist/components/service_authorization/ReferralAuthSpendExpandable.js +2 -2
- package/dist/components/service_authorization/ReferralAuthSpendExpandable.js.map +1 -1
- package/dist/components/service_authorization/ReferralAuthorizationRequestSummary.js +4 -4
- package/dist/components/service_authorization/ReferralAuthorizationRequestSummary.js.map +1 -1
- package/dist/components/service_authorization/formatShortDate.js +1 -1
- package/dist/components/service_authorization/formatShortDate.js.map +1 -1
- package/dist/components/spinners/Spinner/Spinner.js +1 -1
- package/dist/components/spinners/Spinner/Spinner.js.map +1 -1
- package/dist/context/AppCreateReferralProvider.js +4 -4
- package/dist/context/AppCreateReferralProvider.js.map +1 -1
- package/dist/context/state.js +14 -6
- package/dist/context/state.js.map +1 -1
- package/dist/context/withAppCreateReferralContext.js +3 -5
- package/dist/context/withAppCreateReferralContext.js.map +1 -1
- package/dist/hooks/__tests__/useCreateReferrals.test.js +19 -17
- package/dist/hooks/__tests__/useCreateReferrals.test.js.map +1 -1
- package/dist/hooks/sendReferral.js +38 -35
- package/dist/hooks/sendReferral.js.map +1 -1
- package/dist/hooks/useClinicalModificationOptions.js +1 -2
- package/dist/hooks/useClinicalModificationOptions.js.map +1 -1
- package/dist/hooks/useCreateReferrals.js +107 -90
- package/dist/hooks/useCreateReferrals.js.map +1 -1
- package/dist/hooks/useCreateResourceList.js +11 -12
- package/dist/hooks/useCreateResourceList.js.map +1 -1
- package/dist/hooks/useCreateShareEvent.js +2 -2
- package/dist/hooks/useCreateShareEvent.js.map +1 -1
- package/dist/hooks/useForwardReferral.js +36 -36
- package/dist/hooks/useForwardReferral.js.map +1 -1
- package/dist/hooks/useUpdateResourceList.js +16 -17
- package/dist/hooks/useUpdateResourceList.js.map +1 -1
- package/dist/pages/builder/ReferralBuilder.js +32 -31
- package/dist/pages/builder/ReferralBuilder.js.map +1 -1
- package/dist/pages/builder/ReferralBuilderForm.js +7 -10
- package/dist/pages/builder/ReferralBuilderForm.js.map +1 -1
- package/dist/pages/builder/ReferralBuilderFormContent.js +43 -36
- package/dist/pages/builder/ReferralBuilderFormContent.js.map +1 -1
- package/dist/pages/builder/__tests__/AuthorizationRequiredPrograms.test.js +1 -1
- package/dist/pages/builder/__tests__/AuthorizationRequiredPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/NonSensitiveGroupedPrograms.test.js +16 -16
- package/dist/pages/builder/__tests__/NonSensitiveGroupedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/NonSensitiveSingleProgram.test.js +12 -12
- package/dist/pages/builder/__tests__/NonSensitiveSingleProgram.test.js.map +1 -1
- package/dist/pages/builder/__tests__/ReferralBuilderForm.attachments.test.js +19 -14
- package/dist/pages/builder/__tests__/ReferralBuilderForm.attachments.test.js.map +1 -1
- package/dist/pages/builder/__tests__/SensitiveProviderGroupedPrograms.test.js +12 -12
- package/dist/pages/builder/__tests__/SensitiveProviderGroupedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/SensitiveServiceGroupedPrograms.test.js +1 -1
- package/dist/pages/builder/__tests__/SensitiveServiceGroupedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/SensitiveServiceSensitiveProviderGroupedPrograms.test.js +7 -7
- package/dist/pages/builder/__tests__/SensitiveServiceSensitiveProviderGroupedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/SensitiveSingleProgram.test.js +15 -17
- package/dist/pages/builder/__tests__/SensitiveSingleProgram.test.js.map +1 -1
- package/dist/pages/builder/__tests__/buildDraftState.test.js +4 -6
- package/dist/pages/builder/__tests__/buildDraftState.test.js.map +1 -1
- package/dist/pages/builder/__tests__/buildGroupedReferrals.networkBug.test.js +4 -10
- package/dist/pages/builder/__tests__/buildGroupedReferrals.networkBug.test.js.map +1 -1
- package/dist/pages/builder/buildDraftState.js +2 -2
- package/dist/pages/builder/buildDraftState.js.map +1 -1
- package/dist/pages/builder/components/AuthorizationSubform.js +19 -19
- package/dist/pages/builder/components/AuthorizationSubform.js.map +1 -1
- package/dist/pages/builder/components/ChooseOneServiceTypeModal.js +5 -6
- package/dist/pages/builder/components/ChooseOneServiceTypeModal.js.map +1 -1
- package/dist/pages/builder/components/ProgramHeader.js +1 -1
- package/dist/pages/builder/components/ProgramHeader.js.map +1 -1
- package/dist/pages/builder/components/ProgramMenu.js +1 -1
- package/dist/pages/builder/components/ProgramMenu.js.map +1 -1
- package/dist/pages/builder/components/ReferralBuilderContent.js +5 -4
- package/dist/pages/builder/components/ReferralBuilderContent.js.map +1 -1
- package/dist/pages/builder/components/ReferralCard.js +11 -11
- package/dist/pages/builder/components/ReferralCard.js.map +1 -1
- package/dist/pages/builder/components/ReferralClientNeedsField.js +4 -6
- package/dist/pages/builder/components/ReferralClientNeedsField.js.map +1 -1
- package/dist/pages/builder/components/ReferralProgramCard.js +2 -2
- package/dist/pages/builder/components/ReferralProgramCard.js.map +1 -1
- package/dist/pages/builder/components/ReferralProgramMenu.js +3 -3
- package/dist/pages/builder/components/ReferralProgramMenu.js.map +1 -1
- package/dist/pages/builder/constants.js +18 -7
- package/dist/pages/builder/constants.js.map +1 -1
- package/dist/pages/builder/hooks/useBuildReferrals.js +6 -13
- package/dist/pages/builder/hooks/useBuildReferrals.js.map +1 -1
- package/dist/pages/builder/hooks/useReferralMutations.js +22 -15
- package/dist/pages/builder/hooks/useReferralMutations.js.map +1 -1
- package/dist/pages/builder/utils/buildGroupedReferrals.js +14 -25
- package/dist/pages/builder/utils/buildGroupedReferrals.js.map +1 -1
- package/dist/pages/builder/utils/buildGroupedReferralsHelpers.js +20 -40
- package/dist/pages/builder/utils/buildGroupedReferralsHelpers.js.map +1 -1
- package/dist/pages/builder/utils/formatProgramDetail.js +16 -18
- package/dist/pages/builder/utils/formatProgramDetail.js.map +1 -1
- package/dist/pages/builder/utils/referralBuilderFormDraftAuth.js +26 -26
- package/dist/pages/builder/utils/referralBuilderFormDraftAuth.js.map +1 -1
- package/dist/pages/builder/utils/referralBuilderFormUtils.js +15 -24
- package/dist/pages/builder/utils/referralBuilderFormUtils.js.map +1 -1
- package/dist/pages/builder/utils/referralBuilderFormValidation.js +20 -24
- package/dist/pages/builder/utils/referralBuilderFormValidation.js.map +1 -1
- package/dist/pages/builder/utils/referralBuilderUtils.js +20 -34
- package/dist/pages/builder/utils/referralBuilderUtils.js.map +1 -1
- package/dist/pages/builder/utils.js +45 -64
- package/dist/pages/builder/utils.js.map +1 -1
- package/dist/pages/review/DropdownMultiplesReferrals.js +12 -14
- package/dist/pages/review/DropdownMultiplesReferrals.js.map +1 -1
- package/dist/pages/review/ReferralsSent.js +19 -26
- package/dist/pages/review/ReferralsSent.js.map +1 -1
- package/dist/pages/review/Review.js +69 -88
- package/dist/pages/review/Review.js.map +1 -1
- package/dist/pages/review/SuccessReferralRedesign.js +2 -2
- package/dist/pages/review/SuccessReferralRedesign.js.map +1 -1
- package/dist/pages/review/__tests__/ReferralsSent.test.js +16 -16
- package/dist/pages/review/__tests__/ReferralsSent.test.js.map +1 -1
- package/dist/pages/review/__tests__/Review.test.js +30 -22
- package/dist/pages/review/__tests__/Review.test.js.map +1 -1
- package/dist/pages/review/constants.js +3 -3
- package/dist/pages/review/constants.js.map +1 -1
- package/dist/pages/review/referralStatusRedesign.js +5 -6
- package/dist/pages/review/referralStatusRedesign.js.map +1 -1
- package/dist/pages/supporting-info/SupportingInfo.js +14 -21
- package/dist/pages/supporting-info/SupportingInfo.js.map +1 -1
- package/dist/utils/attachmentUtils.js +1 -1
- package/dist/utils/attachmentUtils.js.map +1 -1
- package/dist/utils/handleDraftSaveResponse.js +1 -1
- package/dist/utils/handleDraftSaveResponse.js.map +1 -1
- package/dist/utils/referralToConsent.js +5 -8
- package/dist/utils/referralToConsent.js.map +1 -1
- package/dist/utils/validateCostAmount.js +1 -1
- package/dist/utils/validateCostAmount.js.map +1 -1
- package/dist/utils/validateUnitAmount.js +1 -1
- package/dist/utils/validateUnitAmount.js.map +1 -1
- package/package.json +1 -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","_objectSpread","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 = {}) => 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,8 +1,3 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
const _excluded = ["state"];
|
|
4
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
1
|
import { isError } from 'lodash';
|
|
7
2
|
import { coreApi } from '../api/config';
|
|
8
3
|
import { formatShortDate2FromTimestamp } from '../components/service_authorization/formatShortDate';
|
|
@@ -10,24 +5,31 @@ const updateCase = async function (kase) {
|
|
|
10
5
|
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
11
6
|
try {
|
|
12
7
|
const {
|
|
13
|
-
state
|
|
14
|
-
} = options,
|
|
15
|
-
otherOptions = _objectWithoutProperties(options, _excluded);
|
|
16
|
-
const caseData = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, kase.service_type_id && {
|
|
17
|
-
service: kase.service_type_id
|
|
18
|
-
}), kase.description && {
|
|
19
|
-
description: kase.description
|
|
20
|
-
}), kase.client_need && {
|
|
21
|
-
person_conditions: kase.client_need.map(id => ({
|
|
22
|
-
id,
|
|
23
|
-
type: 'person_condition'
|
|
24
|
-
}))
|
|
25
|
-
}), kase.opened_date && {
|
|
26
|
-
opened_date: formatShortDate2FromTimestamp(kase.opened_date)
|
|
27
|
-
}), state && {
|
|
28
8
|
state,
|
|
29
|
-
|
|
30
|
-
}
|
|
9
|
+
...otherOptions
|
|
10
|
+
} = options;
|
|
11
|
+
const caseData = {
|
|
12
|
+
...(kase.service_type_id && {
|
|
13
|
+
service: kase.service_type_id
|
|
14
|
+
}),
|
|
15
|
+
...(kase.description && {
|
|
16
|
+
description: kase.description
|
|
17
|
+
}),
|
|
18
|
+
...(kase.client_need && {
|
|
19
|
+
person_conditions: kase.client_need.map(id => ({
|
|
20
|
+
id,
|
|
21
|
+
type: 'person_condition'
|
|
22
|
+
}))
|
|
23
|
+
}),
|
|
24
|
+
...(kase.opened_date && {
|
|
25
|
+
opened_date: formatShortDate2FromTimestamp(kase.opened_date)
|
|
26
|
+
}),
|
|
27
|
+
...(state && {
|
|
28
|
+
state,
|
|
29
|
+
primary_worker: state !== 'draft' ? kase.primary_worker_id : null
|
|
30
|
+
}),
|
|
31
|
+
...otherOptions
|
|
32
|
+
};
|
|
31
33
|
return await coreApi.updateRecord('case', kase.id, caseData);
|
|
32
34
|
} catch (error) {
|
|
33
35
|
console.error('Error updating case attributes:', error);
|
|
@@ -77,21 +79,22 @@ const createOONReferral = async function () {
|
|
|
77
79
|
employee: kase.primary_worker_id,
|
|
78
80
|
visibility: 'public',
|
|
79
81
|
category: 'external_provider',
|
|
80
|
-
text:
|
|
82
|
+
text: `Referred off platform to ${oonProvider.custom_name}`
|
|
81
83
|
};
|
|
82
84
|
result = await coreApi.createRecord('note', unlistedProgramNote);
|
|
83
85
|
} else {
|
|
84
|
-
const newReferral =
|
|
86
|
+
const newReferral = {
|
|
85
87
|
is_grouped: referral.is_grouped,
|
|
86
88
|
state: 'off_platform',
|
|
87
89
|
case: referral.case_id,
|
|
88
90
|
sending_provider: referral.referred_by_group_id,
|
|
89
91
|
sending_network: referral.referred_by_network_id,
|
|
90
92
|
receiving_network: referral.referred_to_network_id || referral.referred_by_network_id,
|
|
91
|
-
receiving_provider: oonProvider.provider_id
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
receiving_provider: oonProvider.provider_id,
|
|
94
|
+
...(oonProvider.program_id ? {
|
|
95
|
+
receiving_program: oonProvider.program_id
|
|
96
|
+
} : null)
|
|
97
|
+
};
|
|
95
98
|
result = await coreApi.createRecord('referral', newReferral);
|
|
96
99
|
}
|
|
97
100
|
if (['recalled', 'declined'].includes(referral.state)) {
|
|
@@ -106,18 +109,18 @@ const createOONReferral = async function () {
|
|
|
106
109
|
const createReferral = async function () {
|
|
107
110
|
let referral = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
108
111
|
try {
|
|
109
|
-
const newReferral =
|
|
112
|
+
const newReferral = {
|
|
110
113
|
state: 'sent',
|
|
111
114
|
case: referral.case_id,
|
|
112
115
|
sending_provider: referral.referred_by_group_id,
|
|
113
116
|
sending_network: referral.referred_by_network_id,
|
|
114
117
|
receiving_network: referral.referred_to_network_id,
|
|
115
|
-
receiving_provider: referral.referred_to_groups[0].group_id
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
118
|
+
receiving_provider: referral.referred_to_groups[0].group_id,
|
|
119
|
+
...(referral.referred_to_groups[0].program_id ? {
|
|
120
|
+
receiving_program: referral.referred_to_groups[0].program_id
|
|
121
|
+
} : {}),
|
|
119
122
|
is_grouped: referral.is_grouped
|
|
120
|
-
}
|
|
123
|
+
};
|
|
121
124
|
const createdReferral = await coreApi.createRecord('referral', newReferral);
|
|
122
125
|
if (['recalled', 'declined'].includes(referral.state)) {
|
|
123
126
|
await archiveReferral(referral.id);
|
|
@@ -148,7 +151,7 @@ const sendReferrals = async _ref => {
|
|
|
148
151
|
if (['sent', 'in_review'].includes(oldReferral.state)) {
|
|
149
152
|
const [acceptedReferral, updatedCase] = await Promise.all([acceptReferral(oldReferral), updateCase(kase)]);
|
|
150
153
|
if (!acceptedReferral || !updatedCase) return false;
|
|
151
|
-
} else if (['recalled', 'declined'].includes(oldReferral.state) && kase
|
|
154
|
+
} else if (['recalled', 'declined'].includes(oldReferral.state) && kase?.client_need_id) {
|
|
152
155
|
await updateCase({
|
|
153
156
|
id: kase.id,
|
|
154
157
|
client_need_id: kase.client_need_id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendReferral.js","names":["isError","coreApi","formatShortDate2FromTimestamp","updateCase","kase","options","arguments","length","undefined","state","otherOptions","_objectWithoutProperties","_excluded","caseData","_objectSpread","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","concat","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 && { 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":[]}
|
|
@@ -2,7 +2,6 @@ import { useEffect, useRef, useState } from 'react';
|
|
|
2
2
|
import { debounce, groupBy, map } from 'lodash';
|
|
3
3
|
import { useFind } from '../api/ApiHooks';
|
|
4
4
|
const useClinicalModificationOptions = query => {
|
|
5
|
-
var _response$data$data, _response$data;
|
|
6
5
|
const [code, setCode] = useState(null);
|
|
7
6
|
const debounceSearch = useRef(debounce(setCode, 400)).current;
|
|
8
7
|
useEffect(() => {
|
|
@@ -25,7 +24,7 @@ const useClinicalModificationOptions = query => {
|
|
|
25
24
|
size: 30
|
|
26
25
|
}
|
|
27
26
|
});
|
|
28
|
-
const cmCodes = groupBy(
|
|
27
|
+
const cmCodes = groupBy(response?.data?.data ?? [], 'code');
|
|
29
28
|
const clinicalModificationOptions = map(cmCodes, (val, key) => ({
|
|
30
29
|
label: key,
|
|
31
30
|
value: map(val, 'code').join(','),
|