@unite-us/app-create-referral 0.15.105 → 0.15.106
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 +204 -0
- package/dist/hooks/__tests__/useCreateReferrals.test.js.map +1 -1
- package/dist/hooks/useCreateReferrals.js +70 -46
- package/dist/hooks/useCreateReferrals.js.map +1 -1
- package/dist/pages/builder/__tests__/buildDraftState.test.js +76 -0
- package/dist/pages/builder/__tests__/buildDraftState.test.js.map +1 -0
- package/dist/pages/builder/buildDraftState.js +15 -0
- package/dist/pages/builder/buildDraftState.js.map +1 -1
- package/dist/pages/builder/utils.js +2 -1
- package/dist/pages/builder/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -123,6 +123,57 @@ describe('useCreateReferrals', () => {
|
|
|
123
123
|
})
|
|
124
124
|
});
|
|
125
125
|
};
|
|
126
|
+
const buildRecordResponse = data => ({
|
|
127
|
+
data: {
|
|
128
|
+
data
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
const setupDraftUpdateMocks = _ref => {
|
|
132
|
+
let {
|
|
133
|
+
draftReferral,
|
|
134
|
+
updatedCase,
|
|
135
|
+
updatedReferral
|
|
136
|
+
} = _ref;
|
|
137
|
+
useAppCreateReferralContext.mockReturnValue({
|
|
138
|
+
state: {
|
|
139
|
+
currentEmployee: {
|
|
140
|
+
id: 'employee1'
|
|
141
|
+
},
|
|
142
|
+
formResponses: [],
|
|
143
|
+
person: {
|
|
144
|
+
id: 'person1'
|
|
145
|
+
},
|
|
146
|
+
referrals: [draftReferral],
|
|
147
|
+
formSubmissionId: null,
|
|
148
|
+
assistanceRequestId: null,
|
|
149
|
+
screeningId: null
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
useCreateRecord.mockReturnValue({
|
|
153
|
+
createRecord: jest.fn().mockResolvedValue(buildRecordResponse({}))
|
|
154
|
+
});
|
|
155
|
+
const mockUpdateCase = jest.fn().mockResolvedValue(buildRecordResponse(updatedCase));
|
|
156
|
+
const mockUpdateReferral = jest.fn().mockResolvedValue(buildRecordResponse(updatedReferral));
|
|
157
|
+
useUpdateRecord.mockImplementation(type => {
|
|
158
|
+
if (type === 'case') {
|
|
159
|
+
return {
|
|
160
|
+
updateRecord: mockUpdateCase
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
if (type === 'referral') {
|
|
164
|
+
return {
|
|
165
|
+
updateRecord: mockUpdateReferral
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
updateRecord: jest.fn().mockResolvedValue(buildRecordResponse({}))
|
|
170
|
+
};
|
|
171
|
+
});
|
|
172
|
+
return {
|
|
173
|
+
mockUpdateCase,
|
|
174
|
+
mockUpdateReferral
|
|
175
|
+
};
|
|
176
|
+
};
|
|
126
177
|
it('should validate response structure no matters the result', async () => {
|
|
127
178
|
useAppCreateReferralContext.mockReturnValue({
|
|
128
179
|
state: {
|
|
@@ -449,5 +500,158 @@ describe('useCreateReferrals', () => {
|
|
|
449
500
|
});
|
|
450
501
|
});
|
|
451
502
|
});
|
|
503
|
+
it('should include associated needs when creating draft referrals', async () => {
|
|
504
|
+
const referralsWithNeeds = [createBaseReferral({
|
|
505
|
+
description: 'Draft referral with needs',
|
|
506
|
+
client_need: ['need-1', 'need-2']
|
|
507
|
+
})];
|
|
508
|
+
useAppCreateReferralContext.mockReturnValue({
|
|
509
|
+
state: {
|
|
510
|
+
currentEmployee: {
|
|
511
|
+
id: 'employee1'
|
|
512
|
+
},
|
|
513
|
+
formResponses: [],
|
|
514
|
+
person: {
|
|
515
|
+
id: 'person1'
|
|
516
|
+
},
|
|
517
|
+
referrals: referralsWithNeeds,
|
|
518
|
+
formSubmissionId: null,
|
|
519
|
+
assistanceRequestId: null,
|
|
520
|
+
screeningId: null
|
|
521
|
+
}
|
|
522
|
+
});
|
|
523
|
+
const mockCreateCase = jest.fn().mockResolvedValue({
|
|
524
|
+
data: {
|
|
525
|
+
data: {
|
|
526
|
+
id: 'case1',
|
|
527
|
+
description: 'Draft Case'
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
});
|
|
531
|
+
const mockCreateReferral = jest.fn().mockResolvedValue({
|
|
532
|
+
data: {
|
|
533
|
+
data: {
|
|
534
|
+
id: 'referral1',
|
|
535
|
+
state: 'draft'
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
});
|
|
539
|
+
useCreateRecord.mockImplementation(type => {
|
|
540
|
+
if (type === 'case') {
|
|
541
|
+
return {
|
|
542
|
+
createRecord: mockCreateCase
|
|
543
|
+
};
|
|
544
|
+
} else if (type === 'referral') {
|
|
545
|
+
return {
|
|
546
|
+
createRecord: mockCreateReferral
|
|
547
|
+
};
|
|
548
|
+
}
|
|
549
|
+
return {
|
|
550
|
+
createRecord: jest.fn().mockResolvedValue({
|
|
551
|
+
data: {
|
|
552
|
+
data: {}
|
|
553
|
+
}
|
|
554
|
+
})
|
|
555
|
+
};
|
|
556
|
+
});
|
|
557
|
+
useUpdateRecord.mockReturnValue({
|
|
558
|
+
updateRecord: jest.fn().mockResolvedValue({
|
|
559
|
+
data: {
|
|
560
|
+
data: {}
|
|
561
|
+
}
|
|
562
|
+
})
|
|
563
|
+
});
|
|
564
|
+
const {
|
|
565
|
+
result
|
|
566
|
+
} = renderHook(() => useCreateReferrals());
|
|
567
|
+
await act(async () => {
|
|
568
|
+
await result.current({
|
|
569
|
+
draft: true
|
|
570
|
+
});
|
|
571
|
+
});
|
|
572
|
+
expect(mockCreateCase).toHaveBeenCalledWith(expect.objectContaining({
|
|
573
|
+
person_conditions: [{
|
|
574
|
+
id: 'need-1',
|
|
575
|
+
type: 'person_condition'
|
|
576
|
+
}, {
|
|
577
|
+
id: 'need-2',
|
|
578
|
+
type: 'person_condition'
|
|
579
|
+
}]
|
|
580
|
+
}));
|
|
581
|
+
expect(mockCreateReferral).toHaveBeenCalledWith(expect.objectContaining({
|
|
582
|
+
state: 'draft',
|
|
583
|
+
person_conditions: [{
|
|
584
|
+
id: 'need-1',
|
|
585
|
+
type: 'person_condition'
|
|
586
|
+
}, {
|
|
587
|
+
id: 'need-2',
|
|
588
|
+
type: 'person_condition'
|
|
589
|
+
}]
|
|
590
|
+
}));
|
|
591
|
+
});
|
|
592
|
+
it('should persist associated needs when saving existing draft referrals', async () => {
|
|
593
|
+
const draftReferral = createBaseReferral({
|
|
594
|
+
id: 'draft-referral-1',
|
|
595
|
+
state: 'draft',
|
|
596
|
+
description: 'Draft referral with updated needs',
|
|
597
|
+
client_need: ['need-1', 'need-2'],
|
|
598
|
+
case: {
|
|
599
|
+
id: 'case-1',
|
|
600
|
+
service_authorization: {
|
|
601
|
+
id: 'service-auth-1'
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
programs: [{
|
|
605
|
+
id: 'program1',
|
|
606
|
+
provider: {
|
|
607
|
+
id: 'provider1',
|
|
608
|
+
licensed: true
|
|
609
|
+
},
|
|
610
|
+
fee_schedule_program: {
|
|
611
|
+
authorization_required: false
|
|
612
|
+
}
|
|
613
|
+
}]
|
|
614
|
+
});
|
|
615
|
+
const {
|
|
616
|
+
mockUpdateCase,
|
|
617
|
+
mockUpdateReferral
|
|
618
|
+
} = setupDraftUpdateMocks({
|
|
619
|
+
draftReferral,
|
|
620
|
+
updatedCase: {
|
|
621
|
+
id: 'case-1'
|
|
622
|
+
},
|
|
623
|
+
updatedReferral: {
|
|
624
|
+
id: 'draft-referral-1',
|
|
625
|
+
state: 'draft'
|
|
626
|
+
}
|
|
627
|
+
});
|
|
628
|
+
const {
|
|
629
|
+
result
|
|
630
|
+
} = renderHook(() => useCreateReferrals());
|
|
631
|
+
await act(async () => {
|
|
632
|
+
await result.current({
|
|
633
|
+
draft: true
|
|
634
|
+
});
|
|
635
|
+
});
|
|
636
|
+
expect(mockUpdateCase).toHaveBeenCalledWith('case-1', {
|
|
637
|
+
description: 'Draft referral with updated needs',
|
|
638
|
+
person_conditions: [{
|
|
639
|
+
id: 'need-1',
|
|
640
|
+
type: 'person_condition'
|
|
641
|
+
}, {
|
|
642
|
+
id: 'need-2',
|
|
643
|
+
type: 'person_condition'
|
|
644
|
+
}]
|
|
645
|
+
});
|
|
646
|
+
expect(mockUpdateReferral).toHaveBeenCalledWith('draft-referral-1', {
|
|
647
|
+
person_conditions: [{
|
|
648
|
+
id: 'need-1',
|
|
649
|
+
type: 'person_condition'
|
|
650
|
+
}, {
|
|
651
|
+
id: 'need-2',
|
|
652
|
+
type: 'person_condition'
|
|
653
|
+
}]
|
|
654
|
+
});
|
|
655
|
+
});
|
|
452
656
|
});
|
|
453
657
|
//# 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","it","result","createReferrals","current","response","draft","expect","toHaveProperty","mockCreateCase","mockCreateReferral","mockImplementation","type","toEqual","cases","referralIndex","shippingDetail","index","sent","error","caseId","referralsToConsent","programNames","serviceName","setupCreateRecordMocks","someReferrals","referralsFailed"],"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 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"],"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","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":[]}
|
|
@@ -51,7 +51,7 @@ const getRequestedDateRange = (referral, pays5590RefactorInsuranceFilters) => {
|
|
|
51
51
|
};
|
|
52
52
|
};
|
|
53
53
|
const getCaseValues = _ref => {
|
|
54
|
-
var _referral$
|
|
54
|
+
var _referral$primaryWork;
|
|
55
55
|
let {
|
|
56
56
|
referral,
|
|
57
57
|
personId,
|
|
@@ -62,18 +62,12 @@ const getCaseValues = _ref => {
|
|
|
62
62
|
const caseValues = {
|
|
63
63
|
description: referral.description,
|
|
64
64
|
state: 'draft',
|
|
65
|
-
person_conditions:
|
|
65
|
+
person_conditions: personConditionsForCaseCreation(referral.client_need),
|
|
66
66
|
person: personId,
|
|
67
67
|
provider: referral.sendingProvider.id,
|
|
68
68
|
network: referral.network.id,
|
|
69
69
|
service: referral.service.id
|
|
70
70
|
};
|
|
71
|
-
if ((_referral$client_need = referral.client_need) !== null && _referral$client_need !== void 0 && _referral$client_need.length) {
|
|
72
|
-
caseValues.person_conditions = referral.client_need.map(id => ({
|
|
73
|
-
id,
|
|
74
|
-
type: 'person_condition'
|
|
75
|
-
}));
|
|
76
|
-
}
|
|
77
71
|
if ((_referral$primaryWork = referral.primaryWorker) !== null && _referral$primaryWork !== void 0 && _referral$primaryWork.id) {
|
|
78
72
|
caseValues.primary_worker = referral.primaryWorker.id;
|
|
79
73
|
}
|
|
@@ -90,7 +84,6 @@ const getCaseValues = _ref => {
|
|
|
90
84
|
return caseValues;
|
|
91
85
|
};
|
|
92
86
|
const getAssistanceRequestCasePayload = _ref2 => {
|
|
93
|
-
var _referral$client_need2;
|
|
94
87
|
let {
|
|
95
88
|
referral,
|
|
96
89
|
arCase,
|
|
@@ -113,11 +106,8 @@ const getAssistanceRequestCasePayload = _ref2 => {
|
|
|
113
106
|
opened_date: formatShortDate2FromTimestamp(referral.opened_date)
|
|
114
107
|
});
|
|
115
108
|
}
|
|
116
|
-
if (showClientNeed && (
|
|
117
|
-
payload.person_conditions = referral.client_need
|
|
118
|
-
id,
|
|
119
|
-
type: 'person_condition'
|
|
120
|
-
}));
|
|
109
|
+
if (showClientNeed && Array.isArray(referral.client_need)) {
|
|
110
|
+
payload.person_conditions = mapPersonConditions(referral.client_need);
|
|
121
111
|
}
|
|
122
112
|
return payload;
|
|
123
113
|
};
|
|
@@ -138,6 +128,17 @@ const getReferralState = _ref3 => {
|
|
|
138
128
|
}
|
|
139
129
|
return 'sent';
|
|
140
130
|
};
|
|
131
|
+
const mapPersonConditions = function () {
|
|
132
|
+
let clientNeed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
133
|
+
return clientNeed.map(id => ({
|
|
134
|
+
id,
|
|
135
|
+
type: 'person_condition'
|
|
136
|
+
}));
|
|
137
|
+
};
|
|
138
|
+
const personConditionsPayload = clientNeed => Array.isArray(clientNeed) ? {
|
|
139
|
+
person_conditions: mapPersonConditions(clientNeed)
|
|
140
|
+
} : {};
|
|
141
|
+
const personConditionsForCaseCreation = clientNeed => mapPersonConditions(Array.isArray(clientNeed) ? clientNeed : []);
|
|
141
142
|
export default function useCreateReferrals() {
|
|
142
143
|
const {
|
|
143
144
|
state: {
|
|
@@ -389,7 +390,7 @@ export default function useCreateReferrals() {
|
|
|
389
390
|
result,
|
|
390
391
|
createdReferrals
|
|
391
392
|
} = _ref9;
|
|
392
|
-
const referralValues = {
|
|
393
|
+
const referralValues = _objectSpread({
|
|
393
394
|
state,
|
|
394
395
|
case: caseId,
|
|
395
396
|
is_grouped: isGrouped,
|
|
@@ -398,7 +399,7 @@ export default function useCreateReferrals() {
|
|
|
398
399
|
receiving_network: referral.network.id,
|
|
399
400
|
sending_provider: referral.sendingProvider.id,
|
|
400
401
|
sending_network: referral.network.id
|
|
401
|
-
};
|
|
402
|
+
}, personConditionsPayload(referral.client_need));
|
|
402
403
|
const missingReferralValues = validateRequiredValues('referral', referralValues);
|
|
403
404
|
if (missingReferralValues.length) {
|
|
404
405
|
result.shippingDetail[index].error = "The following fields for the referral are required: ".concat(missingReferralValues.join(', '));
|
|
@@ -585,38 +586,55 @@ export default function useCreateReferrals() {
|
|
|
585
586
|
const buildCaseUpdatePayload = (referral, oldCase) => {
|
|
586
587
|
const serviceTypeChanged = referral.service.id !== oldCase.service_type.id;
|
|
587
588
|
const descriptionChanged = referral.description && referral.description !== oldCase.description;
|
|
588
|
-
return _objectSpread(_objectSpread({}, serviceTypeChanged && {
|
|
589
|
+
return _objectSpread(_objectSpread(_objectSpread({}, serviceTypeChanged && {
|
|
589
590
|
service: {
|
|
590
591
|
id: referral.service.id
|
|
591
592
|
}
|
|
592
593
|
}), descriptionChanged && {
|
|
593
594
|
description: referral.description
|
|
594
|
-
});
|
|
595
|
+
}), personConditionsPayload(referral.client_need));
|
|
595
596
|
};
|
|
596
597
|
const getTargetState = (draft, referral) => {
|
|
597
598
|
if (draft) return 'draft';
|
|
598
599
|
return referralIsOON(referral) ? 'off_platform' : 'sent';
|
|
599
600
|
};
|
|
600
|
-
const
|
|
601
|
+
const getUpdatedDraftReferralState = (referral, isAuthRequired) => {
|
|
602
|
+
if (referralIsOON(referral)) return 'off_platform';
|
|
603
|
+
if (isAuthRequired) return 'pending_authorization';
|
|
604
|
+
return 'sent';
|
|
605
|
+
};
|
|
606
|
+
const buildReferralUpdatePayload = _ref12 => {
|
|
607
|
+
let {
|
|
608
|
+
currentReferral,
|
|
609
|
+
existingReferral,
|
|
610
|
+
targetState,
|
|
611
|
+
isGrouped
|
|
612
|
+
} = _ref12;
|
|
601
613
|
const payload = {};
|
|
602
|
-
if (
|
|
603
|
-
if (
|
|
614
|
+
if (existingReferral.state !== targetState) payload.state = targetState;
|
|
615
|
+
if (existingReferral.is_grouped !== isGrouped) payload.is_grouped = isGrouped;
|
|
616
|
+
Object.assign(payload, personConditionsPayload(currentReferral.client_need));
|
|
604
617
|
return payload;
|
|
605
618
|
};
|
|
606
|
-
const processReferralUpdates = (toUpdate, targetState, isGrouped) => {
|
|
607
|
-
return toUpdate.map(
|
|
608
|
-
const updatePayload = buildReferralUpdatePayload(
|
|
609
|
-
|
|
619
|
+
const processReferralUpdates = (toUpdate, currentReferral, targetState, isGrouped) => {
|
|
620
|
+
return toUpdate.map(existingReferral => {
|
|
621
|
+
const updatePayload = buildReferralUpdatePayload({
|
|
622
|
+
currentReferral,
|
|
623
|
+
existingReferral,
|
|
624
|
+
targetState,
|
|
625
|
+
isGrouped
|
|
626
|
+
});
|
|
627
|
+
return Object.keys(updatePayload).length > 0 ? coreApi.updateRecord('referral', existingReferral.id, updatePayload) : null;
|
|
610
628
|
}).filter(Boolean);
|
|
611
629
|
};
|
|
612
|
-
const processReferralCreations = (toCreate,
|
|
630
|
+
const processReferralCreations = (toCreate, _ref13) => {
|
|
613
631
|
let {
|
|
614
632
|
targetState,
|
|
615
633
|
isGrouped,
|
|
616
634
|
oldCase,
|
|
617
635
|
referral
|
|
618
|
-
} =
|
|
619
|
-
return toCreate.map(program => createReferral({
|
|
636
|
+
} = _ref13;
|
|
637
|
+
return toCreate.map(program => createReferral(_objectSpread({
|
|
620
638
|
state: targetState,
|
|
621
639
|
case: oldCase.id,
|
|
622
640
|
is_grouped: isGrouped,
|
|
@@ -625,7 +643,7 @@ export default function useCreateReferrals() {
|
|
|
625
643
|
receiving_network: referral.network.id,
|
|
626
644
|
sending_provider: oldCase.provider.id,
|
|
627
645
|
sending_network: oldCase.network.id
|
|
628
|
-
}));
|
|
646
|
+
}, personConditionsPayload(referral.client_need))));
|
|
629
647
|
};
|
|
630
648
|
const parseReferralResponses = (responses, deleteCount, updateCount) => {
|
|
631
649
|
const updateResponses = responses.slice(deleteCount, deleteCount + updateCount);
|
|
@@ -685,7 +703,7 @@ export default function useCreateReferrals() {
|
|
|
685
703
|
} = getDeleteUpdateCreateReferrals(referral, oldReferrals);
|
|
686
704
|
const targetState = getTargetState(draft, referral);
|
|
687
705
|
const deletePromises = toDelete.map(r => coreApi.deleteRecord('referral', r.id));
|
|
688
|
-
const updatePromises = processReferralUpdates(toUpdate, targetState, isGrouped);
|
|
706
|
+
const updatePromises = processReferralUpdates(toUpdate, referral, targetState, isGrouped);
|
|
689
707
|
const createPromises = processReferralCreations(toCreate, {
|
|
690
708
|
targetState,
|
|
691
709
|
isGrouped,
|
|
@@ -737,24 +755,30 @@ export default function useCreateReferrals() {
|
|
|
737
755
|
person: person.id
|
|
738
756
|
}));
|
|
739
757
|
};
|
|
758
|
+
const buildExistingDraftUpdatePayloads = (referral, draft, isAuthRequired) => {
|
|
759
|
+
const casePayload = _objectSpread({
|
|
760
|
+
description: referral.description
|
|
761
|
+
}, personConditionsPayload(referral.client_need));
|
|
762
|
+
const referralPayload = _objectSpread(_objectSpread({}, personConditionsPayload(referral.client_need)), draft ? {} : {
|
|
763
|
+
state: getUpdatedDraftReferralState(referral, isAuthRequired)
|
|
764
|
+
});
|
|
765
|
+
return {
|
|
766
|
+
casePayload,
|
|
767
|
+
referralPayload
|
|
768
|
+
};
|
|
769
|
+
};
|
|
740
770
|
const updateDraftReferral = async (referral, draft) => {
|
|
741
771
|
try {
|
|
742
|
-
const promises = [updateCase(referral.case.id, {
|
|
743
|
-
description: referral.description
|
|
744
|
-
})];
|
|
745
772
|
const isAuthRequired = get(referral, 'programs[0].fee_schedule_program.authorization_required', false);
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
promises.push(updateReferral(referral.id, {
|
|
756
|
-
state: newState
|
|
757
|
-
}));
|
|
773
|
+
const {
|
|
774
|
+
casePayload,
|
|
775
|
+
referralPayload
|
|
776
|
+
} = buildExistingDraftUpdatePayloads(referral, draft, isAuthRequired);
|
|
777
|
+
const promises = [updateCase(referral.case.id, casePayload)];
|
|
778
|
+
let referralPromiseIndex = null;
|
|
779
|
+
if (!isEmpty(referralPayload)) {
|
|
780
|
+
referralPromiseIndex = promises.length;
|
|
781
|
+
promises.push(updateReferral(referral.id, referralPayload));
|
|
758
782
|
}
|
|
759
783
|
if (isAuthRequired) {
|
|
760
784
|
promises.push(updateServiceAuthorizationHandler(referral, {
|
|
@@ -763,7 +787,7 @@ export default function useCreateReferrals() {
|
|
|
763
787
|
}
|
|
764
788
|
const responses = await Promise.all(promises);
|
|
765
789
|
return {
|
|
766
|
-
referrals: draft ? [] : [responses[
|
|
790
|
+
referrals: draft ? [] : [responses[referralPromiseIndex].data.data],
|
|
767
791
|
cases: [responses[0].data.data]
|
|
768
792
|
};
|
|
769
793
|
} catch (err) {
|
|
@@ -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$client_need","_referral$primaryWork","personId","isOON","formSubmissionId","screeningId","caseValues","description","state","person_conditions","person","provider","sendingProvider","id","network","service","client_need","length","primaryWorker","primary_worker","originating_form_submission","screening2_id","opened_date","getAssistanceRequestCasePayload","_ref2","_referral$client_need2","arCase","showClientNeed","payload","_objectSpread","getReferralState","_ref3","draft","authorizationCreated","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","buildReferralUpdatePayload","targetState","processReferralUpdates","toUpdate","r","updatePayload","keys","Boolean","processReferralCreations","toCreate","_ref12","program","parseReferralResponses","deleteCount","updateCount","updateResponses","slice","updatedReferrals","_r$data","_r$data2","getDeleteUpdateCreateReferrals","oldReferrals","newProgramIds","oldProgramIds","toDelete","p","fetchAndUpdateCase","caseRequestResponse","referralsRequestResponse","findRecord","serviceCasePayload","arguments","undefined","_caseResponse$data$da","_caseResponse$data","deletePromises","deleteRecord","updatePromises","createPromises","updateServiceAuthorizationHandler","options","isAuthRequired","newState"],"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: [],\n person: personId,\n provider: referral.sendingProvider.id,\n network: referral.network.id,\n service: referral.service.id,\n };\n\n if (referral.client_need?.length) {\n caseValues.person_conditions = referral.client_need.map((id) => ({ id, type: 'person_condition' }));\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 && referral.client_need?.length > 0) {\n payload.person_conditions = referral.client_need.map((id) => ({ id, type: 'person_condition' }));\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\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 };\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 };\n };\n\n const getTargetState = (draft, referral) => {\n if (draft) return 'draft';\n return referralIsOON(referral) ? 'off_platform' : 'sent';\n };\n\n const buildReferralUpdatePayload = (referral, targetState, isGrouped) => {\n const payload = {};\n if (referral.state !== targetState) payload.state = targetState;\n if (referral.is_grouped !== isGrouped) payload.is_grouped = isGrouped;\n return payload;\n };\n\n const processReferralUpdates = (toUpdate, targetState, isGrouped) => {\n return toUpdate.map(r => {\n const updatePayload = buildReferralUpdatePayload(r, targetState, isGrouped);\n return Object.keys(updatePayload).length > 0 \n ? coreApi.updateRecord('referral', r.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 }));\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, 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 updateDraftReferral = async (referral, draft) => {\n try {\n const promises = [\n updateCase(referral.case.id, {\n description: referral.description,\n })\n ];\n\n const isAuthRequired = get(referral, 'programs[0].fee_schedule_program.authorization_required', false);\n\n if(!draft) {\n let newState;\n if (referralIsOON(referral)) {\n newState = 'off_platform';\n } else if (isAuthRequired) {\n newState = 'pending_authorization';\n } else {\n newState = 'sent';\n }\n promises.push(updateReferral(referral.id, {\n state: newState,\n }));\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[1].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":";;;AAAA,SAASA,GAAG,EAAEC,GAAG,EAAEC,OAAO,QAAQ,QAAQ;AAC1C,OAAOC,MAAM,MAAM,QAAQ;AAC3B,OAAOC,QAAQ,MAAM,uDAAuD;AAC5E,SAASC,iBAAiB,EAAEC,aAAa,EAAEC,iBAAiB,QAAQ,wBAAwB;AAC5F,SAASC,eAAe,EAAEC,eAAe,QAAQ,iBAAiB;AAClE,SAASC,SAAS,EAAEC,OAAO,QAAQ,eAAe;AAClD,SAASC,2BAA2B,QAAQ,sCAAsC;AAClF,SAASC,cAAc,QAAQ,yBAAyB;AACxD,OAAOC,iBAAiB,MAAM,4BAA4B;AAC1D,SAASC,6BAA6B,QAAQ,qDAAqD;AAEnG,MAAMC,uBAAuB,GAAG;EAC9BC,IAAI,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC;EACjEC,IAAI,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC;EACtDC,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB;AAC1H,CAAC;AAED,MAAMC,sBAAsB,GAAGA,CAACC,IAAI,EAAEC,MAAM,KAAK;EAC/C,MAAMC,cAAc,GAAGP,uBAAuB,CAACK,IAAI,CAAC,IAAI,EAAE;EAC1D,OAAOE,cAAc,CAACC,MAAM,CAAEC,KAAK,IAAK,CAACH,MAAM,CAACG,KAAK,CAAC,CAAC;AACzD,CAAC;AAED,MAAMC,oBAAoB,GAAGA,CAACC,cAAc,EAAEC,KAAK,EAAEC,OAAO,KAAK;EAC/D,MAAMC,IAAI,GAAGH,cAAc,CAACI,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACJ,KAAK,KAAKA,KAAK,CAAC;EACpE,IAAIE,IAAI,EAAE;IACRG,MAAM,CAACC,MAAM,CAACJ,IAAI,EAAED,OAAO,CAAC;EAC9B;AACF,CAAC;AAED,MAAMM,qBAAqB,GAAGA,CAAChB,QAAQ,EAAEiB,gCAAgC,KAAK;EAC5E,MAAMC,YAAY,GAAGrC,GAAG,CAACmB,QAAQ,EAAE,+BAA+B,CAAC;EACnE,MAAMmB,UAAU,GAAGtC,GAAG,CAACmB,QAAQ,EAAE,6BAA6B,CAAC;EAC/D,IAAIoB,kBAAkB;EACtB,IAAIC,gBAAgB;EAEpB,IAAIH,YAAY,EAAE;IAChBE,kBAAkB,GAAGpC,MAAM,CAACsC,IAAI,CAACJ,YAAY,CAAC,CAACK,WAAW,CAAC,CAAC;EAC9D;EACA,IAAIJ,UAAU,EAAE;IACdE,gBAAgB,GAAGrC,MAAM,CAACsC,IAAI,CAACH,UAAU,CAAC,CAACI,WAAW,CAAC,CAAC;EAC1D;EAEA,IAAIN,gCAAgC,EAAE;IACpC,IAAIG,kBAAkB,EAAE;MACtBA,kBAAkB,GAAGpC,MAAM,CAACoC,kBAAkB,CAAC,CAACI,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAACD,WAAW,CAAC,CAAC;IAC7E;IACA,IAAIF,gBAAgB,EAAE;MACpBA,gBAAgB,GAAGrC,MAAM,CAACqC,gBAAgB,CAAC,CAACI,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAACF,WAAW,CAAC,CAAC;IAC9E;EACF;EAEA,OAAO;IAAEH,kBAAkB;IAAEC;EAAiB,CAAC;AACjD,CAAC;AAED,MAAMK,aAAa,GAAGC,IAAA,IAMhB;EAAA,IAAAC,qBAAA,EAAAC,qBAAA;EAAA,IANiB;IACrB7B,QAAQ;IACR8B,QAAQ;IACRC,KAAK;IACLC,gBAAgB;IAChBC;EACF,CAAC,GAAAN,IAAA;EACC,MAAMO,UAAU,GAAG;IACjBC,WAAW,EAAEnC,QAAQ,CAACmC,WAAW;IACjCC,KAAK,EAAE,OAAO;IACdC,iBAAiB,EAAE,EAAE;IACrBC,MAAM,EAAER,QAAQ;IAChBS,QAAQ,EAAEvC,QAAQ,CAACwC,eAAe,CAACC,EAAE;IACrCC,OAAO,EAAE1C,QAAQ,CAAC0C,OAAO,CAACD,EAAE;IAC5BE,OAAO,EAAE3C,QAAQ,CAAC2C,OAAO,CAACF;EAC5B,CAAC;EAED,KAAAb,qBAAA,GAAI5B,QAAQ,CAAC4C,WAAW,cAAAhB,qBAAA,eAApBA,qBAAA,CAAsBiB,MAAM,EAAE;IAChCX,UAAU,CAACG,iBAAiB,GAAGrC,QAAQ,CAAC4C,WAAW,CAAC9D,GAAG,CAAE2D,EAAE,KAAM;MAAEA,EAAE;MAAEvC,IAAI,EAAE;IAAmB,CAAC,CAAC,CAAC;EACrG;EACA,KAAA2B,qBAAA,GAAI7B,QAAQ,CAAC8C,aAAa,cAAAjB,qBAAA,eAAtBA,qBAAA,CAAwBY,EAAE,EAAE;IAC9BP,UAAU,CAACa,cAAc,GAAG/C,QAAQ,CAAC8C,aAAa,CAACL,EAAE;EACvD;EACA,IAAIT,gBAAgB,EAAE;IACpBE,UAAU,CAACc,2BAA2B,GAAGhB,gBAAgB;EAC3D;EACA,IAAIC,WAAW,EAAE;IACfC,UAAU,CAACe,aAAa,GAAGhB,WAAW;EACxC;EACA,IAAIF,KAAK,EAAE;IACTG,UAAU,CAACE,KAAK,GAAG,cAAc;IACjCF,UAAU,CAACgB,WAAW,GAAGtD,6BAA6B,CAACI,QAAQ,CAACkD,WAAW,CAAC;EAC9E;EAEA,OAAOhB,UAAU;AACnB,CAAC;AAED,MAAMiB,+BAA+B,GAAGC,KAAA,IAKlC;EAAA,IAAAC,sBAAA;EAAA,IALmC;IACvCrD,QAAQ;IACRsD,MAAM;IACNvB,KAAK;IACLwB;EACF,CAAC,GAAAH,KAAA;EACC,IAAII,OAAO,GAAG;IACZrB,WAAW,EAAEnC,QAAQ,CAACmC,WAAW;IACjCO,OAAO,EAAE1C,QAAQ,CAAC0C,OAAO,CAACD;EAC5B,CAAC;EAED,IAAIzC,QAAQ,CAAC2C,OAAO,CAACF,EAAE,IAAK5D,GAAG,CAACyE,MAAM,EAAE,YAAY,CAAC,KAAKtD,QAAQ,CAAC2C,OAAO,CAACF,EAAG,EAAE;IAC9Ee,OAAO,GAAAC,aAAA,CAAAA,aAAA,KAAQD,OAAO;MAAEb,OAAO,EAAE3C,QAAQ,CAAC2C,OAAO,CAACF;IAAE,EAAE;EACxD;EAEA,IAAIV,KAAK,EAAE;IACTyB,OAAO,GAAAC,aAAA,CAAAA,aAAA,KACFD,OAAO;MACVT,cAAc,EAAE/C,QAAQ,CAAC8C,aAAa,CAACL,EAAE;MACzCL,KAAK,EAAE,cAAc;MACrBc,WAAW,EAAEtD,6BAA6B,CAACI,QAAQ,CAACkD,WAAW;IAAC,EACjE;EACH;EAEA,IAAIK,cAAc,IAAI,EAAAF,sBAAA,GAAArD,QAAQ,CAAC4C,WAAW,cAAAS,sBAAA,uBAApBA,sBAAA,CAAsBR,MAAM,IAAG,CAAC,EAAE;IACtDW,OAAO,CAACnB,iBAAiB,GAAGrC,QAAQ,CAAC4C,WAAW,CAAC9D,GAAG,CAAE2D,EAAE,KAAM;MAAEA,EAAE;MAAEvC,IAAI,EAAE;IAAmB,CAAC,CAAC,CAAC;EAClG;EAEA,OAAOsD,OAAO;AAChB,CAAC;AAED,MAAME,gBAAgB,GAAGC,KAAA,IAA4C;EAAA,IAA3C;IAAEC,KAAK;IAAE7B,KAAK;IAAE8B;EAAqB,CAAC,GAAAF,KAAA;EAC9D,IAAIC,KAAK,EAAE;IACT,OAAO,OAAO;EAChB;EACA,IAAI7B,KAAK,EAAE;IACT,OAAO,cAAc;EACvB;EACA,IAAI8B,oBAAoB,EAAE;IACxB,OAAO,uBAAuB;EAChC;EACA,OAAO,MAAM;AACf,CAAC;AAED,eAAe,SAASC,kBAAkBA,CAAA,EAAG;EAC3C,MAAM;IACJ1B,KAAK,EAAE;MACL2B,eAAe;MACfC,aAAa;MACb1B,MAAM;MACN2B,SAAS;MACTjC,gBAAgB;MAChBkC,mBAAmB;MACnBjC;IACF;EACF,CAAC,GAAGxC,2BAA2B,CAAC,CAAC;EAEjC,MAAM0E,+BAA+B,GAAGzE,cAAc,CAAC,iCAAiC,EAAE,KAAK,CAAC;EAChG,MAAMuB,gCAAgC,GAAGvB,cAAc,CAAC,kCAAkC,EAAE,KAAK,CAAC;EAClG,MAAM6D,cAAc,GAAG7D,cAAc,CAAC,6BAA6B,EAAE,KAAK,CAAC;EAE3E,MAAM;IAAE0E,YAAY,EAAEC;EAAe,CAAC,GAAGhF,eAAe,CAAC,UAAU,CAAC;EACpE,MAAM;IAAE+E,YAAY,EAAEE;EAAW,CAAC,GAAGjF,eAAe,CAAC,MAAM,CAAC;EAC5D,MAAM;IAAE+E,YAAY,EAAEG;EAA2B,CAAC,GAAGlF,eAAe,CAAC,uBAAuB,CAAC;EAC7F,MAAM;IAAE+E,YAAY,EAAEI;EAAqB,CAAC,GAAGnF,eAAe,CAAC,iBAAiB,CAAC;EACjF,MAAM;IAAE+E,YAAY,EAAEK;EAAW,CAAC,GAAGpF,eAAe,CAAC,MAAM,CAAC;EAC5D,MAAM;IAAEqF,YAAY,EAAEC;EAAe,CAAC,GAAGrF,eAAe,CAAC,UAAU,CAAC;EACpE,MAAM;IAAEoF,YAAY,EAAEE;EAAW,CAAC,GAAGtF,eAAe,CAAC,MAAM,CAAC;EAC5D,MAAM;IAAEoF,YAAY,EAAEG;EAA2B,CAAC,GAAGvF,eAAe,CAAC,uBAAuB,CAAC;EAE7F,MAAMwF,kBAAkB,GAAIC,KAAK,IAAK;IACpC,OAAOA,KAAK,CAACC,QAAQ,CAACC,IAAI,CAACC,MAAM,CAACpG,GAAG,CAAEiG,KAAK,IAAKA,KAAK,CAACI,KAAK,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;EAC1E,CAAC;EAED,MAAMC,eAAe,GAAIA,CAACrF,QAAQ,EAAEsF,eAAe,KAAK;IACtD,MAAMC,mBAAmB,GAAG1G,GAAG,CAACmB,QAAQ,EAAE,qBAAqB,EAAE,EAAE,CAAC;IACpE,MAAMwF,iBAAiB,GAAGD,mBAAmB,CAAClF,MAAM,CAAEoF,GAAG,IAAKA,GAAG,CAACC,QAAQ,KAAK,IAAI,CAAC;IACpF,MAAMC,iBAAiB,GAAGH,iBAAiB,CAAC1G,GAAG,CAAE8G,EAAE,KAAM;MACvDT,KAAK,EAAES,EAAE,CAACC,QAAQ,CAACV,KAAK;MACxB1C,EAAE,EAAEmD,EAAE,CAACC,QAAQ,CAACpD;IAClB,CAAC,CAAC,CAAC;IAEH,IAAG,CAAC1D,OAAO,CAAC4G,iBAAiB,CAAC,EAAE;MAC9B,MAAMG,yBAAyB,GAAGA,CAAA,KAChCtG,OAAO,CAACuG,eAAe,CACrB,MAAM,EACNT,eAAe,CAAC7C,EAAE,EAClB;QAAEuD,iBAAiB,EAAE,aAAa;QAAEC,KAAK,EAAEN,iBAAiB,CAAC7G,GAAG,CAAEoH,CAAC,IAAKA,CAAC,CAACzD,EAAE;MAAE,CAChF,CACD;MAED,MAAM0D,cAAc,GAAG,CAACpH,OAAO,CAAC4G,iBAAiB,CAAC,IAAIG,yBAAyB,CAAC,CAAC;MAEjFM,OAAO,CAACC,GAAG,CAAC,CAACF,cAAc,CAAC,CAAC;IAC/B;IAEA,MAAMG,iBAAiB,GAAGzH,GAAG,CAACmB,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC;IAE1D,IAAI,CAACjB,OAAO,CAACuH,iBAAiB,CAAC,EAAE;MAC/B,MAAMC,yBAAyB,GAAGA,CAAA,KAChCD,iBAAiB,CAACxH,GAAG,CAAE0H,CAAC,IAAKhH,OAAO,CAACiH,UAAU,CAAC,MAAM,EAAEnB,eAAe,CAAC7C,EAAE,EAAE+D,CAAC,CAACE,IAAI,CAAC,CACpF;MAED,MAAMP,cAAc,GAAGI,yBAAyB,CAAC,CAAC;MAClDH,OAAO,CAACC,GAAG,CAAC,CACV,IAAIF,cAAc,IAAI,EAAE,CAAC,CAC1B,CAAC;IACJ;EACF,CAAE;EAEF,MAAMQ,iBAAiB,GAAGC,KAAA,IAAgC;IAAA,IAA/B;MAAEC,KAAK;MAAEC;IAAgB,CAAC,GAAAF,KAAA;IACnD,IAAIG,QAAQ,GAAG,EAAE;IACjBjI,GAAG,CAAC+H,KAAK,EAAGG,WAAW,IAAK;MAC1BlI,GAAG,CAAEgI,eAAe,IAAI9C,aAAa,EAAIiD,UAAU,IAAK;QAAA,IAAAC,gBAAA;QACtD,IAAI,CAACnI,OAAO,CAACkI,UAAU,CAAC,KAAAC,gBAAA,GAAID,UAAU,CAACE,IAAI,cAAAD,gBAAA,gBAAAA,gBAAA,GAAfA,gBAAA,CAAiBE,gBAAgB,cAAAF,gBAAA,eAAjCA,gBAAA,CAAmCG,QAAQ,CAACL,WAAW,CAACrE,OAAO,CAACF,EAAE,CAAC,EAAE;UAC/FsE,QAAQ,CAACO,IAAI,CAAC9C,oBAAoB,CAAC;YACjC+C,OAAO,EAAEP,WAAW,CAACvE,EAAE;YACvB+E,WAAW,EAAE,MAAM;YACnBL,IAAI,EAAEF,UAAU,CAACE,IAAI,CAAC1E,EAAE;YACxBF,QAAQ,EAAEyE,WAAW,CAACzE,QAAQ,CAACE,EAAE;YACjCgF,SAAS,EAAER,UAAU,CAACQ,SAAS;YAC/BC,SAAS,EAAE3D,eAAe,CAACtB;UAC7B,CAAC,CAAC,CAAC;QACL;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO2D,OAAO,CAACC,GAAG,CAACU,QAAQ,CAAC,CAACY,IAAI,CAAEF,SAAS,IAAK;MAC/C,OAAOA,SAAS;IAClB,CAAC,CAAC,CAACG,KAAK,CAACC,GAAG,IAAI;MACdtI,SAAS,CAACuI,MAAM,CAAC/C,KAAK,CAAC,8BAA8B,CAAC;MACtD,MAAM8C,GAAG;IACX,CAAC,CAAC;EACJ,CAAC;EAED,MAAME,oBAAoB,GAAG,MAAAC,KAAA,IAA6E;IAAA,IAAAC,qBAAA;IAAA,IAAtE;MAAEnG,QAAQ;MAAEoG,aAAa;MAAE9G,kBAAkB;MAAEC;IAAiB,CAAC,GAAA2G,KAAA;IACnG,MAAMG,oBAAoB,GAAG;MAC3B7F,MAAM,EAAER,QAAQ;MAChBM,KAAK,EAAE,QAAQ;MACfgG,eAAe,EAAEhH,kBAAkB;MACnCiH,aAAa,EAAEhH,gBAAgB;MAC/B,oBAAoB,EAAE6G,aAAa;MACnCI,IAAI,EAAE;IACR,CAAC;IAED,MAAMC,kBAAkB,GAAG,MAAM/I,OAAO,CAACgJ,KAAK,CAAC,WAAW,EAAEL,oBAAoB,CAAC;IACjF,OAAOI,kBAAkB,aAAlBA,kBAAkB,gBAAAN,qBAAA,GAAlBM,kBAAkB,CAAEtD,IAAI,cAAAgD,qBAAA,gBAAAA,qBAAA,GAAxBA,qBAAA,CAA0BhD,IAAI,cAAAgD,qBAAA,uBAA9BA,qBAAA,CAAiC,CAAC,CAAC;EAC5C,CAAC;EAED,MAAMQ,2BAA2B,GAAG,MAAAC,KAAA,IAAiD;IAAA,IAA1C;MAAE1I,QAAQ;MAAE2I,MAAM;MAAE7G,QAAQ;MAAE8B;IAAM,CAAC,GAAA8E,KAAA;IAC9E,MAAME,kBAAkB,GAAG5I,QAAQ,CAAC6I,QAAQ,CAAC,CAAC,CAAC,CAACC,oBAAoB;IACpE,IAAI,EAACF,kBAAkB,aAAlBA,kBAAkB,eAAlBA,kBAAkB,CAAEG,sBAAsB,GAAE;MAC/C,OAAO,KAAK;IACd;IAEA,MAAM;MAAE3H,kBAAkB;MAAEC;IAAiB,CAAC,GAAGL,qBAAqB,CACpEhB,QAAQ,EACRiB,gCACF,CAAC;IACD,MAAM+H,SAAS,GAAG,MAAMjB,oBAAoB,CAAC;MAC3CjG,QAAQ;MACRoG,aAAa,EAAEU,kBAAkB,CAACK,YAAY,CAACxG,EAAE;MACjDrB,kBAAkB;MAClBC;IACF,CAAC,CAAC;IAEF,MAAM6H,eAAe,GAAGlJ,QAAQ,CAACmJ,eAAe,CAACC,gBAAgB;IACjE,MAAMC,UAAU,GAAGrJ,QAAQ,CAACmJ,eAAe,CAACG,UAAU,CAAC7G,EAAE,GAAG,CAACzC,QAAQ,CAACmJ,eAAe,CAACG,UAAU,CAAC7G,EAAE,CAAC,GAAG,EAAE;IAEzG,MAAM8B,0BAA0B,CAAAd,aAAA,CAAAA,aAAA;MAC9BrB,KAAK,EAAEwB,KAAK,GAAG,OAAO,GAAG,WAAW;MACpC2F,mBAAmB,EAAEnI,kBAAkB;MACvCoI,iBAAiB,EAAEnI;IAAgB,GAC/BpC,QAAQ,CAACwK,iBAAiB,CAACb,kBAAkB,CAACc,YAAY,CAAC,GAC3D;MAAEC,eAAe,EAAET;IAAgB,CAAC,GACpC;MAAEU,qBAAqB,EAAEC,QAAQ,CAACX,eAAe;IAAE,CAAC;MACxDpJ,IAAI,EAAE6I,MAAM;MACZG,oBAAoB,EAAEF,kBAAkB,CAACnG,EAAE;MAC3CqH,SAAS,EAAE/F,eAAe,CAACtB,EAAE;MAC7BuG,SAAS,EAAEA,SAAS,CAACvG,EAAE;MACvBH,MAAM,EAAER,QAAQ;MAChBiI,sBAAsB,EAAEV;IAAU,EACnC,CAAC;IAEF,OAAO,IAAI;EACb,CAAC;EAED,MAAMW,qBAAqB,GAAG,MAAAC,KAAA,IAA+D;IAAA,IAAxD;MAAEjK,QAAQ;MAAES,KAAK;MAAEqB,QAAQ;MAAEC,KAAK;MAAE6B,KAAK;MAAEsG;IAAO,CAAC,GAAAD,KAAA;IACtF,MAAM/H,UAAU,GAAGR,aAAa,CAAC;MAC/B1B,QAAQ;MACR8B,QAAQ;MACRC,KAAK;MACLC,gBAAgB;MAChBC;IACF,CAAC,CAAC;IACF,MAAMkI,iBAAiB,GAAGlK,sBAAsB,CAAC,MAAM,EAAEiC,UAAU,CAAC;IACpE,IAAIiI,iBAAiB,CAACtH,MAAM,EAAE;MAC5B,MAAM,IAAIuH,KAAK,oDAAAC,MAAA,CAAoDF,iBAAiB,CAAC/E,IAAI,CAAC,IAAI,CAAC,CAAE,CAAC;IACpG;IAEA,IAAI;MACF,IAAIkF,YAAY;MAChB,IAAIpG,mBAAmB,IAAIzD,KAAK,KAAK,CAAC,EAAE;QACtC,MAAM6C,MAAM,GAAGzE,GAAG,CAACqF,mBAAmB,EAAE,MAAM,EAAE,IAAI,CAAC;QACrD,MAAMV,OAAO,GAAGL,+BAA+B,CAAC;UAC9CnD,QAAQ;UACRsD,MAAM;UACNvB,KAAK;UACLwB;QACF,CAAC,CAAC;QACF+G,YAAY,GAAG,MAAM1F,UAAU,CAACtB,MAAM,CAACb,EAAE,EAAEe,OAAO,CAAC;MACrD,CAAC,MAAM;QACL8G,YAAY,GAAG,MAAMhG,UAAU,CAACpC,UAAU,CAAC;MAC7C;MAEA,MAAMqI,WAAW,GAAG1L,GAAG,CAACyL,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;MACtD/J,oBAAoB,CAAC2J,MAAM,CAAC1J,cAAc,EAAEC,KAAK,EAAE;QAAEkI,MAAM,EAAE4B,WAAW,CAAC9H;MAAG,CAAC,CAAC;MAE9E,MAAMoB,oBAAoB,GAAG,MAAM4E,2BAA2B,CAAC;QAC7DzI,QAAQ;QACR2I,MAAM,EAAE4B,WAAW,CAAC9H,EAAE;QACtBX,QAAQ;QACR8B;MACF,CAAC,CAAC;MAEFsG,MAAM,CAACrD,KAAK,CAACS,IAAI,CAACiD,WAAW,CAAC;MAC9B,OAAO;QAAEA,WAAW;QAAE1G;MAAqB,CAAC;IAC9C,CAAC,CAAC,OAAOgE,GAAG,EAAE;MACZqC,MAAM,CAAC1J,cAAc,CAACC,KAAK,CAAC,CAACsE,KAAK,+BAAAsF,MAAA,CAA+BvF,kBAAkB,CAAC+C,GAAG,CAAC,CAAE;MAC1F,OAAO,IAAI;IACb;EACF,CAAC;EAED,MAAM2C,yBAAyB,GAAGC,KAAA,IAA4C;IAAA,IAA3C;MAAEC,WAAW;MAAE/B,MAAM;MAAElI,KAAK;MAAEyJ;IAAO,CAAC,GAAAO,KAAA;IACvE,MAAME,kCAAkC,GAAG;MACzCC,WAAW,EAAE,MAAM;MACnBC,OAAO,EAAElC,MAAM;MACfmC,QAAQ,EAAE/G,eAAe,CAACtB,EAAE;MAC5BsI,UAAU,EAAE,QAAQ;MACpBC,QAAQ,EAAE,mBAAmB;MAC7BC,IAAI,8BAAAZ,MAAA,CAA8BK,WAAW,CAACQ,IAAI;IACpD,CAAC;IAED,MAAMC,iBAAiB,GAAGlL,sBAAsB,CAAC,MAAM,EAAE0K,kCAAkC,CAAC;IAC5F,IAAIQ,iBAAiB,CAACtI,MAAM,EAAE;MAC5BqH,MAAM,CAAC1J,cAAc,CAACC,KAAK,CAAC,CAACsE,KAAK,kEAAAsF,MAAA,CAAkEc,iBAAiB,CAAC/F,IAAI,CAAC,IAAI,CAAC,CAAE;MAClI;IACF;IAEA,IAAI;MACFX,UAAU,CAACkG,kCAAkC,CAAC;MAC9CT,MAAM,CAACjG,SAAS,CAACqD,IAAI,CAAC;QAAE7G,KAAK;QAAE2K,IAAI,EAAE,IAAI;QAAEC,aAAa,EAAE5K;MAAM,CAAC,CAAC;MAClEF,oBAAoB,CAAC2J,MAAM,CAAC1J,cAAc,EAAEC,KAAK,EAAE;QAAE2K,IAAI,EAAE;MAAK,CAAC,CAAC;IACpE,CAAC,CAAC,OAAAE,OAAA,EAAM;MACNpB,MAAM,CAAC1J,cAAc,CAACC,KAAK,CAAC,CAACsE,KAAK,GAAG,8DAA8D;IACrG;EACF,CAAC;EAED,MAAMwG,qBAAqB,GAAG,MAAAC,KAAA,IASxB;IAAA,IAT+B;MACnCxL,QAAQ;MACR0K,WAAW;MACXtI,KAAK;MACLqJ,SAAS;MACT9C,MAAM;MACNlI,KAAK;MACLyJ,MAAM;MACNwB;IACF,CAAC,GAAAF,KAAA;IACC,MAAMG,cAAc,GAAG;MACrBvJ,KAAK;MACLtC,IAAI,EAAE6I,MAAM;MACZiD,UAAU,EAAEH,SAAS;MACrBI,iBAAiB,EAAEnB,WAAW,CAACjI,EAAE;MACjCqJ,kBAAkB,EAAEpB,WAAW,CAACnI,QAAQ,CAACE,EAAE;MAC3CsJ,iBAAiB,EAAE/L,QAAQ,CAAC0C,OAAO,CAACD,EAAE;MACtCuJ,gBAAgB,EAAEhM,QAAQ,CAACwC,eAAe,CAACC,EAAE;MAC7CwJ,eAAe,EAAEjM,QAAQ,CAAC0C,OAAO,CAACD;IACpC,CAAC;IAED,MAAMyJ,qBAAqB,GAAGjM,sBAAsB,CAAC,UAAU,EAAE0L,cAAc,CAAC;IAChF,IAAIO,qBAAqB,CAACrJ,MAAM,EAAE;MAChCqH,MAAM,CAAC1J,cAAc,CAACC,KAAK,CAAC,CAACsE,KAAK,0DAAAsF,MAAA,CAA0D6B,qBAAqB,CAAC9G,IAAI,CAAC,IAAI,CAAC,CAAE;MAC9H;IACF;IAEA,IAAI;MACF,MAAM+G,gBAAgB,GAAG,MAAM9H,cAAc,CAACsH,cAAc,CAAC;MAC7D,MAAMS,eAAe,GAAGD,gBAAgB,CAAClH,IAAI,CAACA,IAAI;MAClDiF,MAAM,CAACjG,SAAS,CAACqD,IAAI,CAAA7D,aAAA,CAAAA,aAAA,KAChB2I,eAAe;QAClBf,aAAa,EAAE5K;MAAK,EACrB,CAAC;MACFF,oBAAoB,CAAC2J,MAAM,CAAC1J,cAAc,EAAEC,KAAK,EAAE;QAAE2K,IAAI,EAAE;MAAK,CAAC,CAAC;MAClEM,gBAAgB,CAACpE,IAAI,CAAC8E,eAAe,CAAC;IACxC,CAAC,CAAC,OAAOvE,GAAG,EAAE;MACZqC,MAAM,CAAC1J,cAAc,CAACC,KAAK,CAAC,CAACsE,KAAK,mCAAAsF,MAAA,CAAmCvF,kBAAkB,CAAC+C,GAAG,CAAC,CAAE;IAChG;EACF,CAAC;EAED,MAAMwE,yBAAyB,GAAG,MAAAC,KAAA,IAW5B;IAAA,IAXmC;MACvCtM,QAAQ;MACR0K,WAAW;MACXe,SAAS;MACT1J,KAAK;MACL8B,oBAAoB;MACpBD,KAAK;MACL2I,uBAAuB;MACvB9L,KAAK;MACLyJ,MAAM;MACNwB;IACF,CAAC,GAAAY,KAAA;IACCjH,eAAe,CAACrF,QAAQ,EAAEuM,uBAAuB,CAAC;IAElD,MAAMnK,KAAK,GAAGsB,gBAAgB,CAAC;MAAEE,KAAK;MAAE7B,KAAK;MAAE8B;IAAqB,CAAC,CAAC;IACtE,IAAIM,+BAA+B,IAAIjF,iBAAiB,CAACwL,WAAW,CAAC,EAAE;MACrEF,yBAAyB,CAAC;QACxBE,WAAW;QACX/B,MAAM,EAAE4D,uBAAuB,CAAC9J,EAAE;QAClChC,KAAK;QACLyJ;MACF,CAAC,CAAC;MACF;IACF;IAEA,MAAMqB,qBAAqB,CAAC;MAC1BvL,QAAQ;MACR0K,WAAW;MACXtI,KAAK;MACLqJ,SAAS;MACT9C,MAAM,EAAE4D,uBAAuB,CAAC9J,EAAE;MAClChC,KAAK;MACLyJ,MAAM;MACNwB;IACF,CAAC,CAAC;EACJ,CAAC;EAED,MAAMc,oBAAoB,GAAG,MAAAC,KAAA,IAA8C;IAAA,IAAAC,cAAA,EAAAC,mBAAA;IAAA,IAAvC;MAAE3M,QAAQ;MAAES,KAAK;MAAEmD,KAAK;MAAEsG;IAAO,CAAC,GAAAuC,KAAA;IACpE,MAAMG,WAAW,GAAG7N,OAAO,EAAA2N,cAAA,GAAC1M,QAAQ,CAACF,IAAI,cAAA4M,cAAA,uBAAbA,cAAA,CAAeG,qBAAqB,CAAC,GAC7D,MAAMC,2BAA2B,CAAC9M,QAAQ,EAAE4D,KAAK,CAAC,GAClD,MAAMmJ,mBAAmB,CAAC/M,QAAQ,EAAE4D,KAAK,CAAC;IAE9CrD,oBAAoB,CAAC2J,MAAM,CAAC1J,cAAc,EAAEC,KAAK,EAAE;MAAE2K,IAAI,EAAE,IAAI;MAAEzC,MAAM,GAAAgE,mBAAA,GAAEC,WAAW,CAAC/F,KAAK,CAAC,CAAC,CAAC,cAAA8F,mBAAA,uBAApBA,mBAAA,CAAsBlK;IAAG,CAAC,CAAC;IACpGyH,MAAM,CAACrD,KAAK,CAACS,IAAI,CAACsF,WAAW,CAAC/F,KAAK,CAAC,CAAC,CAAC,CAAC;IAEvC,MAAMmG,kBAAkB,GAAGJ,WAAW,CAAC3I,SAAS,CAACnF,GAAG,CAACkB,QAAQ,IAAAyD,aAAA,CAAAA,aAAA,KACxDzD,QAAQ;MACXqL,aAAa,EAAE5K;IAAK,EACpB,CAAC;IACHyJ,MAAM,CAACjG,SAAS,CAACqD,IAAI,CAAC,GAAG0F,kBAAkB,CAAC;IAE5C,MAAMC,YAAY,GAAG,MAAMtN,iBAAiB,CAAC;MAC3CuN,gBAAgB,EAAElN,QAAQ;MAC1B0L,gBAAgB,EAAEkB,WAAW,CAAC3I;IAChC,CAAC,CAAC;IACF,IAAIgJ,YAAY,EAAE;MAChB/C,MAAM,CAACiD,kBAAkB,CAAC7F,IAAI,CAAC2F,YAAY,CAAC;IAC9C;EACF,CAAC;EAED,MAAMG,uBAAuB,GAAG,MAAAC,MAAA,IAA0E;IAAA,IAAnE;MAAErN,QAAQ;MAAES,KAAK;MAAEmD,KAAK;MAAE0J,gBAAgB;MAAExL,QAAQ;MAAEoI;IAAO,CAAC,GAAAmD,MAAA;IACnG,MAAME,kBAAkB,GAAG1O,GAAG,CAACmB,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC;IACxD,MAAMyL,SAAS,GAAGrM,iBAAiB,CAACY,QAAQ,CAAC;IAC7C,MAAM+B,KAAK,GAAG5C,aAAa,CAACa,QAAQ,CAAC;IACrC,MAAM0L,gBAAgB,GAAG,EAAE;IAE3B,IAAIa,uBAAuB,GAAG,IAAI;IAClC,IAAI1I,oBAAoB,GAAG,KAAK;IAEhC,KAAK,IAAI2J,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,kBAAkB,CAAC1K,MAAM,EAAE2K,CAAC,IAAI,CAAC,EAAE;MACrD,MAAM9C,WAAW,GAAG6C,kBAAkB,CAACC,CAAC,CAAC;MACzC,MAAMC,gBAAgB,GAAIH,gBAAgB,IAAI,CAACf,uBAAuB,IAAK,CAACe,gBAAgB;MAE5F,IAAIG,gBAAgB,EAAE;QACpB,MAAMC,UAAU,GAAG,MAAM1D,qBAAqB,CAAC;UAC7ChK,QAAQ;UACRS,KAAK;UACLqB,QAAQ;UACRC,KAAK;UACL6B,KAAK;UACLsG;QACF,CAAC,CAAC;QACF,IAAI,CAACwD,UAAU,EAAE;UACf;QACF;QACAnB,uBAAuB,GAAGmB,UAAU,CAACnD,WAAW;QAChD1G,oBAAoB,GAAG6J,UAAU,CAAC7J,oBAAoB;MACxD;MAEA,MAAMwI,yBAAyB,CAAC;QAC9BrM,QAAQ;QACR0K,WAAW;QACXe,SAAS;QACT1J,KAAK;QACL8B,oBAAoB;QACpBD,KAAK;QACL2I,uBAAuB;QACvB9L,KAAK;QACLyJ,MAAM;QACNwB;MACF,CAAC,CAAC;IACJ;IAEA,MAAMuB,YAAY,GAAG,MAAMtN,iBAAiB,CAAC;MAC3CuN,gBAAgB,EAAElN,QAAQ;MAC1B0L;IACF,CAAC,CAAC;IACF,IAAIuB,YAAY,EAAE;MAChB/C,MAAM,CAACiD,kBAAkB,CAAC7F,IAAI,CAAC2F,YAAY,CAAC;IAC9C;EACF,CAAC;EAED,MAAMU,eAAe,GAAG,MAAAC,MAAA,IAAwC;IAAA,IAAjC;MAAE3J,SAAS;MAAE3B,MAAM;MAAEsB;IAAM,CAAC,GAAAgK,MAAA;IACzD,MAAM1D,MAAM,GAAG;MACbjG,SAAS,EAAE,EAAE;MACb4C,KAAK,EAAE,EAAE;MACTrG,cAAc,EAAE,EAAE;MAClB2M,kBAAkB,EAAE;IACtB,CAAC;IAED,MAAMG,gBAAgB,GAAGrJ,SAAS,CAAC4J,IAAI,CAAE7N,QAAQ,IAAKnB,GAAG,CAACmB,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC6C,MAAM,GAAG,CAAC,CAAC;IAE/F,KAAK,IAAIiL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG7J,SAAS,CAACpB,MAAM,EAAEiL,CAAC,IAAI,CAAC,EAAE;MAC5C5D,MAAM,CAAC1J,cAAc,CAAC8G,IAAI,CAAC;QAAE7G,KAAK,EAAEqN,CAAC;QAAE1C,IAAI,EAAE,KAAK;QAAErG,KAAK,EAAE,IAAI;QAAE4D,MAAM,EAAE;MAAK,CAAC,CAAC;MAEhF,IAAI;QACF,MAAM3I,QAAQ,GAAGiE,SAAS,CAAC6J,CAAC,CAAC;QAC7B,IAAI9N,QAAQ,CAACoC,KAAK,KAAK,OAAO,EAAE;UAC9B,MAAMoK,oBAAoB,CAAC;YAAExM,QAAQ;YAAES,KAAK,EAAEqN,CAAC;YAAElK,KAAK;YAAEsG;UAAO,CAAC,CAAC;QACnE,CAAC,MAAM;UACL,MAAMkD,uBAAuB,CAAC;YAC5BpN,QAAQ;YACRS,KAAK,EAAEqN,CAAC;YACRlK,KAAK;YACL0J,gBAAgB;YAChBxL,QAAQ,EAAEQ,MAAM,CAACG,EAAE;YACnByH;UACF,CAAC,CAAC;QACJ;MACF,CAAC,CAAC,OAAOrC,GAAG,EAAE;QACZqC,MAAM,CAAC1J,cAAc,CAACsN,CAAC,CAAC,CAAC/I,KAAK,wBAAAsF,MAAA,CAAwBxC,GAAG,CAACkG,OAAO,CAAE;MACrE;IACF;IAEA,OAAO7D,MAAM;EACf,CAAC;EAED,MAAM8D,sBAAsB,GAAGA,CAAChO,QAAQ,EAAEiO,OAAO,KAAK;IACpD,MAAMC,kBAAkB,GAAGlO,QAAQ,CAAC2C,OAAO,CAACF,EAAE,KAAKwL,OAAO,CAACE,YAAY,CAAC1L,EAAE;IAC1E,MAAM2L,kBAAkB,GAAGpO,QAAQ,CAACmC,WAAW,IAAInC,QAAQ,CAACmC,WAAW,KAAK8L,OAAO,CAAC9L,WAAW;IAC/F,OAAAsB,aAAA,CAAAA,aAAA,KACMyK,kBAAkB,IAAI;MAAEvL,OAAO,EAAE;QAAEF,EAAE,EAAEzC,QAAQ,CAAC2C,OAAO,CAACF;MAAG;IAAE,CAAC,GAC9D2L,kBAAkB,IAAI;MAAEjM,WAAW,EAAEnC,QAAQ,CAACmC;IAAY,CAAC;EAEnE,CAAC;EAED,MAAMkM,cAAc,GAAGA,CAACzK,KAAK,EAAE5D,QAAQ,KAAK;IAC1C,IAAI4D,KAAK,EAAE,OAAO,OAAO;IACzB,OAAOzE,aAAa,CAACa,QAAQ,CAAC,GAAG,cAAc,GAAG,MAAM;EAC1D,CAAC;EAED,MAAMsO,0BAA0B,GAAGA,CAACtO,QAAQ,EAAEuO,WAAW,EAAE9C,SAAS,KAAK;IACvE,MAAMjI,OAAO,GAAG,CAAC,CAAC;IAClB,IAAIxD,QAAQ,CAACoC,KAAK,KAAKmM,WAAW,EAAE/K,OAAO,CAACpB,KAAK,GAAGmM,WAAW;IAC/D,IAAIvO,QAAQ,CAAC4L,UAAU,KAAKH,SAAS,EAAEjI,OAAO,CAACoI,UAAU,GAAGH,SAAS;IACrE,OAAOjI,OAAO;EAChB,CAAC;EAED,MAAMgL,sBAAsB,GAAGA,CAACC,QAAQ,EAAEF,WAAW,EAAE9C,SAAS,KAAK;IACnE,OAAOgD,QAAQ,CAAC3P,GAAG,CAAC4P,CAAC,IAAI;MACvB,MAAMC,aAAa,GAAGL,0BAA0B,CAACI,CAAC,EAAEH,WAAW,EAAE9C,SAAS,CAAC;MAC3E,OAAO3K,MAAM,CAAC8N,IAAI,CAACD,aAAa,CAAC,CAAC9L,MAAM,GAAG,CAAC,GACxCrD,OAAO,CAACkF,YAAY,CAAC,UAAU,EAAEgK,CAAC,CAACjM,EAAE,EAAEkM,aAAa,CAAC,GACrD,IAAI;IACV,CAAC,CAAC,CAACtO,MAAM,CAACwO,OAAO,CAAC;EACpB,CAAC;EAED,MAAMC,wBAAwB,GAAGA,CAACC,QAAQ,EAAAC,MAAA,KAAoD;IAAA,IAAlD;MAAET,WAAW;MAAE9C,SAAS;MAAEwC,OAAO;MAAEjO;IAAS,CAAC,GAAAgP,MAAA;IACvF,OAAOD,QAAQ,CAACjQ,GAAG,CAACmQ,OAAO,IAAI5K,cAAc,CAAC;MAC5CjC,KAAK,EAAEmM,WAAW;MAClBzO,IAAI,EAAEmO,OAAO,CAACxL,EAAE;MAChBmJ,UAAU,EAAEH,SAAS;MACrBI,iBAAiB,EAAEoD,OAAO,CAACxM,EAAE;MAC7BqJ,kBAAkB,EAAEmD,OAAO,CAAC1M,QAAQ,CAACE,EAAE;MACvCsJ,iBAAiB,EAAE/L,QAAQ,CAAC0C,OAAO,CAACD,EAAE;MACtCuJ,gBAAgB,EAAEiC,OAAO,CAAC1L,QAAQ,CAACE,EAAE;MACrCwJ,eAAe,EAAEgC,OAAO,CAACvL,OAAO,CAACD;IACnC,CAAC,CAAC,CAAC;EACL,CAAC;EAED,MAAMyM,sBAAsB,GAAGA,CAACzH,SAAS,EAAE0H,WAAW,EAAEC,WAAW,KAAK;IACtE,MAAMC,eAAe,GAAG5H,SAAS,CAAC6H,KAAK,CAACH,WAAW,EAAEA,WAAW,GAAGC,WAAW,CAAC;IAC/E,MAAMG,gBAAgB,GAAGF,eAAe,CAACvQ,GAAG,CAAC4P,CAAC;MAAA,IAAAc,OAAA;MAAA,OAAId,CAAC,aAADA,CAAC,gBAAAc,OAAA,GAADd,CAAC,CAAEzJ,IAAI,cAAAuK,OAAA,uBAAPA,OAAA,CAASvK,IAAI;IAAA,EAAC,CAAC5E,MAAM,CAACwO,OAAO,CAAC;IAChF,MAAMnD,gBAAgB,GAAGjE,SAAS,CAAC6H,KAAK,CAACH,WAAW,GAAGC,WAAW,CAAC,CAACtQ,GAAG,CAAC4P,CAAC;MAAA,IAAAe,QAAA;MAAA,OAAIf,CAAC,aAADA,CAAC,gBAAAe,QAAA,GAADf,CAAC,CAAEzJ,IAAI,cAAAwK,QAAA,uBAAPA,QAAA,CAASxK,IAAI;IAAA,EAAC,CAAC5E,MAAM,CAACwO,OAAO,CAAC;IAC3G,OAAO;MAAEU,gBAAgB;MAAE7D;IAAiB,CAAC;EAC/C,CAAC;EAED,MAAMgE,8BAA8B,GAAGA,CAAC1P,QAAQ,EAAE2P,YAAY,KAAK;IACjE,MAAMC,aAAa,GAAG9Q,GAAG,CAACkB,QAAQ,CAAC6I,QAAQ,EAAE,IAAI,CAAC;IAClD,MAAMgH,aAAa,GAAG/Q,GAAG,CAAC6Q,YAAY,EAAE,sBAAsB,CAAC;IAC/D,MAAMlE,SAAS,GAAGzL,QAAQ,CAAC6I,QAAQ,CAAChG,MAAM,GAAG,CAAC;IAE9C,OAAO;MACLiN,QAAQ,EAAEH,YAAY,CAACtP,MAAM,CAACqO,CAAC,IAAI,CAACkB,aAAa,CAACvI,QAAQ,CAACqH,CAAC,CAAC7C,iBAAiB,CAACpJ,EAAE,CAAC,CAAC;MACnFgM,QAAQ,EAAEkB,YAAY,CAACtP,MAAM,CAACqO,CAAC,IAAIkB,aAAa,CAACvI,QAAQ,CAACqH,CAAC,CAAC7C,iBAAiB,CAACpJ,EAAE,CAAC,CAAC;MAClFsM,QAAQ,EAAE/O,QAAQ,CAAC6I,QAAQ,CAACxI,MAAM,CAAC0P,CAAC,IAAI,CAACF,aAAa,CAACxI,QAAQ,CAAC0I,CAAC,CAACtN,EAAE,CAAC,CAAC;MACtEgJ;IACF,CAAC;EACH,CAAC;EAED,MAAMuE,kBAAkB,GAAG,MAAOhQ,QAAQ,IAAK;IAC7C,MAAM,CAACiQ,mBAAmB,EAAEC,wBAAwB,CAAC,GAAG,MAAM9J,OAAO,CAACC,GAAG,CAAC,CACxE7G,OAAO,CAAC2Q,UAAU,CAAC,MAAM,EAAEnQ,QAAQ,CAACF,IAAI,CAAC2C,EAAE,CAAC,EAC5CjD,OAAO,CAACgJ,KAAK,CAAC,UAAU,EAAE;MAAE1I,IAAI,EAAEE,QAAQ,CAACF,IAAI,CAAC2C;IAAG,CAAC,CAAC,CACtD,CAAC;IAEF,MAAMwL,OAAO,GAAGpP,GAAG,CAACoR,mBAAmB,EAAE,WAAW,EAAE,IAAI,CAAC;IAC3D,MAAMN,YAAY,GAAG9Q,GAAG,CAACqR,wBAAwB,EAAE,WAAW,EAAE,IAAI,CAAC;IAErE,MAAME,kBAAkB,GAAGpC,sBAAsB,CAAChO,QAAQ,EAAEiO,OAAO,CAAC;IACpE,MAAM3D,YAAY,GAAGvL,OAAO,CAACqR,kBAAkB,CAAC,GAAGnC,OAAO,GAAG,MAAMrJ,UAAU,CAAC5E,QAAQ,CAACF,IAAI,CAAC2C,EAAE,EAAE2N,kBAAkB,CAAC;IAEnH/K,eAAe,CAACrF,QAAQ,EAAEiO,OAAO,CAAC;IAElC,OAAO;MAAEA,OAAO;MAAE0B,YAAY;MAAErF;IAAa,CAAC;EAChD,CAAC;EAED,MAAMwC,2BAA2B,GAAG,eAAAA,CAAO9M,QAAQ,EAAoB;IAAA,IAAlB4D,KAAK,GAAAyM,SAAA,CAAAxN,MAAA,QAAAwN,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,KAAK;IAChE,IAAI;MAAA,IAAAE,qBAAA,EAAAC,kBAAA;MACF,MAAM;QAAEvC,OAAO;QAAE0B,YAAY;QAAErF;MAAa,CAAC,GAAG,MAAM0F,kBAAkB,CAAChQ,QAAQ,CAAC;MAClF,MAAM;QAAE8P,QAAQ;QAAErB,QAAQ;QAAEM,QAAQ;QAAEtD;MAAU,CAAC,GAAGiE,8BAA8B,CAAC1P,QAAQ,EAAE2P,YAAY,CAAC;MAC1G,MAAMpB,WAAW,GAAGF,cAAc,CAACzK,KAAK,EAAE5D,QAAQ,CAAC;MAEnD,MAAMyQ,cAAc,GAAGX,QAAQ,CAAChR,GAAG,CAAC4P,CAAC,IAAIlP,OAAO,CAACkR,YAAY,CAAC,UAAU,EAAEhC,CAAC,CAACjM,EAAE,CAAC,CAAC;MAChF,MAAMkO,cAAc,GAAGnC,sBAAsB,CAACC,QAAQ,EAAEF,WAAW,EAAE9C,SAAS,CAAC;MAC/E,MAAMmF,cAAc,GAAG9B,wBAAwB,CAACC,QAAQ,EAAE;QAAER,WAAW;QAAE9C,SAAS;QAAEwC,OAAO;QAAEjO;MAAS,CAAC,CAAC;MAExG,MAAMyH,SAAS,GAAG,MAAMrB,OAAO,CAACC,GAAG,CAAC,CAAC,GAAGoK,cAAc,EAAE,GAAGE,cAAc,EAAE,GAAGC,cAAc,CAAC,CAAC;MAC9F,MAAM;QAAErB,gBAAgB;QAAE7D;MAAiB,CAAC,GAAGwD,sBAAsB,CAACzH,SAAS,EAAEqI,QAAQ,CAACjN,MAAM,EAAE8N,cAAc,CAAC9N,MAAM,CAAC;MAExH,OAAO;QACLgE,KAAK,EAAE,EAAA0J,qBAAA,GAACjG,YAAY,aAAZA,YAAY,gBAAAkG,kBAAA,GAAZlG,YAAY,CAAErF,IAAI,cAAAuL,kBAAA,uBAAlBA,kBAAA,CAAoBvL,IAAI,cAAAsL,qBAAA,cAAAA,qBAAA,GAAItC,OAAO,CAAC;QAC5ChK,SAAS,EAAE,CAAC,GAAGsL,gBAAgB,EAAE,GAAG7D,gBAAgB;MACtD,CAAC;IACH,CAAC,CAAC,OAAO7D,GAAG,EAAE;MACZtI,SAAS,CAACuI,MAAM,CAAC/C,KAAK,CAAC,mCAAmC,CAAC;MAC3D,MAAM8C,GAAG;IACX;EACF,CAAC;EAED,MAAMgJ,iCAAiC,GAAG,eAAAA,CAAO7Q,QAAQ,EAAiC;IAAA,IAA/B8Q,OAAO,GAAAT,SAAA,CAAAxN,MAAA,QAAAwN,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG;MAAEzM,KAAK,EAAE;IAAM,CAAC;IACnF,MAAMgF,kBAAkB,GAAG5I,QAAQ,CAAC6I,QAAQ,CAAC,CAAC,CAAC,CAACC,oBAAoB;IACpE,MAAM;MAAE1H,kBAAkB;MAAEC;IAAiB,CAAC,GAAGL,qBAAqB,CACpEhB,QAAQ,EACRiB,gCACF,CAAC;IAED,MAAMiI,eAAe,GAAGlJ,QAAQ,CAACmJ,eAAe,CAACC,gBAAgB;IACjE,MAAMJ,SAAS,GAAG,MAAMjB,oBAAoB,CAAC;MAC3CjG,QAAQ,EAAEQ,MAAM,CAACG,EAAE;MACnByF,aAAa,EAAEU,kBAAkB,CAACK,YAAY,CAACxG,EAAE;MACjDrB,kBAAkB;MAClBC;IACF,CAAC,CAAC;IAEF,MAAMwD,0BAA0B,CAAC7E,QAAQ,CAACF,IAAI,CAAC+M,qBAAqB,CAACpK,EAAE,EAAAgB,aAAA,CAAAA,aAAA,CAAAA,aAAA,KACjEqN,OAAO,CAAClN,KAAK,GAAG,CAAC,CAAC,GAAG;MAAExB,KAAK,EAAE;IAAY,CAAC;MAC/CmH,mBAAmB,EAAEnI,kBAAkB;MACvCoI,iBAAiB,EAAEnI;IAAgB,GAEjCpC,QAAQ,CAACwK,iBAAiB,CAACb,kBAAkB,CAACc,YAAY,CAAC,GAC3D;MAAEC,eAAe,EAAET;IAAgB,CAAC,GAAG;MAAEU,qBAAqB,EAAEC,QAAQ,CAACX,eAAe;IAAE,CAAC;MAE7FY,SAAS,EAAE/F,eAAe,CAACtB,EAAE;MAC7BuG,SAAS,EAAEA,SAAS,CAACvG,EAAE;MACvBH,MAAM,EAAEA,MAAM,CAACG;IAAE,EAClB,CAAC;EACJ,CAAC;EAED,MAAMsK,mBAAmB,GAAG,MAAAA,CAAO/M,QAAQ,EAAE4D,KAAK,KAAK;IACrD,IAAI;MACF,MAAMmD,QAAQ,GAAG,CACfnC,UAAU,CAAC5E,QAAQ,CAACF,IAAI,CAAC2C,EAAE,EAAE;QAC3BN,WAAW,EAAEnC,QAAQ,CAACmC;MACxB,CAAC,CAAC,CACH;MAED,MAAM4O,cAAc,GAAGlS,GAAG,CAACmB,QAAQ,EAAE,yDAAyD,EAAE,KAAK,CAAC;MAEtG,IAAG,CAAC4D,KAAK,EAAE;QACT,IAAIoN,QAAQ;QACZ,IAAI7R,aAAa,CAACa,QAAQ,CAAC,EAAE;UAC3BgR,QAAQ,GAAG,cAAc;QAC3B,CAAC,MAAM,IAAID,cAAc,EAAE;UACzBC,QAAQ,GAAG,uBAAuB;QACpC,CAAC,MAAM;UACLA,QAAQ,GAAG,MAAM;QACnB;QACAjK,QAAQ,CAACO,IAAI,CAAC3C,cAAc,CAAC3E,QAAQ,CAACyC,EAAE,EAAE;UACxCL,KAAK,EAAE4O;QACT,CAAC,CAAC,CAAC;MACL;MAEA,IAAGD,cAAc,EAAE;QACjBhK,QAAQ,CAACO,IAAI,CAACuJ,iCAAiC,CAAC7Q,QAAQ,EAAE;UAAE4D;QAAM,CAAC,CAAC,CAAC;MACvE;MAEA,MAAM6D,SAAS,GAAG,MAAMrB,OAAO,CAACC,GAAG,CACjCU,QACF,CAAC;MAED,OAAO;QACL9C,SAAS,EAAEL,KAAK,GAAG,EAAE,GAAG,CAAC6D,SAAS,CAAC,CAAC,CAAC,CAACxC,IAAI,CAACA,IAAI,CAAC;QAChD4B,KAAK,EAAE,CAACY,SAAS,CAAC,CAAC,CAAC,CAACxC,IAAI,CAACA,IAAI;MAChC,CAAC;IACH,CAAC,CAAC,OAAO4C,GAAG,EAAE;MACZtI,SAAS,CAACuI,MAAM,CAAC/C,KAAK,CAAC,mCAAmC,CAAC;MAC3D,MAAM8C,GAAG;IACX;EACF,CAAC;EAED,OAAO,kBAAmD;IAAA,IAA5C;MAAEjE,KAAK,GAAG,KAAK;MAAEkD;IAAgB,CAAC,GAAAuJ,SAAA,CAAAxN,MAAA,QAAAwN,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,CAAC,CAAC;IACnD,IAAIrL,QAAQ,GAAG;MACbmI,kBAAkB,EAAE;IACtB,CAAC;IAEDnI,QAAQ,GAAG,MAAM2I,eAAe,CAAC;MAAE1J,SAAS;MAAE3B,MAAM;MAAEsB;IAAM,CAAC,CAAC;IAE9D,IAAII,aAAa,IAAI8C,eAAe,EAAE;MACpC,MAAMH,iBAAiB,CAAC;QAAEE,KAAK,EAAE7B,QAAQ,CAAC6B,KAAK;QAAEC;MAAgB,CAAC,CAAC;IACrE;IAEA,OAAO;MACLD,KAAK,EAAE7B,QAAQ,CAAC6B,KAAK;MACrB5C,SAAS,EAAEe,QAAQ,CAACf,SAAS;MAC7BzD,cAAc,EAAEwE,QAAQ,CAACxE,cAAc;MACvC2M,kBAAkB,EAAEnI,QAAQ,CAACmI;IAC/B,CAAC;EACH,CAAC;AACH;AAAC","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","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":[]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
import buildDraftState from '../buildDraftState';
|
|
5
|
+
const createReferral = function () {
|
|
6
|
+
let overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
7
|
+
return _objectSpread({
|
|
8
|
+
contact: {
|
|
9
|
+
id: 'person-1'
|
|
10
|
+
},
|
|
11
|
+
service: {
|
|
12
|
+
id: 'service-1'
|
|
13
|
+
},
|
|
14
|
+
referred_to_network: {
|
|
15
|
+
id: 'network-1',
|
|
16
|
+
name: 'Network 1'
|
|
17
|
+
},
|
|
18
|
+
referred_to_groups_draft: [{
|
|
19
|
+
id: 'provider-1',
|
|
20
|
+
licensed: true,
|
|
21
|
+
name: 'Provider 1',
|
|
22
|
+
program: {
|
|
23
|
+
id: 'program-1',
|
|
24
|
+
name: 'Program 1',
|
|
25
|
+
receiving_referrals: true,
|
|
26
|
+
status: 'active'
|
|
27
|
+
}
|
|
28
|
+
}],
|
|
29
|
+
referrals: [{
|
|
30
|
+
id: 'referral-1',
|
|
31
|
+
state: 'draft',
|
|
32
|
+
case: {
|
|
33
|
+
id: 'case-1'
|
|
34
|
+
}
|
|
35
|
+
}]
|
|
36
|
+
}, overrides);
|
|
37
|
+
};
|
|
38
|
+
describe('buildDraftState', () => {
|
|
39
|
+
const expectDraftClientNeeds = (overrides, expectedNeeds) => {
|
|
40
|
+
const dispatchCreateReferral = jest.fn(action => action);
|
|
41
|
+
const referral = createReferral(overrides);
|
|
42
|
+
buildDraftState({
|
|
43
|
+
referral,
|
|
44
|
+
dispatchCreateReferral
|
|
45
|
+
});
|
|
46
|
+
const dispatchedAction = dispatchCreateReferral.mock.calls[0][0];
|
|
47
|
+
expect(dispatchedAction.data.draftState.client_need).toEqual(expectedNeeds);
|
|
48
|
+
};
|
|
49
|
+
it.each([['includes draft client needs from referral person_condition_ids', {
|
|
50
|
+
person_condition_ids: ['need-1', 'need-2']
|
|
51
|
+
}, ['need-1', 'need-2']], ['includes draft client needs from referral person_conditions', {
|
|
52
|
+
person_conditions: [{
|
|
53
|
+
id: 'need-1',
|
|
54
|
+
type: 'person_condition'
|
|
55
|
+
}, {
|
|
56
|
+
id: 'need-2',
|
|
57
|
+
type: 'person_condition'
|
|
58
|
+
}]
|
|
59
|
+
}, ['need-1', 'need-2']], ['falls back to case person_condition_ids for draft client needs', {
|
|
60
|
+
case: {
|
|
61
|
+
person_condition_ids: ['case-need-1']
|
|
62
|
+
}
|
|
63
|
+
}, ['case-need-1']], ['falls back to case person_conditions for draft client needs', {
|
|
64
|
+
case: {
|
|
65
|
+
person_conditions: [{
|
|
66
|
+
id: 'case-need-1',
|
|
67
|
+
type: 'person_condition'
|
|
68
|
+
}]
|
|
69
|
+
}
|
|
70
|
+
}, ['case-need-1']], ['falls back to legacy client_need_id for draft client needs', {
|
|
71
|
+
client_need_id: 'legacy-need-1'
|
|
72
|
+
}, ['legacy-need-1']]])('%s', (_description, overrides, expectedNeeds) => {
|
|
73
|
+
expectDraftClientNeeds(overrides, expectedNeeds);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=buildDraftState.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildDraftState.test.js","names":["buildDraftState","createReferral","overrides","arguments","length","undefined","_objectSpread","contact","id","service","referred_to_network","name","referred_to_groups_draft","licensed","program","receiving_referrals","status","referrals","state","case","describe","expectDraftClientNeeds","expectedNeeds","dispatchCreateReferral","jest","fn","action","referral","dispatchedAction","mock","calls","expect","data","draftState","client_need","toEqual","it","each","person_condition_ids","person_conditions","type","client_need_id","_description"],"sources":["../../../../src/pages/builder/__tests__/buildDraftState.test.js"],"sourcesContent":["import buildDraftState from '../buildDraftState';\n\nconst createReferral = (overrides = {}) => ({\n contact: { id: 'person-1' },\n service: { id: 'service-1' },\n referred_to_network: { id: 'network-1', name: 'Network 1' },\n referred_to_groups_draft: [\n {\n id: 'provider-1',\n licensed: true,\n name: 'Provider 1',\n program: {\n id: 'program-1',\n name: 'Program 1',\n receiving_referrals: true,\n status: 'active',\n },\n },\n ],\n referrals: [\n {\n id: 'referral-1',\n state: 'draft',\n case: { id: 'case-1' },\n },\n ],\n ...overrides,\n});\n\ndescribe('buildDraftState', () => {\n const expectDraftClientNeeds = (overrides, expectedNeeds) => {\n const dispatchCreateReferral = jest.fn((action) => action);\n const referral = createReferral(overrides);\n\n buildDraftState({ referral, dispatchCreateReferral });\n\n const dispatchedAction = dispatchCreateReferral.mock.calls[0][0];\n expect(dispatchedAction.data.draftState.client_need).toEqual(expectedNeeds);\n };\n\n it.each([\n [\n 'includes draft client needs from referral person_condition_ids',\n { person_condition_ids: ['need-1', 'need-2'] },\n ['need-1', 'need-2'],\n ],\n [\n 'includes draft client needs from referral person_conditions',\n {\n person_conditions: [\n { id: 'need-1', type: 'person_condition' },\n { id: 'need-2', type: 'person_condition' },\n ],\n },\n ['need-1', 'need-2'],\n ],\n [\n 'falls back to case person_condition_ids for draft client needs',\n {\n case: {\n person_condition_ids: ['case-need-1'],\n },\n },\n ['case-need-1'],\n ],\n [\n 'falls back to case person_conditions for draft client needs',\n {\n case: {\n person_conditions: [\n { id: 'case-need-1', type: 'person_condition' },\n ],\n },\n },\n ['case-need-1'],\n ],\n [\n 'falls back to legacy client_need_id for draft client needs',\n { client_need_id: 'legacy-need-1' },\n ['legacy-need-1'],\n ],\n ])('%s', (_description, overrides, expectedNeeds) => {\n expectDraftClientNeeds(overrides, expectedNeeds);\n });\n});\n"],"mappings":";;;AAAA,OAAOA,eAAe,MAAM,oBAAoB;AAEhD,MAAMC,cAAc,GAAG,SAAAA,CAAA;EAAA,IAACC,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAAA,OAAAG,aAAA;IACpCC,OAAO,EAAE;MAAEC,EAAE,EAAE;IAAW,CAAC;IAC3BC,OAAO,EAAE;MAAED,EAAE,EAAE;IAAY,CAAC;IAC5BE,mBAAmB,EAAE;MAAEF,EAAE,EAAE,WAAW;MAAEG,IAAI,EAAE;IAAY,CAAC;IAC3DC,wBAAwB,EAAE,CACxB;MACEJ,EAAE,EAAE,YAAY;MAChBK,QAAQ,EAAE,IAAI;MACdF,IAAI,EAAE,YAAY;MAClBG,OAAO,EAAE;QACPN,EAAE,EAAE,WAAW;QACfG,IAAI,EAAE,WAAW;QACjBI,mBAAmB,EAAE,IAAI;QACzBC,MAAM,EAAE;MACV;IACF,CAAC,CACF;IACDC,SAAS,EAAE,CACT;MACET,EAAE,EAAE,YAAY;MAChBU,KAAK,EAAE,OAAO;MACdC,IAAI,EAAE;QAAEX,EAAE,EAAE;MAAS;IACvB,CAAC;EACF,GACEN,SAAS;AAAA,CACZ;AAEFkB,QAAQ,CAAC,iBAAiB,EAAE,MAAM;EAChC,MAAMC,sBAAsB,GAAGA,CAACnB,SAAS,EAAEoB,aAAa,KAAK;IAC3D,MAAMC,sBAAsB,GAAGC,IAAI,CAACC,EAAE,CAAEC,MAAM,IAAKA,MAAM,CAAC;IAC1D,MAAMC,QAAQ,GAAG1B,cAAc,CAACC,SAAS,CAAC;IAE1CF,eAAe,CAAC;MAAE2B,QAAQ;MAAEJ;IAAuB,CAAC,CAAC;IAErD,MAAMK,gBAAgB,GAAGL,sBAAsB,CAACM,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChEC,MAAM,CAACH,gBAAgB,CAACI,IAAI,CAACC,UAAU,CAACC,WAAW,CAAC,CAACC,OAAO,CAACb,aAAa,CAAC;EAC7E,CAAC;EAEDc,EAAE,CAACC,IAAI,CAAC,CACN,CACE,gEAAgE,EAChE;IAAEC,oBAAoB,EAAE,CAAC,QAAQ,EAAE,QAAQ;EAAE,CAAC,EAC9C,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACrB,EACD,CACE,6DAA6D,EAC7D;IACEC,iBAAiB,EAAE,CACjB;MAAE/B,EAAE,EAAE,QAAQ;MAAEgC,IAAI,EAAE;IAAmB,CAAC,EAC1C;MAAEhC,EAAE,EAAE,QAAQ;MAAEgC,IAAI,EAAE;IAAmB,CAAC;EAE9C,CAAC,EACD,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACrB,EACD,CACE,gEAAgE,EAChE;IACErB,IAAI,EAAE;MACJmB,oBAAoB,EAAE,CAAC,aAAa;IACtC;EACF,CAAC,EACD,CAAC,aAAa,CAAC,CAChB,EACD,CACE,6DAA6D,EAC7D;IACEnB,IAAI,EAAE;MACJoB,iBAAiB,EAAE,CACjB;QAAE/B,EAAE,EAAE,aAAa;QAAEgC,IAAI,EAAE;MAAmB,CAAC;IAEnD;EACF,CAAC,EACD,CAAC,aAAa,CAAC,CAChB,EACD,CACE,4DAA4D,EAC5D;IAAEC,cAAc,EAAE;EAAgB,CAAC,EACnC,CAAC,eAAe,CAAC,CAClB,CACF,CAAC,CAAC,IAAI,EAAE,CAACC,YAAY,EAAExC,SAAS,EAAEoB,aAAa,KAAK;IACnDD,sBAAsB,CAACnB,SAAS,EAAEoB,aAAa,CAAC;EAClD,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
import { get } from 'lodash';
|
|
2
2
|
import { init } from '../../context/AppCreateReferralProvider';
|
|
3
|
+
const extractIds = value => Array.isArray(value) && value.length > 0 ? value : null;
|
|
4
|
+
const extractIdsFromRelations = value => {
|
|
5
|
+
if (!Array.isArray(value) || value.length === 0) return null;
|
|
6
|
+
const ids = value.map(condition => condition === null || condition === void 0 ? void 0 : condition.id).filter(Boolean);
|
|
7
|
+
return ids.length > 0 ? ids : null;
|
|
8
|
+
};
|
|
9
|
+
const getDraftClientNeeds = referral => {
|
|
10
|
+
const resolvedIds = extractIds(get(referral, 'person_condition_ids')) || extractIdsFromRelations(get(referral, 'person_conditions')) || extractIds(get(referral, 'case.person_condition_ids')) || extractIdsFromRelations(get(referral, 'case.person_conditions'));
|
|
11
|
+
if (resolvedIds) return resolvedIds;
|
|
12
|
+
const legacyNeedId = get(referral, 'client_need_id') || get(referral, 'case.client_need_id');
|
|
13
|
+
if (legacyNeedId) return [legacyNeedId];
|
|
14
|
+
return [];
|
|
15
|
+
};
|
|
3
16
|
export default function buildDraftState(_ref) {
|
|
4
17
|
let {
|
|
5
18
|
referral,
|
|
6
19
|
dispatchCreateReferral
|
|
7
20
|
} = _ref;
|
|
8
21
|
const person = get(referral, 'contact.id', '');
|
|
22
|
+
const draftClientNeeds = getDraftClientNeeds(referral);
|
|
9
23
|
const selectedPrograms = get(referral, 'referred_to_groups_draft').map(provider => ({
|
|
10
24
|
id: get(provider, 'program.id'),
|
|
11
25
|
name: get(provider, 'program.name'),
|
|
@@ -22,6 +36,7 @@ export default function buildDraftState(_ref) {
|
|
|
22
36
|
network: get(referral, 'referred_to_network', null),
|
|
23
37
|
description: get(referral, 'description', null),
|
|
24
38
|
attachments: get(referral, 'case.documents', null),
|
|
39
|
+
client_need: draftClientNeeds,
|
|
25
40
|
// Get the first referral:
|
|
26
41
|
// https://github.com/unite-us/front-end/blob/master/packages/app-client/src/components/Cases/components/Detail/DraftCaseOptions.jsx#L53
|
|
27
42
|
id: get(referral, 'referrals[0].id', null),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildDraftState.js","names":["get","init","
|
|
1
|
+
{"version":3,"file":"buildDraftState.js","names":["get","init","extractIds","value","Array","isArray","length","extractIdsFromRelations","ids","map","condition","id","filter","Boolean","getDraftClientNeeds","referral","resolvedIds","legacyNeedId","buildDraftState","_ref","dispatchCreateReferral","person","draftClientNeeds","selectedPrograms","provider","name","providerId","providerLicensed","providerName","receivingReferrals","service","services","status","draftState","network","description","attachments","client_need","state","case"],"sources":["../../../src/pages/builder/buildDraftState.js"],"sourcesContent":["import { get } from 'lodash';\nimport { init } from '../../context/AppCreateReferralProvider';\n\nconst extractIds = (value) => (\n Array.isArray(value) && value.length > 0 ? value : null\n);\n\nconst extractIdsFromRelations = (value) => {\n if (!Array.isArray(value) || value.length === 0) return null;\n\n const ids = value.map((condition) => condition?.id).filter(Boolean);\n return ids.length > 0 ? ids : null;\n};\n\nconst getDraftClientNeeds = (referral) => {\n const resolvedIds = extractIds(get(referral, 'person_condition_ids'))\n || extractIdsFromRelations(get(referral, 'person_conditions'))\n || extractIds(get(referral, 'case.person_condition_ids'))\n || extractIdsFromRelations(get(referral, 'case.person_conditions'));\n\n if (resolvedIds) return resolvedIds;\n\n const legacyNeedId = get(referral, 'client_need_id')\n || get(referral, 'case.client_need_id');\n if (legacyNeedId) return [legacyNeedId];\n\n return [];\n};\n\nexport default function buildDraftState({ referral, dispatchCreateReferral }) {\n const person = get(referral, 'contact.id', '');\n const draftClientNeeds = getDraftClientNeeds(referral);\n const selectedPrograms = get(referral, 'referred_to_groups_draft').map((provider) => ({\n id: get(provider, 'program.id'),\n name: get(provider, 'program.name'),\n providerId: get(provider, 'id'),\n providerLicensed: get(provider, 'licensed'),\n providerName: get(provider, 'name'),\n receivingReferrals: get(provider, 'program.receiving_referrals'),\n service: get(referral, 'service.id'), // We need to pass the service like this because of the payload for the search app\n services: [get(referral, 'service.id')],\n status: get(provider, 'program.status'),\n }));\n\n const draftState = {\n network: get(referral, 'referred_to_network', null),\n description: get(referral, 'description', null),\n attachments: get(referral, 'case.documents', null),\n client_need: draftClientNeeds,\n // Get the first referral: \n // https://github.com/unite-us/front-end/blob/master/packages/app-client/src/components/Cases/components/Detail/DraftCaseOptions.jsx#L53 \n id: get(referral, 'referrals[0].id', null),\n state: get(referral, 'referrals[0].state', null),\n case: {\n id: get(referral, 'referrals[0].case.id', null),\n }\n }\n\n return dispatchCreateReferral(init({\n selectedPrograms,\n person,\n draftState,\n }));\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -23,7 +23,7 @@ const mapProgramsPerService = programs => {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
const buildReferral = (programIds, service, currentProvider, draftState) => {
|
|
26
|
-
var _draftState$descripti, _draftState$attachmen, _draftState$network;
|
|
26
|
+
var _draftState$descripti, _draftState$attachmen, _draftState$client_ne, _draftState$network;
|
|
27
27
|
return {
|
|
28
28
|
programs: [].concat(programIds).map(id => ({
|
|
29
29
|
id
|
|
@@ -40,6 +40,7 @@ const buildReferral = (programIds, service, currentProvider, draftState) => {
|
|
|
40
40
|
service_end: null,
|
|
41
41
|
icd10_code: {}
|
|
42
42
|
},
|
|
43
|
+
client_need: (_draftState$client_ne = draftState === null || draftState === void 0 ? void 0 : draftState.client_need) !== null && _draftState$client_ne !== void 0 ? _draftState$client_ne : null,
|
|
43
44
|
network: (_draftState$network = draftState === null || draftState === void 0 ? void 0 : draftState.network) !== null && _draftState$network !== void 0 ? _draftState$network : null,
|
|
44
45
|
sendingProvider: currentProvider,
|
|
45
46
|
id: draftState === null || draftState === void 0 ? void 0 : draftState.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["compact","some","get","head","flatMap","intersectionBy","uniqBy","groupBy","isEmpty","OFF_PLATFORM_REFERRALS_ONLY","mapProgramsPerService","programs","result","reduce","out","program","services","forEach","serviceId","existingService","find","item","service","push","id","buildReferral","programIds","currentProvider","draftState","_draftState$descripti","_draftState$attachmen","_draftState$network","concat","map","description","primaryWorker","attachments","paymentAuthForm","amount_requested","service_start","service_end","icd10_code","network","sendingProvider","state","case","buildReferralsFromPrograms","programsByService","referrals","idx","referral","firstReferral","filterProgramsReceivingReferrals","ref","_objectSpread","filter","_program$status","receiving_referrals","status","toLowerCase","length","referralIsGrouped","programIsFunded","fee_schedule_program","referralIsFunded","every","programIsOffPlatform","_program$provider","_program$provider2","_program$status2","provider","licensed","programIsOnPlatform","_program$provider3","_program$status3","referralIsOON","getReferralStatus","grouped","funded","oon","join","getProgramStatusDisplay","isReceivingReferrals","isOON","title","icon","color","getReferralSubtitle","selected","initializeReferralErrors","showClientNeeds","errors","index","_programs$","networks","filterNetworks","authErrors","authorization_required","missingRequiredFields","trim","primary_worker","shouldShowNetworkSelect","opened_date","client_need","combinedErrors","arguments","undefined","isUnlistedProgram","generateErrorMessage","errorCount","Object","values","Boolean","prefix","sendingNetworks","receivingNetworks","hasOffPlatformReferrals","r","handleKeyPress","e","action","includes","key","addIdToUnlistedPrograms","obj","name","replace","addProgramToReferral","condition","p","programIndex","findIndex","isUnlistedReferral","_referral$programs","_p$id","startsWith","_program$id","separateSensitiveAndNonSensitiveAuthPrograms","fundedWithAuthorizationPrograms","sensitive","_p$provider","nonSensitive","_p$provider2","createSameFeeReferrals","nonSensitiveAuthPrograms","programsGroupedByFeeSchedule","sameFeePrograms","prevent_ungroup","createSensitiveProgramReferrals","sensitiveAuthPrograms","createNonAuthReferrals","fundedWithoutAuthorizationPrograms","ungroup","filterProgramsUnlisted","isEmptyErrors","removeErrorByIndex","keys","Number","acc","newIndex","selectHours","locations","providerHours","getClosestLocation","loc","is_closest","closestLocationHours","hours","organizationHours","updatedReferralsBySelectedServices","selectedServices","referralsBySelectedServices","updatedReferrals","programsBySelectedServices","programId","referralsWithPrograms"],"sources":["../../../src/pages/builder/utils.js"],"sourcesContent":["import {\n compact,\n some,\n get,\n head,\n flatMap,\n intersectionBy,\n uniqBy,\n groupBy,\n isEmpty,\n} from 'lodash';\nimport { OFF_PLATFORM_REFERRALS_ONLY } from './constants';\n\nconst mapProgramsPerService = (programs) => {\n const result = programs.reduce((out, program) => {\n if (program.services) {\n program.services.forEach((serviceId) => {\n const existingService = out.find(item => item.service === serviceId)\n if (!existingService) {\n out.push({\n service: serviceId,\n programs: [program.id]\n })\n } else {\n existingService.programs.push(program.id)\n }\n })\n }\n return out;\n }, [])\n\n return result;\n}\n\nconst buildReferral = (programIds, service, currentProvider, draftState) => {\n return {\n programs: [].concat(programIds).map(id => ({ id })),\n service: {\n id: service\n },\n description: draftState?.description ?? '',\n primaryWorker: null,\n attachments: draftState?.attachments ?? null,\n paymentAuthForm: {\n amount_requested: null,\n service_start: null,\n service_end: null,\n icd10_code: {},\n },\n network: draftState?.network ?? null,\n sendingProvider: currentProvider,\n id: draftState?.id,\n state: draftState?.state,\n case: draftState?.case,\n }\n}\n\nexport const buildReferralsFromPrograms = (programs, currentProvider, draftState) => {\n const programsByService = mapProgramsPerService(programs);\n let referrals = [];\n\n if (programsByService) {\n referrals = programsByService.map((item, idx) => {\n let referral = null;\n\n // Draft state for only the first referral\n const firstReferral = idx === 0 ? draftState : null;\n referral = buildReferral(item.programs, item.service, currentProvider, firstReferral);\n\n return referral;\n })\n }\n\n return referrals;\n}\n\nexport const filterProgramsReceivingReferrals = (referrals) => referrals.map((ref) => ({\n ...ref,\n programs: ref.programs.filter((program) =>\n program.receiving_referrals ||\n program?.status?.toLowerCase() === OFF_PLATFORM_REFERRALS_ONLY\n ),\n})).filter((ref) => ref.programs.length > 0);\n\nexport const referralIsGrouped = (referral) => referral.programs.length > 1;\n\nexport const programIsFunded = (program) => program.fee_schedule_program != null;\n\nexport const referralIsFunded = (referral) => {\n return referral.programs.every(programIsFunded);\n}\n\nexport const programIsOffPlatform = (program) => (\n !program?.provider?.licensed ||\n (program?.provider?.licensed && program?.status?.toLowerCase() === OFF_PLATFORM_REFERRALS_ONLY)\n);\n\nexport const programIsOnPlatform = (program) => (\n program?.provider?.licensed && program?.status?.toLowerCase() !== OFF_PLATFORM_REFERRALS_ONLY\n)\n\nexport const referralIsOON = (referral) => some(referral.programs.map((program) => programIsOffPlatform(program)));\n\nexport const getReferralStatus = (referral) => {\n const grouped = referralIsGrouped(referral) ? 'Grouped' : '';\n const funded = referralIsFunded(referral) ? 'Funded' : '';\n const oon = referralIsOON(referral) ? 'Off-Platform' : 'On-Platform';\n\n return compact([grouped, oon, funded]).join(', ');\n};\n\nexport const getProgramStatusDisplay = (isReceivingReferrals, isOON) => {\n if (isOON) { return { title: 'Receiving Off-Platform Referrals', icon: 'IconElectronsArrow', color: '' }; }\n if (isReceivingReferrals) { return { title: 'Accepting Referrals', icon: 'IconCheckCircle', color: '#1CCA21' }; }\n if (!isReceivingReferrals) { return { title: 'Not Accepting Referrals', icon: 'IconCrossCircle', color: '#E53E3E' }; }\n\n return { title: '', icon: '', color: '' }\n};\n\nexport const getReferralSubtitle = (referrals, selected) => {\n if (selected && referralIsOON(selected)) { return 'The case manager is responsible for following up with the client.'; }\n if (referrals && referrals.length > 1 && referralIsGrouped(selected)) { return 'The first recipient to accept the referral will become the case manager.'; }\n\n return 'The recipient can accept, reject, or forward this referral.';\n};\n\nexport const initializeReferralErrors = (referrals, showClientNeeds) => {\n const errors = {};\n referrals.map((referral, index) => {\n if (referral) {\n const { programs } = referral;\n const networks = filterNetworks(referral);\n\n let authErrors = {};\n if (programs[0]?.fee_schedule_program?.authorization_required) {\n authErrors = { \n amount_requested: !referral.paymentAuthForm.amount_requested,\n service_end: !referral.paymentAuthForm.service_end, \n icd10_code: !referral.paymentAuthForm.icd10_code,\n };\n };\n\n \n const missingRequiredFields = {\n description: !referral.description || referral.description.trim() === '',\n primary_worker: referralIsOON(referral) && !referral.primaryWorker,\n network: shouldShowNetworkSelect(networks, programs) && !referral.network,\n opened_date: referralIsOON(referral) && !referral?.opened_date,\n client_need: !referral.client_need && showClientNeeds,\n }\n \n const combinedErrors = {\n ...authErrors,\n ...missingRequiredFields,\n };\n \n errors[index] = combinedErrors;\n }\n return null;\n });\n\n return errors;\n};\n\nexport const shouldShowNetworkSelect = (networks = [], programs) => (networks.length > 1 && programs.length === 1) || isUnlistedProgram(programs[0]);\n\nexport const generateErrorMessage = (errors) => {\n const errorCount = Object.values(errors).flatMap(Object.values).filter(Boolean).length;\n const prefix = errorCount === 1 ? '1 action item needs' : `${errorCount} action items need`;\n return errorCount > 0 ? `${prefix} your attention before you can submit your referral(s).` : null;\n}\n\nexport const filterNetworks = (referral) => {\n const { sendingProvider, programs } = referral;\n const sendingNetworks = get(sendingProvider, 'networks');\n const receivingNetworks = flatMap(programs, (program) => get(program, 'provider.networks'))\n .filter(Boolean)\n .filter((network) => network.state === 'active');\n\n if (sendingNetworks.length === 1) { // 1 sending network and 1+ receiving networks, return sending network\n return uniqBy(receivingNetworks.filter((network) => network.id === head(sendingNetworks).id), 'id');\n } else if (receivingNetworks.length > 1) { // 2+ sending networks and 2+ receiving network, return common networks\n return intersectionBy(receivingNetworks, sendingNetworks, 'id');\n } else { // 2+ sending networks and 1 receiving network, return receiving network\n return receivingNetworks;\n }\n}\n\nexport const hasOffPlatformReferrals = (referrals) => some(referrals?.map((r) => referralIsOON(r)));\n\nexport const handleKeyPress = (e, action) => {\n if (['Enter', ' '].includes(e.key)) {\n action();\n }\n}\n\nexport const addIdToUnlistedPrograms = (programs) => {\n return programs.map((obj) => {\n if (!obj.id) {\n obj.id = `unlisted_${obj.name.replace(/\\s+/g, '').toLowerCase()}_${obj.services}`;\n obj.status = OFF_PLATFORM_REFERRALS_ONLY;\n }\n\n return obj;\n });\n};\n\nexport const addProgramToReferral = (referrals, programs, condition) => {\n referrals.forEach((referral) => {\n referral.programs = referral.programs.map((p) => {\n if (condition(p)) {\n const programIndex = programs.findIndex((program) => p.id === program.id);\n return programs[programIndex];\n }\n\n return p;\n })\n })\n};\n\nexport const isUnlistedReferral = (referral) => (\n referral?.programs?.every((p) => p.id?.startsWith('unlisted'))\n);\n\nexport const isUnlistedProgram = (program) => (\n program?.id?.startsWith('unlisted')\n);\n\nexport const separateSensitiveAndNonSensitiveAuthPrograms = (fundedWithAuthorizationPrograms) => ({\n sensitive: fundedWithAuthorizationPrograms.filter(p => p?.provider?.sensitive),\n nonSensitive: fundedWithAuthorizationPrograms.filter(p => !p?.provider?.sensitive),\n});\n\nexport const createSameFeeReferrals = (referral, nonSensitiveAuthPrograms) => {\n const programsGroupedByFeeSchedule = groupBy(nonSensitiveAuthPrograms, 'fee_schedule_program.id');\n const sameFeePrograms = Object.values(programsGroupedByFeeSchedule);\n\n return sameFeePrograms.map(program => ({\n ...referral,\n programs: program,\n ...(program.length >= 2 ? { prevent_ungroup: true } : {})\n }));\n};\n\nexport const createSensitiveProgramReferrals = (referral, sensitiveAuthPrograms) => (\n sensitiveAuthPrograms.map(program => ({\n ...referral,\n programs: [program]\n }))\n);\n\nexport const createNonAuthReferrals = (referral, fundedWithoutAuthorizationPrograms) => (\n !isEmpty(fundedWithoutAuthorizationPrograms) ? [{ ...referral, programs: fundedWithoutAuthorizationPrograms, ungroup: true }] : []\n);\n\nexport const filterProgramsUnlisted = (referrals) => referrals.map((ref) => ({\n ...ref,\n programs: ref.programs.filter((program) => !isUnlistedProgram(program)),\n})).filter((ref) => ref.programs.length > 0);\n\nexport const isEmptyErrors = (errors) => (\n !Object.values(errors).flatMap(Object.values).some(Boolean)\n)\n\nexport const removeErrorByIndex = (errors, index) => {\n return Object.keys(errors)\n .filter(key => Number(key) !== index)\n .reduce((acc, key, newIndex) => {\n acc[newIndex] = errors[key];\n return acc;\n }, {});\n};\n\nexport default function selectHours(locations, providerHours) {\n const getClosestLocation = locations.find((loc) => loc.is_closest);\n const closestLocationHours = getClosestLocation?.hours;\n const organizationHours = providerHours ?? {};\n return closestLocationHours ?? organizationHours;\n}\n\nexport const updatedReferralsBySelectedServices = (referrals, selectedServices) => {\n const referralsBySelectedServices = referrals.filter((referral) => {\n return selectedServices.some((service) => service.serviceId === referral.service.id);\n });\n\n const updatedReferrals = referralsBySelectedServices.map((referral) => {\n const programsBySelectedServices = referral.programs.filter((program) => {\n return selectedServices.some((service) => service.programId === program.id && service.serviceId === referral.service.id);\n });\n\n return {\n ...referral,\n programs: programsBySelectedServices,\n }\n });\n\n const referralsWithPrograms = updatedReferrals.filter((referral) => referral.programs.length > 0);\n\n return referralsWithPrograms;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"utils.js","names":["compact","some","get","head","flatMap","intersectionBy","uniqBy","groupBy","isEmpty","OFF_PLATFORM_REFERRALS_ONLY","mapProgramsPerService","programs","result","reduce","out","program","services","forEach","serviceId","existingService","find","item","service","push","id","buildReferral","programIds","currentProvider","draftState","_draftState$descripti","_draftState$attachmen","_draftState$client_ne","_draftState$network","concat","map","description","primaryWorker","attachments","paymentAuthForm","amount_requested","service_start","service_end","icd10_code","client_need","network","sendingProvider","state","case","buildReferralsFromPrograms","programsByService","referrals","idx","referral","firstReferral","filterProgramsReceivingReferrals","ref","_objectSpread","filter","_program$status","receiving_referrals","status","toLowerCase","length","referralIsGrouped","programIsFunded","fee_schedule_program","referralIsFunded","every","programIsOffPlatform","_program$provider","_program$provider2","_program$status2","provider","licensed","programIsOnPlatform","_program$provider3","_program$status3","referralIsOON","getReferralStatus","grouped","funded","oon","join","getProgramStatusDisplay","isReceivingReferrals","isOON","title","icon","color","getReferralSubtitle","selected","initializeReferralErrors","showClientNeeds","errors","index","_programs$","networks","filterNetworks","authErrors","authorization_required","missingRequiredFields","trim","primary_worker","shouldShowNetworkSelect","opened_date","combinedErrors","arguments","undefined","isUnlistedProgram","generateErrorMessage","errorCount","Object","values","Boolean","prefix","sendingNetworks","receivingNetworks","hasOffPlatformReferrals","r","handleKeyPress","e","action","includes","key","addIdToUnlistedPrograms","obj","name","replace","addProgramToReferral","condition","p","programIndex","findIndex","isUnlistedReferral","_referral$programs","_p$id","startsWith","_program$id","separateSensitiveAndNonSensitiveAuthPrograms","fundedWithAuthorizationPrograms","sensitive","_p$provider","nonSensitive","_p$provider2","createSameFeeReferrals","nonSensitiveAuthPrograms","programsGroupedByFeeSchedule","sameFeePrograms","prevent_ungroup","createSensitiveProgramReferrals","sensitiveAuthPrograms","createNonAuthReferrals","fundedWithoutAuthorizationPrograms","ungroup","filterProgramsUnlisted","isEmptyErrors","removeErrorByIndex","keys","Number","acc","newIndex","selectHours","locations","providerHours","getClosestLocation","loc","is_closest","closestLocationHours","hours","organizationHours","updatedReferralsBySelectedServices","selectedServices","referralsBySelectedServices","updatedReferrals","programsBySelectedServices","programId","referralsWithPrograms"],"sources":["../../../src/pages/builder/utils.js"],"sourcesContent":["import {\n compact,\n some,\n get,\n head,\n flatMap,\n intersectionBy,\n uniqBy,\n groupBy,\n isEmpty,\n} from 'lodash';\nimport { OFF_PLATFORM_REFERRALS_ONLY } from './constants';\n\nconst mapProgramsPerService = (programs) => {\n const result = programs.reduce((out, program) => {\n if (program.services) {\n program.services.forEach((serviceId) => {\n const existingService = out.find(item => item.service === serviceId)\n if (!existingService) {\n out.push({\n service: serviceId,\n programs: [program.id]\n })\n } else {\n existingService.programs.push(program.id)\n }\n })\n }\n return out;\n }, [])\n\n return result;\n}\n\nconst buildReferral = (programIds, service, currentProvider, draftState) => {\n return {\n programs: [].concat(programIds).map(id => ({ id })),\n service: {\n id: service\n },\n description: draftState?.description ?? '',\n primaryWorker: null,\n attachments: draftState?.attachments ?? null,\n paymentAuthForm: {\n amount_requested: null,\n service_start: null,\n service_end: null,\n icd10_code: {},\n },\n client_need: draftState?.client_need ?? null,\n network: draftState?.network ?? null,\n sendingProvider: currentProvider,\n id: draftState?.id,\n state: draftState?.state,\n case: draftState?.case,\n }\n}\n\nexport const buildReferralsFromPrograms = (programs, currentProvider, draftState) => {\n const programsByService = mapProgramsPerService(programs);\n let referrals = [];\n\n if (programsByService) {\n referrals = programsByService.map((item, idx) => {\n let referral = null;\n\n // Draft state for only the first referral\n const firstReferral = idx === 0 ? draftState : null;\n referral = buildReferral(item.programs, item.service, currentProvider, firstReferral);\n\n return referral;\n })\n }\n\n return referrals;\n}\n\nexport const filterProgramsReceivingReferrals = (referrals) => referrals.map((ref) => ({\n ...ref,\n programs: ref.programs.filter((program) =>\n program.receiving_referrals ||\n program?.status?.toLowerCase() === OFF_PLATFORM_REFERRALS_ONLY\n ),\n})).filter((ref) => ref.programs.length > 0);\n\nexport const referralIsGrouped = (referral) => referral.programs.length > 1;\n\nexport const programIsFunded = (program) => program.fee_schedule_program != null;\n\nexport const referralIsFunded = (referral) => {\n return referral.programs.every(programIsFunded);\n}\n\nexport const programIsOffPlatform = (program) => (\n !program?.provider?.licensed ||\n (program?.provider?.licensed && program?.status?.toLowerCase() === OFF_PLATFORM_REFERRALS_ONLY)\n);\n\nexport const programIsOnPlatform = (program) => (\n program?.provider?.licensed && program?.status?.toLowerCase() !== OFF_PLATFORM_REFERRALS_ONLY\n)\n\nexport const referralIsOON = (referral) => some(referral.programs.map((program) => programIsOffPlatform(program)));\n\nexport const getReferralStatus = (referral) => {\n const grouped = referralIsGrouped(referral) ? 'Grouped' : '';\n const funded = referralIsFunded(referral) ? 'Funded' : '';\n const oon = referralIsOON(referral) ? 'Off-Platform' : 'On-Platform';\n\n return compact([grouped, oon, funded]).join(', ');\n};\n\nexport const getProgramStatusDisplay = (isReceivingReferrals, isOON) => {\n if (isOON) { return { title: 'Receiving Off-Platform Referrals', icon: 'IconElectronsArrow', color: '' }; }\n if (isReceivingReferrals) { return { title: 'Accepting Referrals', icon: 'IconCheckCircle', color: '#1CCA21' }; }\n if (!isReceivingReferrals) { return { title: 'Not Accepting Referrals', icon: 'IconCrossCircle', color: '#E53E3E' }; }\n\n return { title: '', icon: '', color: '' }\n};\n\nexport const getReferralSubtitle = (referrals, selected) => {\n if (selected && referralIsOON(selected)) { return 'The case manager is responsible for following up with the client.'; }\n if (referrals && referrals.length > 1 && referralIsGrouped(selected)) { return 'The first recipient to accept the referral will become the case manager.'; }\n\n return 'The recipient can accept, reject, or forward this referral.';\n};\n\nexport const initializeReferralErrors = (referrals, showClientNeeds) => {\n const errors = {};\n referrals.map((referral, index) => {\n if (referral) {\n const { programs } = referral;\n const networks = filterNetworks(referral);\n\n let authErrors = {};\n if (programs[0]?.fee_schedule_program?.authorization_required) {\n authErrors = { \n amount_requested: !referral.paymentAuthForm.amount_requested,\n service_end: !referral.paymentAuthForm.service_end, \n icd10_code: !referral.paymentAuthForm.icd10_code,\n };\n };\n\n \n const missingRequiredFields = {\n description: !referral.description || referral.description.trim() === '',\n primary_worker: referralIsOON(referral) && !referral.primaryWorker,\n network: shouldShowNetworkSelect(networks, programs) && !referral.network,\n opened_date: referralIsOON(referral) && !referral?.opened_date,\n client_need: !referral.client_need && showClientNeeds,\n }\n \n const combinedErrors = {\n ...authErrors,\n ...missingRequiredFields,\n };\n \n errors[index] = combinedErrors;\n }\n return null;\n });\n\n return errors;\n};\n\nexport const shouldShowNetworkSelect = (networks = [], programs) => (networks.length > 1 && programs.length === 1) || isUnlistedProgram(programs[0]);\n\nexport const generateErrorMessage = (errors) => {\n const errorCount = Object.values(errors).flatMap(Object.values).filter(Boolean).length;\n const prefix = errorCount === 1 ? '1 action item needs' : `${errorCount} action items need`;\n return errorCount > 0 ? `${prefix} your attention before you can submit your referral(s).` : null;\n}\n\nexport const filterNetworks = (referral) => {\n const { sendingProvider, programs } = referral;\n const sendingNetworks = get(sendingProvider, 'networks');\n const receivingNetworks = flatMap(programs, (program) => get(program, 'provider.networks'))\n .filter(Boolean)\n .filter((network) => network.state === 'active');\n\n if (sendingNetworks.length === 1) { // 1 sending network and 1+ receiving networks, return sending network\n return uniqBy(receivingNetworks.filter((network) => network.id === head(sendingNetworks).id), 'id');\n } else if (receivingNetworks.length > 1) { // 2+ sending networks and 2+ receiving network, return common networks\n return intersectionBy(receivingNetworks, sendingNetworks, 'id');\n } else { // 2+ sending networks and 1 receiving network, return receiving network\n return receivingNetworks;\n }\n}\n\nexport const hasOffPlatformReferrals = (referrals) => some(referrals?.map((r) => referralIsOON(r)));\n\nexport const handleKeyPress = (e, action) => {\n if (['Enter', ' '].includes(e.key)) {\n action();\n }\n}\n\nexport const addIdToUnlistedPrograms = (programs) => {\n return programs.map((obj) => {\n if (!obj.id) {\n obj.id = `unlisted_${obj.name.replace(/\\s+/g, '').toLowerCase()}_${obj.services}`;\n obj.status = OFF_PLATFORM_REFERRALS_ONLY;\n }\n\n return obj;\n });\n};\n\nexport const addProgramToReferral = (referrals, programs, condition) => {\n referrals.forEach((referral) => {\n referral.programs = referral.programs.map((p) => {\n if (condition(p)) {\n const programIndex = programs.findIndex((program) => p.id === program.id);\n return programs[programIndex];\n }\n\n return p;\n })\n })\n};\n\nexport const isUnlistedReferral = (referral) => (\n referral?.programs?.every((p) => p.id?.startsWith('unlisted'))\n);\n\nexport const isUnlistedProgram = (program) => (\n program?.id?.startsWith('unlisted')\n);\n\nexport const separateSensitiveAndNonSensitiveAuthPrograms = (fundedWithAuthorizationPrograms) => ({\n sensitive: fundedWithAuthorizationPrograms.filter(p => p?.provider?.sensitive),\n nonSensitive: fundedWithAuthorizationPrograms.filter(p => !p?.provider?.sensitive),\n});\n\nexport const createSameFeeReferrals = (referral, nonSensitiveAuthPrograms) => {\n const programsGroupedByFeeSchedule = groupBy(nonSensitiveAuthPrograms, 'fee_schedule_program.id');\n const sameFeePrograms = Object.values(programsGroupedByFeeSchedule);\n\n return sameFeePrograms.map(program => ({\n ...referral,\n programs: program,\n ...(program.length >= 2 ? { prevent_ungroup: true } : {})\n }));\n};\n\nexport const createSensitiveProgramReferrals = (referral, sensitiveAuthPrograms) => (\n sensitiveAuthPrograms.map(program => ({\n ...referral,\n programs: [program]\n }))\n);\n\nexport const createNonAuthReferrals = (referral, fundedWithoutAuthorizationPrograms) => (\n !isEmpty(fundedWithoutAuthorizationPrograms) ? [{ ...referral, programs: fundedWithoutAuthorizationPrograms, ungroup: true }] : []\n);\n\nexport const filterProgramsUnlisted = (referrals) => referrals.map((ref) => ({\n ...ref,\n programs: ref.programs.filter((program) => !isUnlistedProgram(program)),\n})).filter((ref) => ref.programs.length > 0);\n\nexport const isEmptyErrors = (errors) => (\n !Object.values(errors).flatMap(Object.values).some(Boolean)\n)\n\nexport const removeErrorByIndex = (errors, index) => {\n return Object.keys(errors)\n .filter(key => Number(key) !== index)\n .reduce((acc, key, newIndex) => {\n acc[newIndex] = errors[key];\n return acc;\n }, {});\n};\n\nexport default function selectHours(locations, providerHours) {\n const getClosestLocation = locations.find((loc) => loc.is_closest);\n const closestLocationHours = getClosestLocation?.hours;\n const organizationHours = providerHours ?? {};\n return closestLocationHours ?? organizationHours;\n}\n\nexport const updatedReferralsBySelectedServices = (referrals, selectedServices) => {\n const referralsBySelectedServices = referrals.filter((referral) => {\n return selectedServices.some((service) => service.serviceId === referral.service.id);\n });\n\n const updatedReferrals = referralsBySelectedServices.map((referral) => {\n const programsBySelectedServices = referral.programs.filter((program) => {\n return selectedServices.some((service) => service.programId === program.id && service.serviceId === referral.service.id);\n });\n\n return {\n ...referral,\n programs: programsBySelectedServices,\n }\n });\n\n const referralsWithPrograms = updatedReferrals.filter((referral) => referral.programs.length > 0);\n\n return referralsWithPrograms;\n};\n"],"mappings":";;;AAAA,SACEA,OAAO,EACPC,IAAI,EACJC,GAAG,EACHC,IAAI,EACJC,OAAO,EACPC,cAAc,EACdC,MAAM,EACNC,OAAO,EACPC,OAAO,QACF,QAAQ;AACf,SAASC,2BAA2B,QAAQ,aAAa;AAEzD,MAAMC,qBAAqB,GAAIC,QAAQ,IAAK;EAC1C,MAAMC,MAAM,GAAGD,QAAQ,CAACE,MAAM,CAAC,CAACC,GAAG,EAAEC,OAAO,KAAK;IAC/C,IAAIA,OAAO,CAACC,QAAQ,EAAE;MACpBD,OAAO,CAACC,QAAQ,CAACC,OAAO,CAAEC,SAAS,IAAK;QACtC,MAAMC,eAAe,GAAGL,GAAG,CAACM,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,OAAO,KAAKJ,SAAS,CAAC;QACpE,IAAI,CAACC,eAAe,EAAE;UACpBL,GAAG,CAACS,IAAI,CAAC;YACPD,OAAO,EAAEJ,SAAS;YAClBP,QAAQ,EAAE,CAACI,OAAO,CAACS,EAAE;UACvB,CAAC,CAAC;QACJ,CAAC,MAAM;UACLL,eAAe,CAACR,QAAQ,CAACY,IAAI,CAACR,OAAO,CAACS,EAAE,CAAC;QAC3C;MACF,CAAC,CAAC;IACJ;IACA,OAAOV,GAAG;EACZ,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOF,MAAM;AACf,CAAC;AAED,MAAMa,aAAa,GAAGA,CAACC,UAAU,EAAEJ,OAAO,EAAEK,eAAe,EAAEC,UAAU,KAAK;EAAA,IAAAC,qBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,mBAAA;EAC1E,OAAO;IACLrB,QAAQ,EAAE,EAAE,CAACsB,MAAM,CAACP,UAAU,CAAC,CAACQ,GAAG,CAACV,EAAE,KAAK;MAAEA;IAAG,CAAC,CAAC,CAAC;IACnDF,OAAO,EAAE;MACPE,EAAE,EAAEF;IACN,CAAC;IACDa,WAAW,GAAAN,qBAAA,GAAED,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEO,WAAW,cAAAN,qBAAA,cAAAA,qBAAA,GAAI,EAAE;IAC1CO,aAAa,EAAE,IAAI;IACnBC,WAAW,GAAAP,qBAAA,GAAEF,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAES,WAAW,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,IAAI;IAC5CQ,eAAe,EAAE;MACfC,gBAAgB,EAAE,IAAI;MACtBC,aAAa,EAAE,IAAI;MACnBC,WAAW,EAAE,IAAI;MACjBC,UAAU,EAAE,CAAC;IACf,CAAC;IACDC,WAAW,GAAAZ,qBAAA,GAAEH,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEe,WAAW,cAAAZ,qBAAA,cAAAA,qBAAA,GAAI,IAAI;IAC5Ca,OAAO,GAAAZ,mBAAA,GAAEJ,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEgB,OAAO,cAAAZ,mBAAA,cAAAA,mBAAA,GAAI,IAAI;IACpCa,eAAe,EAAElB,eAAe;IAChCH,EAAE,EAAEI,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEJ,EAAE;IAClBsB,KAAK,EAAElB,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEkB,KAAK;IACxBC,IAAI,EAAEnB,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEmB;EACpB,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,0BAA0B,GAAGA,CAACrC,QAAQ,EAAEgB,eAAe,EAAEC,UAAU,KAAK;EACnF,MAAMqB,iBAAiB,GAAGvC,qBAAqB,CAACC,QAAQ,CAAC;EACzD,IAAIuC,SAAS,GAAG,EAAE;EAElB,IAAID,iBAAiB,EAAE;IACrBC,SAAS,GAAGD,iBAAiB,CAACf,GAAG,CAAC,CAACb,IAAI,EAAE8B,GAAG,KAAK;MAC/C,IAAIC,QAAQ,GAAG,IAAI;;MAEnB;MACA,MAAMC,aAAa,GAAGF,GAAG,KAAK,CAAC,GAAGvB,UAAU,GAAG,IAAI;MACnDwB,QAAQ,GAAG3B,aAAa,CAACJ,IAAI,CAACV,QAAQ,EAAEU,IAAI,CAACC,OAAO,EAAEK,eAAe,EAAE0B,aAAa,CAAC;MAErF,OAAOD,QAAQ;IACjB,CAAC,CAAC;EACJ;EAEA,OAAOF,SAAS;AAClB,CAAC;AAED,OAAO,MAAMI,gCAAgC,GAAIJ,SAAS,IAAKA,SAAS,CAAChB,GAAG,CAAEqB,GAAG,IAAAC,aAAA,CAAAA,aAAA,KAC5ED,GAAG;EACN5C,QAAQ,EAAE4C,GAAG,CAAC5C,QAAQ,CAAC8C,MAAM,CAAE1C,OAAO;IAAA,IAAA2C,eAAA;IAAA,OACpC3C,OAAO,CAAC4C,mBAAmB,IAC3B,CAAA5C,OAAO,aAAPA,OAAO,gBAAA2C,eAAA,GAAP3C,OAAO,CAAE6C,MAAM,cAAAF,eAAA,uBAAfA,eAAA,CAAiBG,WAAW,CAAC,CAAC,MAAKpD,2BAA2B;EAAA,CAChE;AAAC,EACD,CAAC,CAACgD,MAAM,CAAEF,GAAG,IAAKA,GAAG,CAAC5C,QAAQ,CAACmD,MAAM,GAAG,CAAC,CAAC;AAE5C,OAAO,MAAMC,iBAAiB,GAAIX,QAAQ,IAAKA,QAAQ,CAACzC,QAAQ,CAACmD,MAAM,GAAG,CAAC;AAE3E,OAAO,MAAME,eAAe,GAAIjD,OAAO,IAAKA,OAAO,CAACkD,oBAAoB,IAAI,IAAI;AAEhF,OAAO,MAAMC,gBAAgB,GAAId,QAAQ,IAAK;EAC5C,OAAOA,QAAQ,CAACzC,QAAQ,CAACwD,KAAK,CAACH,eAAe,CAAC;AACjD,CAAC;AAED,OAAO,MAAMI,oBAAoB,GAAIrD,OAAO;EAAA,IAAAsD,iBAAA,EAAAC,kBAAA,EAAAC,gBAAA;EAAA,OAC1C,EAACxD,OAAO,aAAPA,OAAO,gBAAAsD,iBAAA,GAAPtD,OAAO,CAAEyD,QAAQ,cAAAH,iBAAA,eAAjBA,iBAAA,CAAmBI,QAAQ,KAC3B,CAAA1D,OAAO,aAAPA,OAAO,gBAAAuD,kBAAA,GAAPvD,OAAO,CAAEyD,QAAQ,cAAAF,kBAAA,uBAAjBA,kBAAA,CAAmBG,QAAQ,KAAI,CAAA1D,OAAO,aAAPA,OAAO,gBAAAwD,gBAAA,GAAPxD,OAAO,CAAE6C,MAAM,cAAAW,gBAAA,uBAAfA,gBAAA,CAAiBV,WAAW,CAAC,CAAC,MAAKpD,2BAA4B;AAAA,CAChG;AAED,OAAO,MAAMiE,mBAAmB,GAAI3D,OAAO;EAAA,IAAA4D,kBAAA,EAAAC,gBAAA;EAAA,OACzC,CAAA7D,OAAO,aAAPA,OAAO,gBAAA4D,kBAAA,GAAP5D,OAAO,CAAEyD,QAAQ,cAAAG,kBAAA,uBAAjBA,kBAAA,CAAmBF,QAAQ,KAAI,CAAA1D,OAAO,aAAPA,OAAO,gBAAA6D,gBAAA,GAAP7D,OAAO,CAAE6C,MAAM,cAAAgB,gBAAA,uBAAfA,gBAAA,CAAiBf,WAAW,CAAC,CAAC,MAAKpD,2BAA2B;AAAA,CAC9F;AAED,OAAO,MAAMoE,aAAa,GAAIzB,QAAQ,IAAKnD,IAAI,CAACmD,QAAQ,CAACzC,QAAQ,CAACuB,GAAG,CAAEnB,OAAO,IAAKqD,oBAAoB,CAACrD,OAAO,CAAC,CAAC,CAAC;AAElH,OAAO,MAAM+D,iBAAiB,GAAI1B,QAAQ,IAAK;EAC7C,MAAM2B,OAAO,GAAGhB,iBAAiB,CAACX,QAAQ,CAAC,GAAG,SAAS,GAAG,EAAE;EAC5D,MAAM4B,MAAM,GAAGd,gBAAgB,CAACd,QAAQ,CAAC,GAAG,QAAQ,GAAG,EAAE;EACzD,MAAM6B,GAAG,GAAGJ,aAAa,CAACzB,QAAQ,CAAC,GAAG,cAAc,GAAG,aAAa;EAEpE,OAAOpD,OAAO,CAAC,CAAC+E,OAAO,EAAEE,GAAG,EAAED,MAAM,CAAC,CAAC,CAACE,IAAI,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,OAAO,MAAMC,uBAAuB,GAAGA,CAACC,oBAAoB,EAAEC,KAAK,KAAK;EACtE,IAAIA,KAAK,EAAE;IAAE,OAAO;MAAEC,KAAK,EAAE,kCAAkC;MAAEC,IAAI,EAAE,oBAAoB;MAAEC,KAAK,EAAE;IAAG,CAAC;EAAE;EAC1G,IAAIJ,oBAAoB,EAAE;IAAE,OAAO;MAAEE,KAAK,EAAE,qBAAqB;MAAEC,IAAI,EAAE,iBAAiB;MAAEC,KAAK,EAAE;IAAU,CAAC;EAAE;EAChH,IAAI,CAACJ,oBAAoB,EAAE;IAAE,OAAO;MAAEE,KAAK,EAAE,yBAAyB;MAAEC,IAAI,EAAE,iBAAiB;MAAEC,KAAK,EAAE;IAAU,CAAC;EAAE;EAErH,OAAO;IAAEF,KAAK,EAAE,EAAE;IAAEC,IAAI,EAAE,EAAE;IAAEC,KAAK,EAAE;EAAG,CAAC;AAC3C,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAGA,CAACvC,SAAS,EAAEwC,QAAQ,KAAK;EAC1D,IAAIA,QAAQ,IAAIb,aAAa,CAACa,QAAQ,CAAC,EAAE;IAAE,OAAO,mEAAmE;EAAE;EACvH,IAAIxC,SAAS,IAAIA,SAAS,CAACY,MAAM,GAAG,CAAC,IAAIC,iBAAiB,CAAC2B,QAAQ,CAAC,EAAE;IAAE,OAAO,0EAA0E;EAAE;EAE3J,OAAO,6DAA6D;AACtE,CAAC;AAED,OAAO,MAAMC,wBAAwB,GAAGA,CAACzC,SAAS,EAAE0C,eAAe,KAAK;EACtE,MAAMC,MAAM,GAAG,CAAC,CAAC;EACjB3C,SAAS,CAAChB,GAAG,CAAC,CAACkB,QAAQ,EAAE0C,KAAK,KAAK;IACjC,IAAI1C,QAAQ,EAAE;MAAA,IAAA2C,UAAA;MACZ,MAAM;QAAEpF;MAAS,CAAC,GAAGyC,QAAQ;MAC7B,MAAM4C,QAAQ,GAAGC,cAAc,CAAC7C,QAAQ,CAAC;MAEzC,IAAI8C,UAAU,GAAG,CAAC,CAAC;MACnB,KAAAH,UAAA,GAAIpF,QAAQ,CAAC,CAAC,CAAC,cAAAoF,UAAA,gBAAAA,UAAA,GAAXA,UAAA,CAAa9B,oBAAoB,cAAA8B,UAAA,eAAjCA,UAAA,CAAmCI,sBAAsB,EAAE;QAC7DD,UAAU,GAAG;UACX3D,gBAAgB,EAAE,CAACa,QAAQ,CAACd,eAAe,CAACC,gBAAgB;UAC5DE,WAAW,EAAE,CAACW,QAAQ,CAACd,eAAe,CAACG,WAAW;UAClDC,UAAU,EAAE,CAACU,QAAQ,CAACd,eAAe,CAACI;QACxC,CAAC;MACH;MAAC;MAGD,MAAM0D,qBAAqB,GAAG;QAC5BjE,WAAW,EAAE,CAACiB,QAAQ,CAACjB,WAAW,IAAIiB,QAAQ,CAACjB,WAAW,CAACkE,IAAI,CAAC,CAAC,KAAK,EAAE;QACxEC,cAAc,EAAEzB,aAAa,CAACzB,QAAQ,CAAC,IAAI,CAACA,QAAQ,CAAChB,aAAa;QAClEQ,OAAO,EAAE2D,uBAAuB,CAACP,QAAQ,EAAErF,QAAQ,CAAC,IAAI,CAACyC,QAAQ,CAACR,OAAO;QACzE4D,WAAW,EAAE3B,aAAa,CAACzB,QAAQ,CAAC,IAAI,EAACA,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEoD,WAAW;QAC9D7D,WAAW,EAAE,CAACS,QAAQ,CAACT,WAAW,IAAIiD;MACxC,CAAC;MAED,MAAMa,cAAc,GAAAjD,aAAA,CAAAA,aAAA,KACf0C,UAAU,GACVE,qBAAqB,CACzB;MAEDP,MAAM,CAACC,KAAK,CAAC,GAAGW,cAAc;IAChC;IACA,OAAO,IAAI;EACb,CAAC,CAAC;EAEF,OAAOZ,MAAM;AACf,CAAC;AAED,OAAO,MAAMU,uBAAuB,GAAG,SAAAA,CAAA;EAAA,IAACP,QAAQ,GAAAU,SAAA,CAAA5C,MAAA,QAAA4C,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,EAAE;EAAA,IAAE/F,QAAQ,GAAA+F,SAAA,CAAA5C,MAAA,OAAA4C,SAAA,MAAAC,SAAA;EAAA,OAAMX,QAAQ,CAAClC,MAAM,GAAG,CAAC,IAAInD,QAAQ,CAACmD,MAAM,KAAK,CAAC,IAAK8C,iBAAiB,CAACjG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAAA;AAEpJ,OAAO,MAAMkG,oBAAoB,GAAIhB,MAAM,IAAK;EAC9C,MAAMiB,UAAU,GAAGC,MAAM,CAACC,MAAM,CAACnB,MAAM,CAAC,CAACzF,OAAO,CAAC2G,MAAM,CAACC,MAAM,CAAC,CAACvD,MAAM,CAACwD,OAAO,CAAC,CAACnD,MAAM;EACtF,MAAMoD,MAAM,GAAGJ,UAAU,KAAK,CAAC,GAAG,qBAAqB,MAAA7E,MAAA,CAAM6E,UAAU,uBAAoB;EAC3F,OAAOA,UAAU,GAAG,CAAC,MAAA7E,MAAA,CAAMiF,MAAM,+DAA4D,IAAI;AACnG,CAAC;AAED,OAAO,MAAMjB,cAAc,GAAI7C,QAAQ,IAAK;EAC1C,MAAM;IAAEP,eAAe;IAAElC;EAAS,CAAC,GAAGyC,QAAQ;EAC9C,MAAM+D,eAAe,GAAGjH,GAAG,CAAC2C,eAAe,EAAE,UAAU,CAAC;EACxD,MAAMuE,iBAAiB,GAAGhH,OAAO,CAACO,QAAQ,EAAGI,OAAO,IAAKb,GAAG,CAACa,OAAO,EAAE,mBAAmB,CAAC,CAAC,CACxF0C,MAAM,CAACwD,OAAO,CAAC,CACfxD,MAAM,CAAEb,OAAO,IAAKA,OAAO,CAACE,KAAK,KAAK,QAAQ,CAAC;EAElD,IAAIqE,eAAe,CAACrD,MAAM,KAAK,CAAC,EAAE;IAAE;IAClC,OAAOxD,MAAM,CAAC8G,iBAAiB,CAAC3D,MAAM,CAAEb,OAAO,IAAKA,OAAO,CAACpB,EAAE,KAAKrB,IAAI,CAACgH,eAAe,CAAC,CAAC3F,EAAE,CAAC,EAAE,IAAI,CAAC;EACrG,CAAC,MAAM,IAAI4F,iBAAiB,CAACtD,MAAM,GAAG,CAAC,EAAE;IAAE;IACzC,OAAOzD,cAAc,CAAC+G,iBAAiB,EAAED,eAAe,EAAE,IAAI,CAAC;EACjE,CAAC,MAAM;IAAE;IACP,OAAOC,iBAAiB;EAC1B;AACF,CAAC;AAED,OAAO,MAAMC,uBAAuB,GAAInE,SAAS,IAAKjD,IAAI,CAACiD,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEhB,GAAG,CAAEoF,CAAC,IAAKzC,aAAa,CAACyC,CAAC,CAAC,CAAC,CAAC;AAEnG,OAAO,MAAMC,cAAc,GAAGA,CAACC,CAAC,EAAEC,MAAM,KAAK;EAC3C,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAACC,QAAQ,CAACF,CAAC,CAACG,GAAG,CAAC,EAAE;IAClCF,MAAM,CAAC,CAAC;EACV;AACF,CAAC;AAED,OAAO,MAAMG,uBAAuB,GAAIjH,QAAQ,IAAK;EACnD,OAAOA,QAAQ,CAACuB,GAAG,CAAE2F,GAAG,IAAK;IAC3B,IAAI,CAACA,GAAG,CAACrG,EAAE,EAAE;MACXqG,GAAG,CAACrG,EAAE,eAAAS,MAAA,CAAe4F,GAAG,CAACC,IAAI,CAACC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAClE,WAAW,CAAC,CAAC,OAAA5B,MAAA,CAAI4F,GAAG,CAAC7G,QAAQ,CAAE;MACjF6G,GAAG,CAACjE,MAAM,GAAGnD,2BAA2B;IAC1C;IAEA,OAAOoH,GAAG;EACZ,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAMG,oBAAoB,GAAGA,CAAC9E,SAAS,EAAEvC,QAAQ,EAAEsH,SAAS,KAAK;EACtE/E,SAAS,CAACjC,OAAO,CAAEmC,QAAQ,IAAK;IAC9BA,QAAQ,CAACzC,QAAQ,GAAGyC,QAAQ,CAACzC,QAAQ,CAACuB,GAAG,CAAEgG,CAAC,IAAK;MAC/C,IAAID,SAAS,CAACC,CAAC,CAAC,EAAE;QAChB,MAAMC,YAAY,GAAGxH,QAAQ,CAACyH,SAAS,CAAErH,OAAO,IAAKmH,CAAC,CAAC1G,EAAE,KAAKT,OAAO,CAACS,EAAE,CAAC;QACzE,OAAOb,QAAQ,CAACwH,YAAY,CAAC;MAC/B;MAEA,OAAOD,CAAC;IACV,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,MAAMG,kBAAkB,GAAIjF,QAAQ;EAAA,IAAAkF,kBAAA;EAAA,OACzClF,QAAQ,aAARA,QAAQ,gBAAAkF,kBAAA,GAARlF,QAAQ,CAAEzC,QAAQ,cAAA2H,kBAAA,uBAAlBA,kBAAA,CAAoBnE,KAAK,CAAE+D,CAAC;IAAA,IAAAK,KAAA;IAAA,QAAAA,KAAA,GAAKL,CAAC,CAAC1G,EAAE,cAAA+G,KAAA,uBAAJA,KAAA,CAAMC,UAAU,CAAC,UAAU,CAAC;EAAA,EAAC;AAAA,CAC/D;AAED,OAAO,MAAM5B,iBAAiB,GAAI7F,OAAO;EAAA,IAAA0H,WAAA;EAAA,OACvC1H,OAAO,aAAPA,OAAO,gBAAA0H,WAAA,GAAP1H,OAAO,CAAES,EAAE,cAAAiH,WAAA,uBAAXA,WAAA,CAAaD,UAAU,CAAC,UAAU,CAAC;AAAA,CACpC;AAED,OAAO,MAAME,4CAA4C,GAAIC,+BAA+B,KAAM;EAChGC,SAAS,EAAED,+BAA+B,CAAClF,MAAM,CAACyE,CAAC;IAAA,IAAAW,WAAA;IAAA,OAAIX,CAAC,aAADA,CAAC,gBAAAW,WAAA,GAADX,CAAC,CAAE1D,QAAQ,cAAAqE,WAAA,uBAAXA,WAAA,CAAaD,SAAS;EAAA,EAAC;EAC9EE,YAAY,EAAEH,+BAA+B,CAAClF,MAAM,CAACyE,CAAC;IAAA,IAAAa,YAAA;IAAA,OAAI,EAACb,CAAC,aAADA,CAAC,gBAAAa,YAAA,GAADb,CAAC,CAAE1D,QAAQ,cAAAuE,YAAA,eAAXA,YAAA,CAAaH,SAAS;EAAA;AACnF,CAAC,CAAC;AAEF,OAAO,MAAMI,sBAAsB,GAAGA,CAAC5F,QAAQ,EAAE6F,wBAAwB,KAAK;EAC5E,MAAMC,4BAA4B,GAAG3I,OAAO,CAAC0I,wBAAwB,EAAE,yBAAyB,CAAC;EACjG,MAAME,eAAe,GAAGpC,MAAM,CAACC,MAAM,CAACkC,4BAA4B,CAAC;EAEnE,OAAOC,eAAe,CAACjH,GAAG,CAACnB,OAAO,IAAAyC,aAAA,CAAAA,aAAA,KAC7BJ,QAAQ;IACXzC,QAAQ,EAAEI;EAAO,GACbA,OAAO,CAAC+C,MAAM,IAAI,CAAC,GAAG;IAAEsF,eAAe,EAAE;EAAK,CAAC,GAAG,CAAC,CAAC,CACxD,CAAC;AACL,CAAC;AAED,OAAO,MAAMC,+BAA+B,GAAGA,CAACjG,QAAQ,EAAEkG,qBAAqB,KAC7EA,qBAAqB,CAACpH,GAAG,CAACnB,OAAO,IAAAyC,aAAA,CAAAA,aAAA,KAC5BJ,QAAQ;EACXzC,QAAQ,EAAE,CAACI,OAAO;AAAC,EACnB,CACH;AAED,OAAO,MAAMwI,sBAAsB,GAAGA,CAACnG,QAAQ,EAAEoG,kCAAkC,KACjF,CAAChJ,OAAO,CAACgJ,kCAAkC,CAAC,GAAG,CAAAhG,aAAA,CAAAA,aAAA,KAAMJ,QAAQ;EAAEzC,QAAQ,EAAE6I,kCAAkC;EAAEC,OAAO,EAAE;AAAI,GAAG,GAAG,EACjI;AAED,OAAO,MAAMC,sBAAsB,GAAIxG,SAAS,IAAKA,SAAS,CAAChB,GAAG,CAAEqB,GAAG,IAAAC,aAAA,CAAAA,aAAA,KAClED,GAAG;EACN5C,QAAQ,EAAE4C,GAAG,CAAC5C,QAAQ,CAAC8C,MAAM,CAAE1C,OAAO,IAAK,CAAC6F,iBAAiB,CAAC7F,OAAO,CAAC;AAAC,EACvE,CAAC,CAAC0C,MAAM,CAAEF,GAAG,IAAKA,GAAG,CAAC5C,QAAQ,CAACmD,MAAM,GAAG,CAAC,CAAC;AAE5C,OAAO,MAAM6F,aAAa,GAAI9D,MAAM,IAClC,CAACkB,MAAM,CAACC,MAAM,CAACnB,MAAM,CAAC,CAACzF,OAAO,CAAC2G,MAAM,CAACC,MAAM,CAAC,CAAC/G,IAAI,CAACgH,OAAO,CAC3D;AAED,OAAO,MAAM2C,kBAAkB,GAAGA,CAAC/D,MAAM,EAAEC,KAAK,KAAK;EACnD,OAAOiB,MAAM,CAAC8C,IAAI,CAAChE,MAAM,CAAC,CACvBpC,MAAM,CAACkE,GAAG,IAAImC,MAAM,CAACnC,GAAG,CAAC,KAAK7B,KAAK,CAAC,CACpCjF,MAAM,CAAC,CAACkJ,GAAG,EAAEpC,GAAG,EAAEqC,QAAQ,KAAK;IAC9BD,GAAG,CAACC,QAAQ,CAAC,GAAGnE,MAAM,CAAC8B,GAAG,CAAC;IAC3B,OAAOoC,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;AACV,CAAC;AAED,eAAe,SAASE,WAAWA,CAACC,SAAS,EAAEC,aAAa,EAAE;EAC5D,MAAMC,kBAAkB,GAAGF,SAAS,CAAC9I,IAAI,CAAEiJ,GAAG,IAAKA,GAAG,CAACC,UAAU,CAAC;EAClE,MAAMC,oBAAoB,GAAGH,kBAAkB,aAAlBA,kBAAkB,uBAAlBA,kBAAkB,CAAEI,KAAK;EACtD,MAAMC,iBAAiB,GAAGN,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,CAAC,CAAC;EAC7C,OAAOI,oBAAoB,aAApBA,oBAAoB,cAApBA,oBAAoB,GAAIE,iBAAiB;AAClD;AAEA,OAAO,MAAMC,kCAAkC,GAAGA,CAACxH,SAAS,EAAEyH,gBAAgB,KAAK;EACjF,MAAMC,2BAA2B,GAAG1H,SAAS,CAACO,MAAM,CAAEL,QAAQ,IAAK;IACjE,OAAOuH,gBAAgB,CAAC1K,IAAI,CAAEqB,OAAO,IAAKA,OAAO,CAACJ,SAAS,KAAKkC,QAAQ,CAAC9B,OAAO,CAACE,EAAE,CAAC;EACtF,CAAC,CAAC;EAEF,MAAMqJ,gBAAgB,GAAGD,2BAA2B,CAAC1I,GAAG,CAAEkB,QAAQ,IAAK;IACrE,MAAM0H,0BAA0B,GAAG1H,QAAQ,CAACzC,QAAQ,CAAC8C,MAAM,CAAE1C,OAAO,IAAK;MACvE,OAAO4J,gBAAgB,CAAC1K,IAAI,CAAEqB,OAAO,IAAKA,OAAO,CAACyJ,SAAS,KAAKhK,OAAO,CAACS,EAAE,IAAIF,OAAO,CAACJ,SAAS,KAAKkC,QAAQ,CAAC9B,OAAO,CAACE,EAAE,CAAC;IAC1H,CAAC,CAAC;IAEF,OAAAgC,aAAA,CAAAA,aAAA,KACKJ,QAAQ;MACXzC,QAAQ,EAAEmK;IAA0B;EAExC,CAAC,CAAC;EAEF,MAAME,qBAAqB,GAAGH,gBAAgB,CAACpH,MAAM,CAAEL,QAAQ,IAAKA,QAAQ,CAACzC,QAAQ,CAACmD,MAAM,GAAG,CAAC,CAAC;EAEjG,OAAOkH,qBAAqB;AAC9B,CAAC","ignoreList":[]}
|