@unite-us/app-create-referral 0.15.114 → 0.15.115
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/hooks/__tests__/useCreateReferrals.test.js +89 -3
- package/dist/hooks/__tests__/useCreateReferrals.test.js.map +1 -1
- package/dist/hooks/useCreateReferrals.js +3 -6
- package/dist/hooks/useCreateReferrals.js.map +1 -1
- package/dist/pages/builder/ReferralBuilder.js +2 -3
- package/dist/pages/builder/ReferralBuilder.js.map +1 -1
- package/dist/pages/builder/ReferralBuilderForm.js +1 -2
- package/dist/pages/builder/ReferralBuilderForm.js.map +1 -1
- package/dist/pages/builder/utils.js +2 -3
- package/dist/pages/builder/utils.js.map +1 -1
- package/dist/pages/review/Review.js +1 -2
- package/dist/pages/review/Review.js.map +1 -1
- package/package.json +1 -1
|
@@ -92,9 +92,10 @@ describe('useCreateReferrals', () => {
|
|
|
92
92
|
}
|
|
93
93
|
}, overrides);
|
|
94
94
|
};
|
|
95
|
-
const setupMocks = referrals
|
|
95
|
+
const setupMocks = function (referrals) {
|
|
96
|
+
let stateOverrides = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
96
97
|
useAppCreateReferralContext.mockReturnValue({
|
|
97
|
-
state: {
|
|
98
|
+
state: _objectSpread({
|
|
98
99
|
currentEmployee: {
|
|
99
100
|
id: 'employee1'
|
|
100
101
|
},
|
|
@@ -106,7 +107,7 @@ describe('useCreateReferrals', () => {
|
|
|
106
107
|
formSubmissionId: null,
|
|
107
108
|
assistanceRequestId: null,
|
|
108
109
|
screeningId: null
|
|
109
|
-
}
|
|
110
|
+
}, stateOverrides)
|
|
110
111
|
});
|
|
111
112
|
useCreateRecord.mockReturnValue({
|
|
112
113
|
createRecord: jest.fn().mockResolvedValue({
|
|
@@ -174,6 +175,45 @@ describe('useCreateReferrals', () => {
|
|
|
174
175
|
mockUpdateReferral
|
|
175
176
|
};
|
|
176
177
|
};
|
|
178
|
+
const setupAssistanceRequestUpdateMocks = _ref2 => {
|
|
179
|
+
let {
|
|
180
|
+
referral,
|
|
181
|
+
arCase,
|
|
182
|
+
updatedCase,
|
|
183
|
+
createdReferral
|
|
184
|
+
} = _ref2;
|
|
185
|
+
setupMocks([referral], {
|
|
186
|
+
assistanceRequestId: {
|
|
187
|
+
case: arCase
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
const mockCreateReferral = jest.fn().mockResolvedValue(buildRecordResponse(createdReferral));
|
|
191
|
+
const mockUpdateCase = jest.fn().mockResolvedValue(buildRecordResponse(updatedCase));
|
|
192
|
+
useCreateRecord.mockImplementation(type => {
|
|
193
|
+
if (type === 'referral') {
|
|
194
|
+
return {
|
|
195
|
+
createRecord: mockCreateReferral
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
createRecord: jest.fn().mockResolvedValue(buildRecordResponse({}))
|
|
200
|
+
};
|
|
201
|
+
});
|
|
202
|
+
useUpdateRecord.mockImplementation(type => {
|
|
203
|
+
if (type === 'case') {
|
|
204
|
+
return {
|
|
205
|
+
updateRecord: mockUpdateCase
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
updateRecord: jest.fn().mockResolvedValue(buildRecordResponse({}))
|
|
210
|
+
};
|
|
211
|
+
});
|
|
212
|
+
return {
|
|
213
|
+
mockCreateReferral,
|
|
214
|
+
mockUpdateCase
|
|
215
|
+
};
|
|
216
|
+
};
|
|
177
217
|
it('should validate response structure no matters the result', async () => {
|
|
178
218
|
useAppCreateReferralContext.mockReturnValue({
|
|
179
219
|
state: {
|
|
@@ -653,5 +693,51 @@ describe('useCreateReferrals', () => {
|
|
|
653
693
|
}]
|
|
654
694
|
});
|
|
655
695
|
});
|
|
696
|
+
it('should include associated needs when updating assistance request cases', async () => {
|
|
697
|
+
const assistanceRequestReferral = createBaseReferral({
|
|
698
|
+
description: 'Assistance request referral',
|
|
699
|
+
client_need: ['need-1', 'need-2'],
|
|
700
|
+
programs: [{
|
|
701
|
+
id: 'program1',
|
|
702
|
+
provider: {
|
|
703
|
+
id: 'provider1',
|
|
704
|
+
licensed: true
|
|
705
|
+
}
|
|
706
|
+
}]
|
|
707
|
+
});
|
|
708
|
+
const {
|
|
709
|
+
mockUpdateCase
|
|
710
|
+
} = setupAssistanceRequestUpdateMocks({
|
|
711
|
+
referral: assistanceRequestReferral,
|
|
712
|
+
arCase: {
|
|
713
|
+
id: 'ar-case-1',
|
|
714
|
+
service: {
|
|
715
|
+
id: 'service-previous'
|
|
716
|
+
}
|
|
717
|
+
},
|
|
718
|
+
updatedCase: {
|
|
719
|
+
id: 'ar-case-1'
|
|
720
|
+
},
|
|
721
|
+
createdReferral: {
|
|
722
|
+
id: 'referral1',
|
|
723
|
+
state: 'sent'
|
|
724
|
+
}
|
|
725
|
+
});
|
|
726
|
+
const {
|
|
727
|
+
result
|
|
728
|
+
} = renderHook(() => useCreateReferrals());
|
|
729
|
+
await act(async () => {
|
|
730
|
+
await result.current();
|
|
731
|
+
});
|
|
732
|
+
expect(mockUpdateCase).toHaveBeenCalledWith('ar-case-1', expect.objectContaining({
|
|
733
|
+
person_conditions: [{
|
|
734
|
+
id: 'need-1',
|
|
735
|
+
type: 'person_condition'
|
|
736
|
+
}, {
|
|
737
|
+
id: 'need-2',
|
|
738
|
+
type: 'person_condition'
|
|
739
|
+
}]
|
|
740
|
+
}));
|
|
741
|
+
});
|
|
656
742
|
});
|
|
657
743
|
//# sourceMappingURL=useCreateReferrals.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCreateReferrals.test.js","names":["renderHook","act","useCreateReferrals","useAppCreateReferralContext","useCreateRecord","useUpdateRecord","jest","mock","fn","coreApi","populateRelationship","setRelationship","query","uploadFile","CALLBACKS","referrals","attachments","case","undefined","id","state","paymentAuthForm","amount_requested","service_start","service_end","description","programs","provider","licensed","sendingProvider","network","features","nh_consent","service","primaryWorker","describe","createBaseReferral","overrides","arguments","length","_objectSpread","setupMocks","mockReturnValue","currentEmployee","formResponses","person","formSubmissionId","assistanceRequestId","screeningId","createRecord","mockResolvedValue","data","updateRecord","buildRecordResponse","setupDraftUpdateMocks","_ref","draftReferral","updatedCase","updatedReferral","mockUpdateCase","mockUpdateReferral","mockImplementation","type","it","result","createReferrals","current","response","draft","expect","toHaveProperty","mockCreateCase","mockCreateReferral","toEqual","cases","referralIndex","shippingDetail","index","sent","error","caseId","referralsToConsent","programNames","serviceName","setupCreateRecordMocks","someReferrals","referralsFailed","referralsWithNeeds","client_need","toHaveBeenCalledWith","objectContaining","person_conditions","service_authorization","fee_schedule_program","authorization_required"],"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';\n\njest.mock('../../context/AppCreateReferralProvider', () => ({\n useAppCreateReferralContext: jest.fn(),\n}));\n\njest.mock('../../api/ApiHooks', () => ({\n useCreateRecord: jest.fn(),\n useUpdateRecord: jest.fn(),\n}));\n\njest.mock('../../api/config', () => ({\n coreApi: {\n populateRelationship: jest.fn(),\n setRelationship: jest.fn(),\n query: jest.fn(),\n uploadFile: jest.fn(),\n },\n CALLBACKS: {},\n}));\n\nconst referrals = [\n {\n attachments: null,\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 createBaseReferral = (overrides = {}) => ({\n attachments: null,\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 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 setupDraftUpdateMocks = ({ draftReferral, updatedCase, updatedReferral }) => {\n useAppCreateReferralContext.mockReturnValue({\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 useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue(buildRecordResponse({})),\n });\n\n const mockUpdateCase = jest.fn().mockResolvedValue(buildRecordResponse(updatedCase));\n const mockUpdateReferral = jest.fn().mockResolvedValue(buildRecordResponse(updatedReferral));\n\n useUpdateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { updateRecord: mockUpdateCase };\n }\n if (type === 'referral') {\n return { updateRecord: mockUpdateReferral };\n }\n return { updateRecord: jest.fn().mockResolvedValue(buildRecordResponse({})) };\n });\n\n return { mockUpdateCase, mockUpdateReferral };\n };\n\n it('should validate response structure no matters the result', async () => {\n useAppCreateReferralContext.mockReturnValue({\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 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: [{ index: 0, sent: true, error: null, caseId: \"case1\" }],\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 { index: 0, sent: true, error: null, caseId: \"case1\" },\n {\n index: 1,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\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 index: 0,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n },\n {\n index: 1,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\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: [{ index: 0, sent: true, error: null, caseId: \"case1\" }],\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 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('should persist associated needs when saving existing draft referrals', async () => {\n const draftReferral = createBaseReferral({\n id: 'draft-referral-1',\n state: 'draft',\n description: 'Draft referral with updated needs',\n client_need: ['need-1', 'need-2'],\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 });\n const { mockUpdateCase, mockUpdateReferral } = 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(mockUpdateCase).toHaveBeenCalledWith('case-1', {\n description: 'Draft referral with updated needs',\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n });\n\n expect(mockUpdateReferral).toHaveBeenCalledWith('draft-referral-1', {\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useCreateReferrals.test.js","names":["renderHook","act","useCreateReferrals","useAppCreateReferralContext","useCreateRecord","useUpdateRecord","jest","mock","fn","coreApi","populateRelationship","setRelationship","query","uploadFile","CALLBACKS","referrals","attachments","case","undefined","id","state","paymentAuthForm","amount_requested","service_start","service_end","description","programs","provider","licensed","sendingProvider","network","features","nh_consent","service","primaryWorker","describe","createBaseReferral","overrides","arguments","length","_objectSpread","setupMocks","stateOverrides","mockReturnValue","currentEmployee","formResponses","person","formSubmissionId","assistanceRequestId","screeningId","createRecord","mockResolvedValue","data","updateRecord","buildRecordResponse","setupDraftUpdateMocks","_ref","draftReferral","updatedCase","updatedReferral","mockUpdateCase","mockUpdateReferral","mockImplementation","type","setupAssistanceRequestUpdateMocks","_ref2","referral","arCase","createdReferral","mockCreateReferral","it","result","createReferrals","current","response","draft","expect","toHaveProperty","mockCreateCase","toEqual","cases","referralIndex","shippingDetail","index","sent","error","caseId","referralsToConsent","programNames","serviceName","setupCreateRecordMocks","someReferrals","referralsFailed","referralsWithNeeds","client_need","toHaveBeenCalledWith","objectContaining","person_conditions","service_authorization","fee_schedule_program","authorization_required","assistanceRequestReferral"],"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';\n\njest.mock('../../context/AppCreateReferralProvider', () => ({\n useAppCreateReferralContext: jest.fn(),\n}));\n\njest.mock('../../api/ApiHooks', () => ({\n useCreateRecord: jest.fn(),\n useUpdateRecord: jest.fn(),\n}));\n\njest.mock('../../api/config', () => ({\n coreApi: {\n populateRelationship: jest.fn(),\n setRelationship: jest.fn(),\n query: jest.fn(),\n uploadFile: jest.fn(),\n },\n CALLBACKS: {},\n}));\n\nconst referrals = [\n {\n attachments: null,\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 createBaseReferral = (overrides = {}) => ({\n attachments: null,\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, stateOverrides = {}) => {\n useAppCreateReferralContext.mockReturnValue({\n state: {\n currentEmployee: { id: 'employee1' },\n formResponses: [],\n person: { id: 'person1' },\n referrals,\n formSubmissionId: null,\n assistanceRequestId: null,\n screeningId: null,\n ...stateOverrides,\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 setupDraftUpdateMocks = ({ draftReferral, updatedCase, updatedReferral }) => {\n useAppCreateReferralContext.mockReturnValue({\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 useCreateRecord.mockReturnValue({\n createRecord: jest.fn().mockResolvedValue(buildRecordResponse({})),\n });\n\n const mockUpdateCase = jest.fn().mockResolvedValue(buildRecordResponse(updatedCase));\n const mockUpdateReferral = jest.fn().mockResolvedValue(buildRecordResponse(updatedReferral));\n\n useUpdateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { updateRecord: mockUpdateCase };\n }\n if (type === 'referral') {\n return { updateRecord: mockUpdateReferral };\n }\n return { updateRecord: jest.fn().mockResolvedValue(buildRecordResponse({})) };\n });\n\n return { mockUpdateCase, mockUpdateReferral };\n };\n\n const setupAssistanceRequestUpdateMocks = ({ referral, arCase, updatedCase, createdReferral }) => {\n setupMocks([referral], {\n assistanceRequestId: {\n case: arCase,\n },\n });\n\n const mockCreateReferral = jest.fn().mockResolvedValue(buildRecordResponse(createdReferral));\n const mockUpdateCase = jest.fn().mockResolvedValue(buildRecordResponse(updatedCase));\n\n useCreateRecord.mockImplementation((type) => {\n if (type === 'referral') {\n return { createRecord: mockCreateReferral };\n }\n return { createRecord: jest.fn().mockResolvedValue(buildRecordResponse({})) };\n });\n\n useUpdateRecord.mockImplementation((type) => {\n if (type === 'case') {\n return { updateRecord: mockUpdateCase };\n }\n return { updateRecord: jest.fn().mockResolvedValue(buildRecordResponse({})) };\n });\n\n return { mockCreateReferral, mockUpdateCase };\n };\n\n it('should validate response structure no matters the result', async () => {\n useAppCreateReferralContext.mockReturnValue({\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 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: [{ index: 0, sent: true, error: null, caseId: \"case1\" }],\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 { index: 0, sent: true, error: null, caseId: \"case1\" },\n {\n index: 1,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\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 index: 0,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\n },\n {\n index: 1,\n sent: false,\n error: 'Unexpected error: The following fields for the case are required: description',\n caseId: null,\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: [{ index: 0, sent: true, error: null, caseId: \"case1\" }],\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 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('should persist associated needs when saving existing draft referrals', async () => {\n const draftReferral = createBaseReferral({\n id: 'draft-referral-1',\n state: 'draft',\n description: 'Draft referral with updated needs',\n client_need: ['need-1', 'need-2'],\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 });\n const { mockUpdateCase, mockUpdateReferral } = 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(mockUpdateCase).toHaveBeenCalledWith('case-1', {\n description: 'Draft referral with updated needs',\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n });\n\n expect(mockUpdateReferral).toHaveBeenCalledWith('draft-referral-1', {\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n });\n });\n\n it('should include associated needs when updating assistance request cases', async () => {\n const assistanceRequestReferral = createBaseReferral({\n description: 'Assistance request referral',\n client_need: ['need-1', 'need-2'],\n programs: [{ id: 'program1', provider: { id: 'provider1', licensed: true } }],\n });\n const { mockUpdateCase } = setupAssistanceRequestUpdateMocks({\n referral: assistanceRequestReferral,\n arCase: {\n id: 'ar-case-1',\n service: { id: 'service-previous' },\n },\n updatedCase: { id: 'ar-case-1' },\n createdReferral: { id: 'referral1', state: 'sent' },\n });\n\n const { result } = renderHook(() => useCreateReferrals());\n\n await act(async () => {\n await result.current();\n });\n\n expect(mockUpdateCase).toHaveBeenCalledWith('ar-case-1', expect.objectContaining({\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n }));\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -87,8 +87,7 @@ const getAssistanceRequestCasePayload = _ref2 => {
|
|
|
87
87
|
let {
|
|
88
88
|
referral,
|
|
89
89
|
arCase,
|
|
90
|
-
isOON
|
|
91
|
-
showClientNeed
|
|
90
|
+
isOON
|
|
92
91
|
} = _ref2;
|
|
93
92
|
let payload = {
|
|
94
93
|
description: referral.description,
|
|
@@ -106,7 +105,7 @@ const getAssistanceRequestCasePayload = _ref2 => {
|
|
|
106
105
|
opened_date: formatShortDate2FromTimestamp(referral.opened_date)
|
|
107
106
|
});
|
|
108
107
|
}
|
|
109
|
-
if (
|
|
108
|
+
if (Array.isArray(referral.client_need)) {
|
|
110
109
|
payload.person_conditions = mapPersonConditions(referral.client_need);
|
|
111
110
|
}
|
|
112
111
|
return payload;
|
|
@@ -153,7 +152,6 @@ export default function useCreateReferrals() {
|
|
|
153
152
|
} = useAppCreateReferralContext();
|
|
154
153
|
const hint542SupersetUnlistedPrograms = useFeatureFlag('hint542SupersetUnlistedPrograms', false);
|
|
155
154
|
const pays5590RefactorInsuranceFilters = useFeatureFlag('pays5590RefactorInsuranceFilters', false);
|
|
156
|
-
const showClientNeed = useFeatureFlag('crtb2130MultipleClientNeeds', false);
|
|
157
155
|
const {
|
|
158
156
|
createRecord: createReferral
|
|
159
157
|
} = useCreateRecord('referral');
|
|
@@ -318,8 +316,7 @@ export default function useCreateReferrals() {
|
|
|
318
316
|
const payload = getAssistanceRequestCasePayload({
|
|
319
317
|
referral,
|
|
320
318
|
arCase,
|
|
321
|
-
isOON
|
|
322
|
-
showClientNeed
|
|
319
|
+
isOON
|
|
323
320
|
});
|
|
324
321
|
caseResponse = await updateCase(arCase.id, payload);
|
|
325
322
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCreateReferrals.js","names":["get","map","isEmpty","moment","fspUtils","isUnlistedProgram","referralIsOON","referralIsGrouped","useCreateRecord","useUpdateRecord","CALLBACKS","coreApi","useAppCreateReferralContext","useFeatureFlag","referralToConsent","formatShortDate2FromTimestamp","REQUIRED_FIELDS_BY_TYPE","case","note","referral","validateRequiredValues","type","values","requiredFields","filter","field","updateShippingDetail","shippingDetail","index","updates","item","find","detail","Object","assign","getRequestedDateRange","pays5590RefactorInsuranceFilters","serviceStart","serviceEnd","requestedStartDate","requestedEndDate","unix","toISOString","add","subtract","getCaseValues","_ref","_referral$primaryWork","personId","isOON","formSubmissionId","screeningId","caseValues","description","state","person_conditions","personConditionsForCaseCreation","client_need","person","provider","sendingProvider","id","network","service","primaryWorker","primary_worker","originating_form_submission","screening2_id","opened_date","getAssistanceRequestCasePayload","_ref2","arCase","showClientNeed","payload","_objectSpread","Array","isArray","mapPersonConditions","getReferralState","_ref3","draft","authorizationCreated","clientNeed","arguments","length","undefined","personConditionsPayload","useCreateReferrals","currentEmployee","formResponses","referrals","assistanceRequestId","hint542SupersetUnlistedPrograms","createRecord","createReferral","createCase","createServiceAuthorization","createFormSubmission","createNote","updateRecord","updateReferral","updateCase","updateServiceAuthorization","createErrorMessage","error","response","data","errors","title","join","uploadDocuments","caseToUploadDoc","attachableDocuments","filteredDocuments","doc","attached","attachedDocuments","ad","document","attachDocumentsToResource","setRelationship","relationshipModel","value","a","uploadPromises","Promise","all","uploadedDocuments","uploadDocumentsToResource","d","uploadFile","file","submitAssessments","_ref4","cases","latestResponses","promises","serviceCase","assessment","_assessment$form","form","service_type_ids","includes","push","context","contextType","responses","submitter","then","catch","err","notify","fetchActiveInsurance","_ref5","_responseInsurances$d","feeScheduleId","queryInsuranceParams","enrolled_before","expired_after","sort","responseInsurances","query","createAuthorizationIfNeeded","_ref6","caseId","feeScheduleProgram","programs","fee_schedule_program","authorization_required","insurance","fee_schedule","amountRequested","paymentAuthForm","amount_requested","icd10Codes","icd10_code","requested_starts_at","requested_ends_at","isCostPaymentType","payment_type","requested_cents","requested_unit_amount","parseInt","requester","clinical_modifications","createCaseForReferral","_ref7","result","missingCaseValues","Error","concat","caseResponse","createdCase","createUnlistedProgramNote","_ref8","programData","createNoteForUnlistedProgramValues","subjectType","subject","employee","visibility","category","text","name","missingNoteValues","sent","referralIndex","_unused","createProgramReferral","_ref9","isGrouped","createdReferrals","referralValues","is_grouped","receiving_program","receiving_provider","receiving_network","sending_provider","sending_network","missingReferralValues","responseReferral","createdReferral","processProgramForReferral","_ref0","createdCaseOrExistingAR","processDraftReferral","_ref1","_referral$case","_resultDraft$cases$","resultDraft","service_authorization","updateDraftReferralCrtb1239","updateDraftReferral","referralsWithIndex","referralData","originalReferral","referralsToConsent","processNonDraftReferral","_ref10","groupedReferrals","referredToPrograms","j","shouldCreateCase","caseResult","createReferrals","_ref11","some","i","message","buildCaseUpdatePayload","oldCase","serviceTypeChanged","service_type","descriptionChanged","getTargetState","getUpdatedDraftReferralState","isAuthRequired","buildReferralUpdatePayload","_ref12","currentReferral","existingReferral","targetState","processReferralUpdates","toUpdate","updatePayload","keys","Boolean","processReferralCreations","toCreate","_ref13","program","parseReferralResponses","deleteCount","updateCount","updateResponses","slice","updatedReferrals","r","_r$data","_r$data2","getDeleteUpdateCreateReferrals","oldReferrals","newProgramIds","oldProgramIds","toDelete","p","fetchAndUpdateCase","caseRequestResponse","referralsRequestResponse","findRecord","serviceCasePayload","_caseResponse$data$da","_caseResponse$data","deletePromises","deleteRecord","updatePromises","createPromises","updateServiceAuthorizationHandler","options","buildExistingDraftUpdatePayloads","casePayload","referralPayload","referralPromiseIndex"],"sources":["../../src/hooks/useCreateReferrals.js"],"sourcesContent":["import { get, map, isEmpty } from 'lodash';\nimport moment from 'moment';\nimport fspUtils from '@unite-us/client-utils/dist/utils/feeSchedulePrograms';\nimport { isUnlistedProgram, referralIsOON, referralIsGrouped } from '../pages/builder/utils';\nimport { useCreateRecord, useUpdateRecord } from '../api/ApiHooks';\nimport { CALLBACKS, coreApi } from '../api/config';\nimport { useAppCreateReferralContext } from '../context/AppCreateReferralProvider';\nimport { useFeatureFlag } from '../utils/useFeatureFlag';\nimport referralToConsent from '../utils/referralToConsent';\nimport { formatShortDate2FromTimestamp } from '../components/service_authorization/formatShortDate';\n\nconst REQUIRED_FIELDS_BY_TYPE = {\n case: ['description', 'service', 'provider', 'network', 'person'],\n note: ['subjectType', 'subject', 'visibility', 'text'],\n referral: ['case', 'receiving_program', 'receiving_provider', 'receiving_network', 'sending_provider', 'sending_network'],\n};\n\nconst validateRequiredValues = (type, values) => {\n const requiredFields = REQUIRED_FIELDS_BY_TYPE[type] || [];\n return requiredFields.filter((field) => !values[field]);\n};\n\nconst updateShippingDetail = (shippingDetail, index, updates) => {\n const item = shippingDetail.find((detail) => detail.index === index);\n if (item) {\n Object.assign(item, updates);\n }\n};\n\nconst getRequestedDateRange = (referral, pays5590RefactorInsuranceFilters) => {\n const serviceStart = get(referral, 'paymentAuthForm.service_start');\n const serviceEnd = get(referral, 'paymentAuthForm.service_end');\n let requestedStartDate;\n let requestedEndDate;\n\n if (serviceStart) {\n requestedStartDate = moment.unix(serviceStart).toISOString();\n }\n if (serviceEnd) {\n requestedEndDate = moment.unix(serviceEnd).toISOString();\n }\n\n if (pays5590RefactorInsuranceFilters) {\n if (requestedStartDate) {\n requestedStartDate = moment(requestedStartDate).add(1, 'day').toISOString();\n }\n if (requestedEndDate) {\n requestedEndDate = moment(requestedEndDate).subtract(1, 'day').toISOString();\n }\n }\n\n return { requestedStartDate, requestedEndDate };\n};\n\nconst getCaseValues = ({\n referral,\n personId,\n isOON,\n formSubmissionId,\n screeningId,\n}) => {\n const caseValues = {\n description: referral.description,\n state: 'draft',\n person_conditions: personConditionsForCaseCreation(referral.client_need),\n person: personId,\n provider: referral.sendingProvider.id,\n network: referral.network.id,\n service: referral.service.id,\n };\n\n if (referral.primaryWorker?.id) {\n caseValues.primary_worker = referral.primaryWorker.id;\n }\n if (formSubmissionId) {\n caseValues.originating_form_submission = formSubmissionId;\n }\n if (screeningId) {\n caseValues.screening2_id = screeningId;\n }\n if (isOON) {\n caseValues.state = 'off_platform';\n caseValues.opened_date = formatShortDate2FromTimestamp(referral.opened_date);\n }\n\n return caseValues;\n};\n\nconst getAssistanceRequestCasePayload = ({\n referral,\n arCase,\n isOON,\n showClientNeed,\n}) => {\n let payload = {\n description: referral.description,\n network: referral.network.id,\n };\n\n if (referral.service.id && (get(arCase, 'service.id') !== referral.service.id)) {\n payload = { ...payload, service: referral.service.id };\n }\n\n if (isOON) {\n payload = {\n ...payload,\n primary_worker: referral.primaryWorker.id,\n state: 'off_platform',\n opened_date: formatShortDate2FromTimestamp(referral.opened_date),\n };\n }\n\n if (showClientNeed && Array.isArray(referral.client_need)) {\n payload.person_conditions = mapPersonConditions(referral.client_need);\n }\n\n return payload;\n};\n\nconst getReferralState = ({ draft, isOON, authorizationCreated }) => {\n if (draft) {\n return 'draft';\n }\n if (isOON) {\n return 'off_platform';\n }\n if (authorizationCreated) {\n return 'pending_authorization';\n }\n return 'sent';\n};\n\nconst mapPersonConditions = (clientNeed = []) => (\n clientNeed.map((id) => ({ id, type: 'person_condition' }))\n);\n\nconst personConditionsPayload = (clientNeed) => (\n Array.isArray(clientNeed)\n ? { person_conditions: mapPersonConditions(clientNeed) }\n : {}\n);\n\nconst personConditionsForCaseCreation = (clientNeed) => (\n mapPersonConditions(Array.isArray(clientNeed) ? clientNeed : [])\n);\n\nexport default function useCreateReferrals() {\n const {\n state: {\n currentEmployee,\n formResponses,\n person,\n referrals,\n formSubmissionId,\n assistanceRequestId,\n screeningId,\n }\n } = useAppCreateReferralContext();\n\n const hint542SupersetUnlistedPrograms = useFeatureFlag('hint542SupersetUnlistedPrograms', false);\n const pays5590RefactorInsuranceFilters = useFeatureFlag('pays5590RefactorInsuranceFilters', false);\n const showClientNeed = useFeatureFlag('crtb2130MultipleClientNeeds', false);\n\n const { createRecord: createReferral } = useCreateRecord('referral');\n const { createRecord: createCase } = useCreateRecord('case');\n const { createRecord: createServiceAuthorization } = useCreateRecord('service_authorization');\n const { createRecord: createFormSubmission } = useCreateRecord('form_submission');\n const { createRecord: createNote } = useCreateRecord('note');\n const { updateRecord: updateReferral } = useUpdateRecord('referral');\n const { updateRecord: updateCase } = useUpdateRecord('case');\n const { updateRecord: updateServiceAuthorization } = useUpdateRecord('service_authorization');\n\n const createErrorMessage = (error) => {\n return error.response.data.errors.map((error) => error.title).join(', ');\n }\n\n const uploadDocuments = ((referral, caseToUploadDoc) => {\n const attachableDocuments = get(referral, 'attachableDocuments', []);\n const filteredDocuments = attachableDocuments.filter((doc) => doc.attached === true);\n const attachedDocuments = filteredDocuments.map((ad) => ({\n title: ad.document.title,\n id: ad.document.id,\n }));\n\n if(!isEmpty(attachedDocuments)) {\n const attachDocumentsToResource = () => (\n coreApi.setRelationship(\n 'case',\n caseToUploadDoc.id,\n { relationshipModel: 'file_upload', value: attachedDocuments.map((a) => a.id) },\n )\n );\n\n const uploadPromises = !isEmpty(attachedDocuments) && attachDocumentsToResource();\n\n Promise.all([uploadPromises]);\n }\n\n const uploadedDocuments = get(referral, 'attachments', []);\n\n if (!isEmpty(uploadedDocuments)) {\n const uploadDocumentsToResource = () => (\n uploadedDocuments.map((d) => coreApi.uploadFile('case', caseToUploadDoc.id, d.file))\n );\n\n const uploadPromises = uploadDocumentsToResource();\n Promise.all([\n ...(uploadPromises || []),\n ]);\n }\n });\n\n const submitAssessments = ({ cases, latestResponses }) => {\n let promises = [];\n map(cases, (serviceCase) => {\n map((latestResponses || formResponses), (assessment) => {\n if (!isEmpty(assessment) && assessment.form?.service_type_ids?.includes(serviceCase.service.id)) {\n promises.push(createFormSubmission({\n context: serviceCase.id,\n contextType: 'case',\n form: assessment.form.id,\n provider: serviceCase.provider.id,\n responses: assessment.responses,\n submitter: currentEmployee.id,\n }));\n }\n });\n });\n\n return Promise.all(promises).then((responses) => {\n return responses;\n }).catch(err => {\n CALLBACKS.notify.error(\"Error submitting Assessments\");\n throw err;\n });\n };\n\n const fetchActiveInsurance = async ({ personId, feeScheduleId, requestedStartDate, requestedEndDate }) => {\n const queryInsuranceParams = {\n person: personId,\n state: 'active',\n enrolled_before: requestedStartDate,\n expired_after: requestedEndDate,\n 'plan.fee_schedules': feeScheduleId,\n sort: '-enrolled_at',\n };\n\n const responseInsurances = await coreApi.query('insurance', queryInsuranceParams);\n return responseInsurances?.data?.data?.[0];\n };\n\n const createAuthorizationIfNeeded = async ({ referral, caseId, personId, draft }) => {\n const feeScheduleProgram = referral.programs[0].fee_schedule_program;\n if (!feeScheduleProgram?.authorization_required) {\n return false;\n }\n\n const { requestedStartDate, requestedEndDate } = getRequestedDateRange(\n referral,\n pays5590RefactorInsuranceFilters,\n );\n const insurance = await fetchActiveInsurance({\n personId,\n feeScheduleId: feeScheduleProgram.fee_schedule.id,\n requestedStartDate,\n requestedEndDate,\n });\n\n const amountRequested = referral.paymentAuthForm.amount_requested;\n const icd10Codes = referral.paymentAuthForm.icd10_code.id ? [referral.paymentAuthForm.icd10_code.id] : [];\n\n await createServiceAuthorization({\n state: draft ? 'draft' : 'requested',\n requested_starts_at: requestedStartDate,\n requested_ends_at: requestedEndDate,\n ...(fspUtils.isCostPaymentType(feeScheduleProgram.payment_type)\n ? { requested_cents: amountRequested }\n : { requested_unit_amount: parseInt(amountRequested) }),\n case: caseId,\n fee_schedule_program: feeScheduleProgram.id,\n requester: currentEmployee.id,\n insurance: insurance.id,\n person: personId,\n clinical_modifications: icd10Codes,\n });\n\n return true;\n };\n\n const createCaseForReferral = async ({ referral, index, personId, isOON, draft, result }) => {\n const caseValues = getCaseValues({\n referral,\n personId,\n isOON,\n formSubmissionId,\n screeningId,\n });\n const missingCaseValues = validateRequiredValues('case', caseValues);\n if (missingCaseValues.length) {\n throw new Error(`The following fields for the case are required: ${missingCaseValues.join(', ')}`);\n }\n\n try {\n let caseResponse;\n if (assistanceRequestId && index === 0) {\n const arCase = get(assistanceRequestId, 'case', null);\n const payload = getAssistanceRequestCasePayload({\n referral,\n arCase,\n isOON,\n showClientNeed,\n });\n caseResponse = await updateCase(arCase.id, payload);\n } else {\n caseResponse = await createCase(caseValues);\n }\n\n const createdCase = get(caseResponse, 'data.data', {});\n updateShippingDetail(result.shippingDetail, index, { caseId: createdCase.id });\n\n const authorizationCreated = await createAuthorizationIfNeeded({\n referral,\n caseId: createdCase.id,\n personId,\n draft,\n });\n\n result.cases.push(createdCase);\n return { createdCase, authorizationCreated };\n } catch (err) {\n result.shippingDetail[index].error = `Error creating the Case: ${createErrorMessage(err)}`;\n return null;\n }\n };\n\n const createUnlistedProgramNote = ({ programData, caseId, index, result }) => {\n const createNoteForUnlistedProgramValues = {\n subjectType: 'case',\n subject: caseId,\n employee: currentEmployee.id,\n visibility: 'public',\n category: 'external_provider',\n text: `Referred off platform to ${programData.name}`,\n };\n\n const missingNoteValues = validateRequiredValues('note', createNoteForUnlistedProgramValues);\n if (missingNoteValues.length) {\n result.shippingDetail[index].error = `The following fields for the unlisted program are required: ${missingNoteValues.join(', ')}`;\n return;\n }\n\n try {\n createNote(createNoteForUnlistedProgramValues);\n result.referrals.push({ index, sent: true, referralIndex: index });\n updateShippingDetail(result.shippingDetail, index, { sent: true });\n } catch {\n result.shippingDetail[index].error = \"Error creating the note on the case for the unlisted program\";\n }\n };\n\n const createProgramReferral = async ({\n referral,\n programData,\n state,\n isGrouped,\n caseId,\n index,\n result,\n createdReferrals,\n }) => {\n const referralValues = {\n state,\n case: caseId,\n is_grouped: isGrouped,\n receiving_program: programData.id,\n receiving_provider: programData.provider.id,\n receiving_network: referral.network.id,\n sending_provider: referral.sendingProvider.id,\n sending_network: referral.network.id,\n ...personConditionsPayload(referral.client_need),\n };\n\n const missingReferralValues = validateRequiredValues('referral', referralValues);\n if (missingReferralValues.length) {\n result.shippingDetail[index].error = `The following fields for the referral are required: ${missingReferralValues.join(', ')}`;\n return;\n }\n\n try {\n const responseReferral = await createReferral(referralValues);\n const createdReferral = responseReferral.data.data;\n result.referrals.push({\n ...createdReferral,\n referralIndex: index,\n });\n updateShippingDetail(result.shippingDetail, index, { sent: true });\n createdReferrals.push(createdReferral);\n } catch (err) {\n result.shippingDetail[index].error = `Error creating the Referral: ${createErrorMessage(err)}`;\n }\n };\n\n const processProgramForReferral = async ({\n referral,\n programData,\n isGrouped,\n isOON,\n authorizationCreated,\n draft,\n createdCaseOrExistingAR,\n index,\n result,\n createdReferrals,\n }) => {\n uploadDocuments(referral, createdCaseOrExistingAR);\n\n const state = getReferralState({ draft, isOON, authorizationCreated });\n if (hint542SupersetUnlistedPrograms && isUnlistedProgram(programData)) {\n createUnlistedProgramNote({\n programData,\n caseId: createdCaseOrExistingAR.id,\n index,\n result,\n });\n return;\n }\n\n await createProgramReferral({\n referral,\n programData,\n state,\n isGrouped,\n caseId: createdCaseOrExistingAR.id,\n index,\n result,\n createdReferrals,\n });\n };\n\n const processDraftReferral = async ({ referral, index, draft, result }) => {\n const resultDraft = isEmpty(referral.case?.service_authorization)\n ? await updateDraftReferralCrtb1239(referral, draft)\n : await updateDraftReferral(referral, draft);\n\n updateShippingDetail(result.shippingDetail, index, { sent: true, caseId: resultDraft.cases[0]?.id });\n result.cases.push(resultDraft.cases[0]);\n \n const referralsWithIndex = resultDraft.referrals.map(referral => ({\n ...referral,\n referralIndex: index,\n }));\n result.referrals.push(...referralsWithIndex);\n\n const referralData = await referralToConsent({\n originalReferral: referral,\n createdReferrals: resultDraft.referrals,\n });\n if (referralData) {\n result.referralsToConsent.push(referralData);\n }\n };\n\n const processNonDraftReferral = async ({ referral, index, draft, groupedReferrals, personId, result }) => {\n const referredToPrograms = get(referral, 'programs', []);\n const isGrouped = referralIsGrouped(referral);\n const isOON = referralIsOON(referral);\n const createdReferrals = [];\n\n let createdCaseOrExistingAR = null;\n let authorizationCreated = false;\n\n for (let j = 0; j < referredToPrograms.length; j += 1) {\n const programData = referredToPrograms[j];\n const shouldCreateCase = (groupedReferrals && !createdCaseOrExistingAR) || !groupedReferrals;\n\n if (shouldCreateCase) {\n const caseResult = await createCaseForReferral({\n referral,\n index,\n personId,\n isOON,\n draft,\n result,\n });\n if (!caseResult) {\n continue;\n }\n createdCaseOrExistingAR = caseResult.createdCase;\n authorizationCreated = caseResult.authorizationCreated;\n }\n\n await processProgramForReferral({\n referral,\n programData,\n isGrouped,\n isOON,\n authorizationCreated,\n draft,\n createdCaseOrExistingAR,\n index,\n result,\n createdReferrals,\n });\n }\n\n const referralData = await referralToConsent({\n originalReferral: referral,\n createdReferrals,\n });\n if (referralData) {\n result.referralsToConsent.push(referralData);\n }\n };\n\n const createReferrals = async ({ referrals, person, draft }) => {\n const result = {\n referrals: [],\n cases: [],\n shippingDetail: [],\n referralsToConsent: [],\n };\n\n const groupedReferrals = referrals.some((referral) => get(referral, 'programs', []).length > 1);\n\n for (let i = 0; i < referrals.length; i += 1) {\n result.shippingDetail.push({ index: i, sent: false, error: null, caseId: null });\n\n try {\n const referral = referrals[i];\n if (referral.state === 'draft') {\n await processDraftReferral({ referral, index: i, draft, result });\n } else {\n await processNonDraftReferral({\n referral,\n index: i,\n draft,\n groupedReferrals,\n personId: person.id,\n result,\n });\n }\n } catch (err) {\n result.shippingDetail[i].error = `Unexpected error: ${err.message}`;\n }\n }\n\n return result;\n };\n\n const buildCaseUpdatePayload = (referral, oldCase) => {\n const serviceTypeChanged = referral.service.id !== oldCase.service_type.id;\n const descriptionChanged = referral.description && referral.description !== oldCase.description;\n return {\n ...(serviceTypeChanged && { service: { id: referral.service.id } }),\n ...(descriptionChanged && { description: referral.description }),\n ...personConditionsPayload(referral.client_need),\n };\n };\n\n const getTargetState = (draft, referral) => {\n if (draft) return 'draft';\n return referralIsOON(referral) ? 'off_platform' : 'sent';\n };\n\n const getUpdatedDraftReferralState = (referral, isAuthRequired) => {\n if (referralIsOON(referral)) return 'off_platform';\n if (isAuthRequired) return 'pending_authorization';\n return 'sent';\n };\n\n const buildReferralUpdatePayload = ({ currentReferral, existingReferral, targetState, isGrouped }) => {\n const payload = {};\n if (existingReferral.state !== targetState) payload.state = targetState;\n if (existingReferral.is_grouped !== isGrouped) payload.is_grouped = isGrouped;\n Object.assign(payload, personConditionsPayload(currentReferral.client_need));\n return payload;\n };\n\n const processReferralUpdates = (toUpdate, currentReferral, targetState, isGrouped) => {\n return toUpdate.map((existingReferral) => {\n const updatePayload = buildReferralUpdatePayload({\n currentReferral,\n existingReferral,\n targetState,\n isGrouped,\n });\n return Object.keys(updatePayload).length > 0 \n ? coreApi.updateRecord('referral', existingReferral.id, updatePayload)\n : null;\n }).filter(Boolean);\n };\n\n const processReferralCreations = (toCreate, { targetState, isGrouped, oldCase, referral }) => {\n return toCreate.map(program => createReferral({\n state: targetState,\n case: oldCase.id,\n is_grouped: isGrouped,\n receiving_program: program.id,\n receiving_provider: program.provider.id,\n receiving_network: referral.network.id,\n sending_provider: oldCase.provider.id,\n sending_network: oldCase.network.id,\n ...personConditionsPayload(referral.client_need),\n }));\n };\n\n const parseReferralResponses = (responses, deleteCount, updateCount) => {\n const updateResponses = responses.slice(deleteCount, deleteCount + updateCount);\n const updatedReferrals = updateResponses.map(r => r?.data?.data).filter(Boolean);\n const createdReferrals = responses.slice(deleteCount + updateCount).map(r => r?.data?.data).filter(Boolean);\n return { updatedReferrals, createdReferrals };\n };\n\n const getDeleteUpdateCreateReferrals = (referral, oldReferrals) => {\n const newProgramIds = map(referral.programs, 'id');\n const oldProgramIds = map(oldReferrals, 'receiving_program.id');\n const isGrouped = referral.programs.length > 1;\n\n return {\n toDelete: oldReferrals.filter(r => !newProgramIds.includes(r.receiving_program.id)),\n toUpdate: oldReferrals.filter(r => newProgramIds.includes(r.receiving_program.id)),\n toCreate: referral.programs.filter(p => !oldProgramIds.includes(p.id)),\n isGrouped,\n };\n };\n\n const fetchAndUpdateCase = async (referral) => {\n const [caseRequestResponse, referralsRequestResponse] = await Promise.all([\n coreApi.findRecord('case', referral.case.id),\n coreApi.query('referral', { case: referral.case.id }),\n ]);\n\n const oldCase = get(caseRequestResponse, 'data.data', null);\n const oldReferrals = get(referralsRequestResponse, 'data.data', null);\n\n const serviceCasePayload = buildCaseUpdatePayload(referral, oldCase);\n const caseResponse = isEmpty(serviceCasePayload) ? oldCase : await updateCase(referral.case.id, serviceCasePayload);\n\n uploadDocuments(referral, oldCase);\n\n return { oldCase, oldReferrals, caseResponse };\n };\n\n const updateDraftReferralCrtb1239 = async (referral, draft = false) => {\n try {\n const { oldCase, oldReferrals, caseResponse } = await fetchAndUpdateCase(referral);\n const { toDelete, toUpdate, toCreate, isGrouped } = getDeleteUpdateCreateReferrals(referral, oldReferrals);\n const targetState = getTargetState(draft, referral);\n\n const deletePromises = toDelete.map(r => coreApi.deleteRecord('referral', r.id));\n const updatePromises = processReferralUpdates(toUpdate, referral, targetState, isGrouped);\n const createPromises = processReferralCreations(toCreate, { targetState, isGrouped, oldCase, referral });\n\n const responses = await Promise.all([...deletePromises, ...updatePromises, ...createPromises]);\n const { updatedReferrals, createdReferrals } = parseReferralResponses(responses, toDelete.length, updatePromises.length);\n\n return {\n cases: [caseResponse?.data?.data ?? oldCase],\n referrals: [...updatedReferrals, ...createdReferrals],\n };\n } catch (err) {\n CALLBACKS.notify.error(\"Error updating the Draft Referral\");\n throw err;\n }\n }\n\n const updateServiceAuthorizationHandler = async (referral, options = { draft: false }) => {\n const feeScheduleProgram = referral.programs[0].fee_schedule_program;\n const { requestedStartDate, requestedEndDate } = getRequestedDateRange(\n referral,\n pays5590RefactorInsuranceFilters,\n );\n\n const amountRequested = referral.paymentAuthForm.amount_requested;\n const insurance = await fetchActiveInsurance({\n personId: person.id,\n feeScheduleId: feeScheduleProgram.fee_schedule.id,\n requestedStartDate,\n requestedEndDate,\n });\n\n await updateServiceAuthorization(referral.case.service_authorization.id, {\n ...(options.draft ? {} : { state: 'requested' }),\n requested_starts_at: requestedStartDate,\n requested_ends_at: requestedEndDate,\n ...(\n fspUtils.isCostPaymentType(feeScheduleProgram.payment_type) ?\n { requested_cents: amountRequested } : { requested_unit_amount: parseInt(amountRequested) }\n ),\n requester: currentEmployee.id,\n insurance: insurance.id,\n person: person.id,\n });\n }\n\n const buildExistingDraftUpdatePayloads = (referral, draft, isAuthRequired) => {\n const casePayload = {\n description: referral.description,\n ...personConditionsPayload(referral.client_need),\n };\n\n const referralPayload = {\n ...personConditionsPayload(referral.client_need),\n ...(draft ? {} : { state: getUpdatedDraftReferralState(referral, isAuthRequired) }),\n };\n\n return { casePayload, referralPayload };\n };\n\n const updateDraftReferral = async (referral, draft) => {\n try {\n const isAuthRequired = get(referral, 'programs[0].fee_schedule_program.authorization_required', false);\n const { casePayload, referralPayload } = buildExistingDraftUpdatePayloads(referral, draft, isAuthRequired);\n const promises = [\n updateCase(referral.case.id, casePayload)\n ];\n let referralPromiseIndex = null;\n\n if (!isEmpty(referralPayload)) {\n referralPromiseIndex = promises.length;\n promises.push(updateReferral(referral.id, referralPayload));\n }\n\n if(isAuthRequired) {\n promises.push(updateServiceAuthorizationHandler(referral, { draft }));\n }\n\n const responses = await Promise.all(\n promises\n );\n\n return {\n referrals: draft ? [] : [responses[referralPromiseIndex].data.data],\n cases: [responses[0].data.data],\n }\n } catch (err) {\n CALLBACKS.notify.error(\"Error updating the Draft Referral\");\n throw err;\n }\n }\n\n return async ({ draft = false, latestResponses } = {}) => {\n let response = {\n referralsToConsent: [],\n };\n\n response = await createReferrals({ referrals, person, draft });\n\n if (formResponses || latestResponses) {\n await submitAssessments({ cases: response.cases, latestResponses });\n }\n\n return {\n cases: response.cases,\n referrals: response.referrals,\n shippingDetail: response.shippingDetail,\n referralsToConsent: response.referralsToConsent,\n };\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useCreateReferrals.js","names":["get","map","isEmpty","moment","fspUtils","isUnlistedProgram","referralIsOON","referralIsGrouped","useCreateRecord","useUpdateRecord","CALLBACKS","coreApi","useAppCreateReferralContext","useFeatureFlag","referralToConsent","formatShortDate2FromTimestamp","REQUIRED_FIELDS_BY_TYPE","case","note","referral","validateRequiredValues","type","values","requiredFields","filter","field","updateShippingDetail","shippingDetail","index","updates","item","find","detail","Object","assign","getRequestedDateRange","pays5590RefactorInsuranceFilters","serviceStart","serviceEnd","requestedStartDate","requestedEndDate","unix","toISOString","add","subtract","getCaseValues","_ref","_referral$primaryWork","personId","isOON","formSubmissionId","screeningId","caseValues","description","state","person_conditions","personConditionsForCaseCreation","client_need","person","provider","sendingProvider","id","network","service","primaryWorker","primary_worker","originating_form_submission","screening2_id","opened_date","getAssistanceRequestCasePayload","_ref2","arCase","payload","_objectSpread","Array","isArray","mapPersonConditions","getReferralState","_ref3","draft","authorizationCreated","clientNeed","arguments","length","undefined","personConditionsPayload","useCreateReferrals","currentEmployee","formResponses","referrals","assistanceRequestId","hint542SupersetUnlistedPrograms","createRecord","createReferral","createCase","createServiceAuthorization","createFormSubmission","createNote","updateRecord","updateReferral","updateCase","updateServiceAuthorization","createErrorMessage","error","response","data","errors","title","join","uploadDocuments","caseToUploadDoc","attachableDocuments","filteredDocuments","doc","attached","attachedDocuments","ad","document","attachDocumentsToResource","setRelationship","relationshipModel","value","a","uploadPromises","Promise","all","uploadedDocuments","uploadDocumentsToResource","d","uploadFile","file","submitAssessments","_ref4","cases","latestResponses","promises","serviceCase","assessment","_assessment$form","form","service_type_ids","includes","push","context","contextType","responses","submitter","then","catch","err","notify","fetchActiveInsurance","_ref5","_responseInsurances$d","feeScheduleId","queryInsuranceParams","enrolled_before","expired_after","sort","responseInsurances","query","createAuthorizationIfNeeded","_ref6","caseId","feeScheduleProgram","programs","fee_schedule_program","authorization_required","insurance","fee_schedule","amountRequested","paymentAuthForm","amount_requested","icd10Codes","icd10_code","requested_starts_at","requested_ends_at","isCostPaymentType","payment_type","requested_cents","requested_unit_amount","parseInt","requester","clinical_modifications","createCaseForReferral","_ref7","result","missingCaseValues","Error","concat","caseResponse","createdCase","createUnlistedProgramNote","_ref8","programData","createNoteForUnlistedProgramValues","subjectType","subject","employee","visibility","category","text","name","missingNoteValues","sent","referralIndex","_unused","createProgramReferral","_ref9","isGrouped","createdReferrals","referralValues","is_grouped","receiving_program","receiving_provider","receiving_network","sending_provider","sending_network","missingReferralValues","responseReferral","createdReferral","processProgramForReferral","_ref0","createdCaseOrExistingAR","processDraftReferral","_ref1","_referral$case","_resultDraft$cases$","resultDraft","service_authorization","updateDraftReferralCrtb1239","updateDraftReferral","referralsWithIndex","referralData","originalReferral","referralsToConsent","processNonDraftReferral","_ref10","groupedReferrals","referredToPrograms","j","shouldCreateCase","caseResult","createReferrals","_ref11","some","i","message","buildCaseUpdatePayload","oldCase","serviceTypeChanged","service_type","descriptionChanged","getTargetState","getUpdatedDraftReferralState","isAuthRequired","buildReferralUpdatePayload","_ref12","currentReferral","existingReferral","targetState","processReferralUpdates","toUpdate","updatePayload","keys","Boolean","processReferralCreations","toCreate","_ref13","program","parseReferralResponses","deleteCount","updateCount","updateResponses","slice","updatedReferrals","r","_r$data","_r$data2","getDeleteUpdateCreateReferrals","oldReferrals","newProgramIds","oldProgramIds","toDelete","p","fetchAndUpdateCase","caseRequestResponse","referralsRequestResponse","findRecord","serviceCasePayload","_caseResponse$data$da","_caseResponse$data","deletePromises","deleteRecord","updatePromises","createPromises","updateServiceAuthorizationHandler","options","buildExistingDraftUpdatePayloads","casePayload","referralPayload","referralPromiseIndex"],"sources":["../../src/hooks/useCreateReferrals.js"],"sourcesContent":["import { get, map, isEmpty } from 'lodash';\nimport moment from 'moment';\nimport fspUtils from '@unite-us/client-utils/dist/utils/feeSchedulePrograms';\nimport { isUnlistedProgram, referralIsOON, referralIsGrouped } from '../pages/builder/utils';\nimport { useCreateRecord, useUpdateRecord } from '../api/ApiHooks';\nimport { CALLBACKS, coreApi } from '../api/config';\nimport { useAppCreateReferralContext } from '../context/AppCreateReferralProvider';\nimport { useFeatureFlag } from '../utils/useFeatureFlag';\nimport referralToConsent from '../utils/referralToConsent';\nimport { formatShortDate2FromTimestamp } from '../components/service_authorization/formatShortDate';\n\nconst REQUIRED_FIELDS_BY_TYPE = {\n case: ['description', 'service', 'provider', 'network', 'person'],\n note: ['subjectType', 'subject', 'visibility', 'text'],\n referral: ['case', 'receiving_program', 'receiving_provider', 'receiving_network', 'sending_provider', 'sending_network'],\n};\n\nconst validateRequiredValues = (type, values) => {\n const requiredFields = REQUIRED_FIELDS_BY_TYPE[type] || [];\n return requiredFields.filter((field) => !values[field]);\n};\n\nconst updateShippingDetail = (shippingDetail, index, updates) => {\n const item = shippingDetail.find((detail) => detail.index === index);\n if (item) {\n Object.assign(item, updates);\n }\n};\n\nconst getRequestedDateRange = (referral, pays5590RefactorInsuranceFilters) => {\n const serviceStart = get(referral, 'paymentAuthForm.service_start');\n const serviceEnd = get(referral, 'paymentAuthForm.service_end');\n let requestedStartDate;\n let requestedEndDate;\n\n if (serviceStart) {\n requestedStartDate = moment.unix(serviceStart).toISOString();\n }\n if (serviceEnd) {\n requestedEndDate = moment.unix(serviceEnd).toISOString();\n }\n\n if (pays5590RefactorInsuranceFilters) {\n if (requestedStartDate) {\n requestedStartDate = moment(requestedStartDate).add(1, 'day').toISOString();\n }\n if (requestedEndDate) {\n requestedEndDate = moment(requestedEndDate).subtract(1, 'day').toISOString();\n }\n }\n\n return { requestedStartDate, requestedEndDate };\n};\n\nconst getCaseValues = ({\n referral,\n personId,\n isOON,\n formSubmissionId,\n screeningId,\n}) => {\n const caseValues = {\n description: referral.description,\n state: 'draft',\n person_conditions: personConditionsForCaseCreation(referral.client_need),\n person: personId,\n provider: referral.sendingProvider.id,\n network: referral.network.id,\n service: referral.service.id,\n };\n\n if (referral.primaryWorker?.id) {\n caseValues.primary_worker = referral.primaryWorker.id;\n }\n if (formSubmissionId) {\n caseValues.originating_form_submission = formSubmissionId;\n }\n if (screeningId) {\n caseValues.screening2_id = screeningId;\n }\n if (isOON) {\n caseValues.state = 'off_platform';\n caseValues.opened_date = formatShortDate2FromTimestamp(referral.opened_date);\n }\n\n return caseValues;\n};\n\nconst getAssistanceRequestCasePayload = ({\n referral,\n arCase,\n isOON,\n}) => {\n let payload = {\n description: referral.description,\n network: referral.network.id,\n };\n\n if (referral.service.id && (get(arCase, 'service.id') !== referral.service.id)) {\n payload = { ...payload, service: referral.service.id };\n }\n\n if (isOON) {\n payload = {\n ...payload,\n primary_worker: referral.primaryWorker.id,\n state: 'off_platform',\n opened_date: formatShortDate2FromTimestamp(referral.opened_date),\n };\n }\n\n if (Array.isArray(referral.client_need)) {\n payload.person_conditions = mapPersonConditions(referral.client_need);\n }\n\n return payload;\n};\n\nconst getReferralState = ({ draft, isOON, authorizationCreated }) => {\n if (draft) {\n return 'draft';\n }\n if (isOON) {\n return 'off_platform';\n }\n if (authorizationCreated) {\n return 'pending_authorization';\n }\n return 'sent';\n};\n\nconst mapPersonConditions = (clientNeed = []) => (\n clientNeed.map((id) => ({ id, type: 'person_condition' }))\n);\n\nconst personConditionsPayload = (clientNeed) => (\n Array.isArray(clientNeed)\n ? { person_conditions: mapPersonConditions(clientNeed) }\n : {}\n);\n\nconst personConditionsForCaseCreation = (clientNeed) => (\n mapPersonConditions(Array.isArray(clientNeed) ? clientNeed : [])\n);\n\nexport default function useCreateReferrals() {\n const {\n state: {\n currentEmployee,\n formResponses,\n person,\n referrals,\n formSubmissionId,\n assistanceRequestId,\n screeningId,\n }\n } = useAppCreateReferralContext();\n\n const hint542SupersetUnlistedPrograms = useFeatureFlag('hint542SupersetUnlistedPrograms', false);\n const pays5590RefactorInsuranceFilters = useFeatureFlag('pays5590RefactorInsuranceFilters', false);\n\n const { createRecord: createReferral } = useCreateRecord('referral');\n const { createRecord: createCase } = useCreateRecord('case');\n const { createRecord: createServiceAuthorization } = useCreateRecord('service_authorization');\n const { createRecord: createFormSubmission } = useCreateRecord('form_submission');\n const { createRecord: createNote } = useCreateRecord('note');\n const { updateRecord: updateReferral } = useUpdateRecord('referral');\n const { updateRecord: updateCase } = useUpdateRecord('case');\n const { updateRecord: updateServiceAuthorization } = useUpdateRecord('service_authorization');\n\n const createErrorMessage = (error) => {\n return error.response.data.errors.map((error) => error.title).join(', ');\n }\n\n const uploadDocuments = ((referral, caseToUploadDoc) => {\n const attachableDocuments = get(referral, 'attachableDocuments', []);\n const filteredDocuments = attachableDocuments.filter((doc) => doc.attached === true);\n const attachedDocuments = filteredDocuments.map((ad) => ({\n title: ad.document.title,\n id: ad.document.id,\n }));\n\n if(!isEmpty(attachedDocuments)) {\n const attachDocumentsToResource = () => (\n coreApi.setRelationship(\n 'case',\n caseToUploadDoc.id,\n { relationshipModel: 'file_upload', value: attachedDocuments.map((a) => a.id) },\n )\n );\n\n const uploadPromises = !isEmpty(attachedDocuments) && attachDocumentsToResource();\n\n Promise.all([uploadPromises]);\n }\n\n const uploadedDocuments = get(referral, 'attachments', []);\n\n if (!isEmpty(uploadedDocuments)) {\n const uploadDocumentsToResource = () => (\n uploadedDocuments.map((d) => coreApi.uploadFile('case', caseToUploadDoc.id, d.file))\n );\n\n const uploadPromises = uploadDocumentsToResource();\n Promise.all([\n ...(uploadPromises || []),\n ]);\n }\n });\n\n const submitAssessments = ({ cases, latestResponses }) => {\n let promises = [];\n map(cases, (serviceCase) => {\n map((latestResponses || formResponses), (assessment) => {\n if (!isEmpty(assessment) && assessment.form?.service_type_ids?.includes(serviceCase.service.id)) {\n promises.push(createFormSubmission({\n context: serviceCase.id,\n contextType: 'case',\n form: assessment.form.id,\n provider: serviceCase.provider.id,\n responses: assessment.responses,\n submitter: currentEmployee.id,\n }));\n }\n });\n });\n\n return Promise.all(promises).then((responses) => {\n return responses;\n }).catch(err => {\n CALLBACKS.notify.error(\"Error submitting Assessments\");\n throw err;\n });\n };\n\n const fetchActiveInsurance = async ({ personId, feeScheduleId, requestedStartDate, requestedEndDate }) => {\n const queryInsuranceParams = {\n person: personId,\n state: 'active',\n enrolled_before: requestedStartDate,\n expired_after: requestedEndDate,\n 'plan.fee_schedules': feeScheduleId,\n sort: '-enrolled_at',\n };\n\n const responseInsurances = await coreApi.query('insurance', queryInsuranceParams);\n return responseInsurances?.data?.data?.[0];\n };\n\n const createAuthorizationIfNeeded = async ({ referral, caseId, personId, draft }) => {\n const feeScheduleProgram = referral.programs[0].fee_schedule_program;\n if (!feeScheduleProgram?.authorization_required) {\n return false;\n }\n\n const { requestedStartDate, requestedEndDate } = getRequestedDateRange(\n referral,\n pays5590RefactorInsuranceFilters,\n );\n const insurance = await fetchActiveInsurance({\n personId,\n feeScheduleId: feeScheduleProgram.fee_schedule.id,\n requestedStartDate,\n requestedEndDate,\n });\n\n const amountRequested = referral.paymentAuthForm.amount_requested;\n const icd10Codes = referral.paymentAuthForm.icd10_code.id ? [referral.paymentAuthForm.icd10_code.id] : [];\n\n await createServiceAuthorization({\n state: draft ? 'draft' : 'requested',\n requested_starts_at: requestedStartDate,\n requested_ends_at: requestedEndDate,\n ...(fspUtils.isCostPaymentType(feeScheduleProgram.payment_type)\n ? { requested_cents: amountRequested }\n : { requested_unit_amount: parseInt(amountRequested) }),\n case: caseId,\n fee_schedule_program: feeScheduleProgram.id,\n requester: currentEmployee.id,\n insurance: insurance.id,\n person: personId,\n clinical_modifications: icd10Codes,\n });\n\n return true;\n };\n\n const createCaseForReferral = async ({ referral, index, personId, isOON, draft, result }) => {\n const caseValues = getCaseValues({\n referral,\n personId,\n isOON,\n formSubmissionId,\n screeningId,\n });\n const missingCaseValues = validateRequiredValues('case', caseValues);\n if (missingCaseValues.length) {\n throw new Error(`The following fields for the case are required: ${missingCaseValues.join(', ')}`);\n }\n\n try {\n let caseResponse;\n if (assistanceRequestId && index === 0) {\n const arCase = get(assistanceRequestId, 'case', null);\n const payload = getAssistanceRequestCasePayload({\n referral,\n arCase,\n isOON,\n });\n caseResponse = await updateCase(arCase.id, payload);\n } else {\n caseResponse = await createCase(caseValues);\n }\n\n const createdCase = get(caseResponse, 'data.data', {});\n updateShippingDetail(result.shippingDetail, index, { caseId: createdCase.id });\n\n const authorizationCreated = await createAuthorizationIfNeeded({\n referral,\n caseId: createdCase.id,\n personId,\n draft,\n });\n\n result.cases.push(createdCase);\n return { createdCase, authorizationCreated };\n } catch (err) {\n result.shippingDetail[index].error = `Error creating the Case: ${createErrorMessage(err)}`;\n return null;\n }\n };\n\n const createUnlistedProgramNote = ({ programData, caseId, index, result }) => {\n const createNoteForUnlistedProgramValues = {\n subjectType: 'case',\n subject: caseId,\n employee: currentEmployee.id,\n visibility: 'public',\n category: 'external_provider',\n text: `Referred off platform to ${programData.name}`,\n };\n\n const missingNoteValues = validateRequiredValues('note', createNoteForUnlistedProgramValues);\n if (missingNoteValues.length) {\n result.shippingDetail[index].error = `The following fields for the unlisted program are required: ${missingNoteValues.join(', ')}`;\n return;\n }\n\n try {\n createNote(createNoteForUnlistedProgramValues);\n result.referrals.push({ index, sent: true, referralIndex: index });\n updateShippingDetail(result.shippingDetail, index, { sent: true });\n } catch {\n result.shippingDetail[index].error = \"Error creating the note on the case for the unlisted program\";\n }\n };\n\n const createProgramReferral = async ({\n referral,\n programData,\n state,\n isGrouped,\n caseId,\n index,\n result,\n createdReferrals,\n }) => {\n const referralValues = {\n state,\n case: caseId,\n is_grouped: isGrouped,\n receiving_program: programData.id,\n receiving_provider: programData.provider.id,\n receiving_network: referral.network.id,\n sending_provider: referral.sendingProvider.id,\n sending_network: referral.network.id,\n ...personConditionsPayload(referral.client_need),\n };\n\n const missingReferralValues = validateRequiredValues('referral', referralValues);\n if (missingReferralValues.length) {\n result.shippingDetail[index].error = `The following fields for the referral are required: ${missingReferralValues.join(', ')}`;\n return;\n }\n\n try {\n const responseReferral = await createReferral(referralValues);\n const createdReferral = responseReferral.data.data;\n result.referrals.push({\n ...createdReferral,\n referralIndex: index,\n });\n updateShippingDetail(result.shippingDetail, index, { sent: true });\n createdReferrals.push(createdReferral);\n } catch (err) {\n result.shippingDetail[index].error = `Error creating the Referral: ${createErrorMessage(err)}`;\n }\n };\n\n const processProgramForReferral = async ({\n referral,\n programData,\n isGrouped,\n isOON,\n authorizationCreated,\n draft,\n createdCaseOrExistingAR,\n index,\n result,\n createdReferrals,\n }) => {\n uploadDocuments(referral, createdCaseOrExistingAR);\n\n const state = getReferralState({ draft, isOON, authorizationCreated });\n if (hint542SupersetUnlistedPrograms && isUnlistedProgram(programData)) {\n createUnlistedProgramNote({\n programData,\n caseId: createdCaseOrExistingAR.id,\n index,\n result,\n });\n return;\n }\n\n await createProgramReferral({\n referral,\n programData,\n state,\n isGrouped,\n caseId: createdCaseOrExistingAR.id,\n index,\n result,\n createdReferrals,\n });\n };\n\n const processDraftReferral = async ({ referral, index, draft, result }) => {\n const resultDraft = isEmpty(referral.case?.service_authorization)\n ? await updateDraftReferralCrtb1239(referral, draft)\n : await updateDraftReferral(referral, draft);\n\n updateShippingDetail(result.shippingDetail, index, { sent: true, caseId: resultDraft.cases[0]?.id });\n result.cases.push(resultDraft.cases[0]);\n \n const referralsWithIndex = resultDraft.referrals.map(referral => ({\n ...referral,\n referralIndex: index,\n }));\n result.referrals.push(...referralsWithIndex);\n\n const referralData = await referralToConsent({\n originalReferral: referral,\n createdReferrals: resultDraft.referrals,\n });\n if (referralData) {\n result.referralsToConsent.push(referralData);\n }\n };\n\n const processNonDraftReferral = async ({ referral, index, draft, groupedReferrals, personId, result }) => {\n const referredToPrograms = get(referral, 'programs', []);\n const isGrouped = referralIsGrouped(referral);\n const isOON = referralIsOON(referral);\n const createdReferrals = [];\n\n let createdCaseOrExistingAR = null;\n let authorizationCreated = false;\n\n for (let j = 0; j < referredToPrograms.length; j += 1) {\n const programData = referredToPrograms[j];\n const shouldCreateCase = (groupedReferrals && !createdCaseOrExistingAR) || !groupedReferrals;\n\n if (shouldCreateCase) {\n const caseResult = await createCaseForReferral({\n referral,\n index,\n personId,\n isOON,\n draft,\n result,\n });\n if (!caseResult) {\n continue;\n }\n createdCaseOrExistingAR = caseResult.createdCase;\n authorizationCreated = caseResult.authorizationCreated;\n }\n\n await processProgramForReferral({\n referral,\n programData,\n isGrouped,\n isOON,\n authorizationCreated,\n draft,\n createdCaseOrExistingAR,\n index,\n result,\n createdReferrals,\n });\n }\n\n const referralData = await referralToConsent({\n originalReferral: referral,\n createdReferrals,\n });\n if (referralData) {\n result.referralsToConsent.push(referralData);\n }\n };\n\n const createReferrals = async ({ referrals, person, draft }) => {\n const result = {\n referrals: [],\n cases: [],\n shippingDetail: [],\n referralsToConsent: [],\n };\n\n const groupedReferrals = referrals.some((referral) => get(referral, 'programs', []).length > 1);\n\n for (let i = 0; i < referrals.length; i += 1) {\n result.shippingDetail.push({ index: i, sent: false, error: null, caseId: null });\n\n try {\n const referral = referrals[i];\n if (referral.state === 'draft') {\n await processDraftReferral({ referral, index: i, draft, result });\n } else {\n await processNonDraftReferral({\n referral,\n index: i,\n draft,\n groupedReferrals,\n personId: person.id,\n result,\n });\n }\n } catch (err) {\n result.shippingDetail[i].error = `Unexpected error: ${err.message}`;\n }\n }\n\n return result;\n };\n\n const buildCaseUpdatePayload = (referral, oldCase) => {\n const serviceTypeChanged = referral.service.id !== oldCase.service_type.id;\n const descriptionChanged = referral.description && referral.description !== oldCase.description;\n return {\n ...(serviceTypeChanged && { service: { id: referral.service.id } }),\n ...(descriptionChanged && { description: referral.description }),\n ...personConditionsPayload(referral.client_need),\n };\n };\n\n const getTargetState = (draft, referral) => {\n if (draft) return 'draft';\n return referralIsOON(referral) ? 'off_platform' : 'sent';\n };\n\n const getUpdatedDraftReferralState = (referral, isAuthRequired) => {\n if (referralIsOON(referral)) return 'off_platform';\n if (isAuthRequired) return 'pending_authorization';\n return 'sent';\n };\n\n const buildReferralUpdatePayload = ({ currentReferral, existingReferral, targetState, isGrouped }) => {\n const payload = {};\n if (existingReferral.state !== targetState) payload.state = targetState;\n if (existingReferral.is_grouped !== isGrouped) payload.is_grouped = isGrouped;\n Object.assign(payload, personConditionsPayload(currentReferral.client_need));\n return payload;\n };\n\n const processReferralUpdates = (toUpdate, currentReferral, targetState, isGrouped) => {\n return toUpdate.map((existingReferral) => {\n const updatePayload = buildReferralUpdatePayload({\n currentReferral,\n existingReferral,\n targetState,\n isGrouped,\n });\n return Object.keys(updatePayload).length > 0 \n ? coreApi.updateRecord('referral', existingReferral.id, updatePayload)\n : null;\n }).filter(Boolean);\n };\n\n const processReferralCreations = (toCreate, { targetState, isGrouped, oldCase, referral }) => {\n return toCreate.map(program => createReferral({\n state: targetState,\n case: oldCase.id,\n is_grouped: isGrouped,\n receiving_program: program.id,\n receiving_provider: program.provider.id,\n receiving_network: referral.network.id,\n sending_provider: oldCase.provider.id,\n sending_network: oldCase.network.id,\n ...personConditionsPayload(referral.client_need),\n }));\n };\n\n const parseReferralResponses = (responses, deleteCount, updateCount) => {\n const updateResponses = responses.slice(deleteCount, deleteCount + updateCount);\n const updatedReferrals = updateResponses.map(r => r?.data?.data).filter(Boolean);\n const createdReferrals = responses.slice(deleteCount + updateCount).map(r => r?.data?.data).filter(Boolean);\n return { updatedReferrals, createdReferrals };\n };\n\n const getDeleteUpdateCreateReferrals = (referral, oldReferrals) => {\n const newProgramIds = map(referral.programs, 'id');\n const oldProgramIds = map(oldReferrals, 'receiving_program.id');\n const isGrouped = referral.programs.length > 1;\n\n return {\n toDelete: oldReferrals.filter(r => !newProgramIds.includes(r.receiving_program.id)),\n toUpdate: oldReferrals.filter(r => newProgramIds.includes(r.receiving_program.id)),\n toCreate: referral.programs.filter(p => !oldProgramIds.includes(p.id)),\n isGrouped,\n };\n };\n\n const fetchAndUpdateCase = async (referral) => {\n const [caseRequestResponse, referralsRequestResponse] = await Promise.all([\n coreApi.findRecord('case', referral.case.id),\n coreApi.query('referral', { case: referral.case.id }),\n ]);\n\n const oldCase = get(caseRequestResponse, 'data.data', null);\n const oldReferrals = get(referralsRequestResponse, 'data.data', null);\n\n const serviceCasePayload = buildCaseUpdatePayload(referral, oldCase);\n const caseResponse = isEmpty(serviceCasePayload) ? oldCase : await updateCase(referral.case.id, serviceCasePayload);\n\n uploadDocuments(referral, oldCase);\n\n return { oldCase, oldReferrals, caseResponse };\n };\n\n const updateDraftReferralCrtb1239 = async (referral, draft = false) => {\n try {\n const { oldCase, oldReferrals, caseResponse } = await fetchAndUpdateCase(referral);\n const { toDelete, toUpdate, toCreate, isGrouped } = getDeleteUpdateCreateReferrals(referral, oldReferrals);\n const targetState = getTargetState(draft, referral);\n\n const deletePromises = toDelete.map(r => coreApi.deleteRecord('referral', r.id));\n const updatePromises = processReferralUpdates(toUpdate, referral, targetState, isGrouped);\n const createPromises = processReferralCreations(toCreate, { targetState, isGrouped, oldCase, referral });\n\n const responses = await Promise.all([...deletePromises, ...updatePromises, ...createPromises]);\n const { updatedReferrals, createdReferrals } = parseReferralResponses(responses, toDelete.length, updatePromises.length);\n\n return {\n cases: [caseResponse?.data?.data ?? oldCase],\n referrals: [...updatedReferrals, ...createdReferrals],\n };\n } catch (err) {\n CALLBACKS.notify.error(\"Error updating the Draft Referral\");\n throw err;\n }\n }\n\n const updateServiceAuthorizationHandler = async (referral, options = { draft: false }) => {\n const feeScheduleProgram = referral.programs[0].fee_schedule_program;\n const { requestedStartDate, requestedEndDate } = getRequestedDateRange(\n referral,\n pays5590RefactorInsuranceFilters,\n );\n\n const amountRequested = referral.paymentAuthForm.amount_requested;\n const insurance = await fetchActiveInsurance({\n personId: person.id,\n feeScheduleId: feeScheduleProgram.fee_schedule.id,\n requestedStartDate,\n requestedEndDate,\n });\n\n await updateServiceAuthorization(referral.case.service_authorization.id, {\n ...(options.draft ? {} : { state: 'requested' }),\n requested_starts_at: requestedStartDate,\n requested_ends_at: requestedEndDate,\n ...(\n fspUtils.isCostPaymentType(feeScheduleProgram.payment_type) ?\n { requested_cents: amountRequested } : { requested_unit_amount: parseInt(amountRequested) }\n ),\n requester: currentEmployee.id,\n insurance: insurance.id,\n person: person.id,\n });\n }\n\n const buildExistingDraftUpdatePayloads = (referral, draft, isAuthRequired) => {\n const casePayload = {\n description: referral.description,\n ...personConditionsPayload(referral.client_need),\n };\n\n const referralPayload = {\n ...personConditionsPayload(referral.client_need),\n ...(draft ? {} : { state: getUpdatedDraftReferralState(referral, isAuthRequired) }),\n };\n\n return { casePayload, referralPayload };\n };\n\n const updateDraftReferral = async (referral, draft) => {\n try {\n const isAuthRequired = get(referral, 'programs[0].fee_schedule_program.authorization_required', false);\n const { casePayload, referralPayload } = buildExistingDraftUpdatePayloads(referral, draft, isAuthRequired);\n const promises = [\n updateCase(referral.case.id, casePayload)\n ];\n let referralPromiseIndex = null;\n\n if (!isEmpty(referralPayload)) {\n referralPromiseIndex = promises.length;\n promises.push(updateReferral(referral.id, referralPayload));\n }\n\n if(isAuthRequired) {\n promises.push(updateServiceAuthorizationHandler(referral, { draft }));\n }\n\n const responses = await Promise.all(\n promises\n );\n\n return {\n referrals: draft ? [] : [responses[referralPromiseIndex].data.data],\n cases: [responses[0].data.data],\n }\n } catch (err) {\n CALLBACKS.notify.error(\"Error updating the Draft Referral\");\n throw err;\n }\n }\n\n return async ({ draft = false, latestResponses } = {}) => {\n let response = {\n referralsToConsent: [],\n };\n\n response = await createReferrals({ referrals, person, draft });\n\n if (formResponses || latestResponses) {\n await submitAssessments({ cases: response.cases, latestResponses });\n }\n\n return {\n cases: response.cases,\n referrals: response.referrals,\n shippingDetail: response.shippingDetail,\n referralsToConsent: response.referralsToConsent,\n };\n };\n};\n"],"mappings":"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","ignoreList":[]}
|