@unite-us/app-create-referral 0.10.3 → 0.10.4

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.
@@ -1,8 +1,7 @@
1
- import React, { useEffect } from 'react';
1
+ import React, { useEffect, useMemo } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import moment from 'moment';
4
4
  import { get, isNumber } from 'lodash';
5
- import { useFormState } from 'react-final-form';
6
5
  import { UTILIZATION_ERROR, DATES_ERROR } from './messageConstants';
7
6
  import PreviousAuthorizationRequestsDetails from './PreviousAuthorizationRequestsDetails';
8
7
  import formatShortDate from './formatShortDate';
@@ -29,14 +28,13 @@ InformationText.propTypes = {
29
28
  isLoaded: PropTypes.bool.isRequired
30
29
  };
31
30
  function CapsInfo(_ref2) {
32
- var _formValues$paymentAu, _formValues$paymentAu2, _formValues$paymentAu3, _formState$errors;
33
31
  var formValues = _ref2.formValues,
34
32
  feeScheduleProgram = _ref2.feeScheduleProgram,
35
33
  isCostBased = _ref2.isCostBased,
36
- assignReferralErrors = _ref2.assignReferralErrors;
37
- var serviceStart = formValues === null || formValues === void 0 || (_formValues$paymentAu = formValues.paymentAuthForm) === null || _formValues$paymentAu === void 0 ? void 0 : _formValues$paymentAu.service_start;
34
+ setReferralErrors = _ref2.setReferralErrors;
35
+ var serviceStart = get(formValues, 'paymentAuthForm.service_start');
38
36
  var requestedStartDate = serviceStart && moment.unix(serviceStart).toISOString();
39
- var serviceEnd = formValues === null || formValues === void 0 || (_formValues$paymentAu2 = formValues.paymentAuthForm) === null || _formValues$paymentAu2 === void 0 ? void 0 : _formValues$paymentAu2.service_end;
37
+ var serviceEnd = get(formValues, 'paymentAuthForm.service_end');
40
38
  var requestedEndDate = serviceEnd && moment.unix(serviceEnd).toISOString();
41
39
  var pays5590RefactorInsuranceFilters = useFeatureFlag('pays5590RefactorInsuranceFilters', false);
42
40
  if (pays5590RefactorInsuranceFilters) {
@@ -56,8 +54,7 @@ function CapsInfo(_ref2) {
56
54
  }
57
55
  }),
58
56
  authorizedSpendsData = _useFind.data,
59
- isFetching = _useFind.isFetching,
60
- isLoading = _useFind.isLoading;
57
+ isFindAuthorizedSpendSuccess = _useFind.isSuccess;
61
58
  var _useFind2 = useFind('insurance', {
62
59
  person: person === null || person === void 0 ? void 0 : person.id,
63
60
  state: 'active',
@@ -71,13 +68,10 @@ function CapsInfo(_ref2) {
71
68
  }
72
69
  }),
73
70
  insurancesData = _useFind2.data,
74
- isFindInsuranceSuccess = _useFind2.isSuccess,
75
- isFindInsuranceLoading = _useFind2.isLoading;
76
- var isInsuranceLoaded = isFindInsuranceSuccess || !isFindInsuranceLoading;
77
- var isLoaded = !isFetching && !isLoading;
71
+ isFindInsuranceSuccess = _useFind2.isSuccess;
78
72
  var insurances = get(insurancesData, 'data.data', []);
79
73
  var invalidInsuranceAuthorizationDates = !(insurances !== null && insurances !== void 0 && insurances.length);
80
- var unit = feeScheduleProgram === null || feeScheduleProgram === void 0 ? void 0 : feeScheduleProgram.unit;
74
+ var unit = get(feeScheduleProgram, 'unit');
81
75
  var authorizationSpends = get(authorizedSpendsData, 'data.data', []); //todo use this on the modal
82
76
  var totalApprovedSpend = get(authorizedSpendsData, 'data.meta.total_approved_spend', 0);
83
77
  var totalRequestedSpend = get(authorizedSpendsData, 'data.meta.total_requested_spend', 0);
@@ -116,30 +110,20 @@ function CapsInfo(_ref2) {
116
110
  unit: unit
117
111
  });
118
112
  var formattedCapPeriod = hasCap && !capStartsAt ? 'Lifetime' : "".concat(formatShortDate(startDate), " - ").concat(formatShortDate(endDate));
119
- var amountRequested = formValues === null || formValues === void 0 || (_formValues$paymentAu3 = formValues.paymentAuthForm) === null || _formValues$paymentAu3 === void 0 ? void 0 : _formValues$paymentAu3.amount_requested;
113
+ var amountRequested = get(formValues, 'paymentAuthForm.amount_requested');
120
114
  var isAmountExceeded = isNumber(amountRequested) && hasCap && amountRequested > availableCap;
121
- var formState = useFormState();
122
- var authFormErrors = (_formState$errors = formState.errors) === null || _formState$errors === void 0 ? void 0 : _formState$errors.paymentAuthForm;
115
+ var errors = useMemo(function () {
116
+ return {
117
+ service: !!showClientUtilizationError,
118
+ passthrough_dates: !!showPassthroughDatesError,
119
+ invalid_insurance_auth_dates: !!invalidInsuranceAuthorizationDates,
120
+ amount_exceeded: !!isAmountExceeded
121
+ };
122
+ }, [showClientUtilizationError, showPassthroughDatesError, invalidInsuranceAuthorizationDates, isAmountExceeded]);
123
123
  useEffect(function () {
124
- if (isFindInsuranceSuccess) {
125
- var errors = [];
126
- if (showClientUtilizationError) errors.push('service');
127
- if (showPassthroughDatesError || invalidInsuranceAuthorizationDates) errors.push('paymentAuthForm.service_end');
128
- if (isAmountExceeded) errors.push('amount_requested');
129
- if (authFormErrors) {
130
- Object.keys(authFormErrors).forEach(function (key) {
131
- if (key === 'amount_requested' && authFormErrors[key].includes('Required')) {
132
- return;
133
- }
134
- errors.push("paymentAuthForm.".concat(key));
135
- });
136
- }
137
- ;
138
- assignReferralErrors(errors);
139
- }
140
- // NOTE: disable exhaustive-deps because we don't want to run this effect when the authFormErrors values change
124
+ setReferralErrors(errors);
141
125
  // eslint-disable-next-line react-hooks/exhaustive-deps
142
- }, [isFindInsuranceSuccess, assignReferralErrors, showClientUtilizationError, showPassthroughDatesError, isAmountExceeded, invalidInsuranceAuthorizationDates, requestedStartDate, requestedEndDate, amountRequested]);
126
+ }, [errors]);
143
127
  return /*#__PURE__*/React.createElement("div", {
144
128
  className: "mb-12 grid grid-cols-2 gap-2",
145
129
  "data-testid": "caps-info-section"
@@ -150,23 +134,23 @@ function CapsInfo(_ref2) {
150
134
  value: /*#__PURE__*/React.createElement("span", {
151
135
  className: "font-bold"
152
136
  }, formattedAvailableAmount),
153
- isLoaded: isLoaded
137
+ isLoaded: isFindAuthorizedSpendSuccess
154
138
  }), /*#__PURE__*/React.createElement(InformationText, {
155
139
  name: "Amount Currently Authorized",
156
140
  value: formattedTotalApprovedSpend,
157
- isLoaded: isLoaded
141
+ isLoaded: isFindAuthorizedSpendSuccess
158
142
  }), hasCap && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(InformationText, {
159
143
  name: "Cap",
160
144
  value: formattedCap,
161
- isLoaded: isLoaded
145
+ isLoaded: isFindAuthorizedSpendSuccess
162
146
  }), (startDate === null || startDate === void 0 ? void 0 : startDate.isValid()) && /*#__PURE__*/React.createElement(InformationText, {
163
147
  name: "Cap Period",
164
148
  value: formattedCapPeriod,
165
- isLoaded: isLoaded
149
+ isLoaded: isFindAuthorizedSpendSuccess
166
150
  })), /*#__PURE__*/React.createElement(InformationText, {
167
151
  name: "Amount Pending Authorization",
168
152
  value: formattedTotalRequestedSpend,
169
- isLoaded: isLoaded
153
+ isLoaded: isFindAuthorizedSpendSuccess
170
154
  }), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(PreviousAuthorizationRequestsDetails, {
171
155
  authorizationSpends: authorizationSpends,
172
156
  totalApprovedSpend: formattedTotalApprovedSpend,
@@ -186,7 +170,7 @@ function CapsInfo(_ref2) {
186
170
  className: "col-span-2 px-0 flex space-x-2 mt-6 mb-0"
187
171
  }, /*#__PURE__*/React.createElement(ErrorMessage, null, "The client is already receiving this service through either a passthrough or non-passthrough service within this program group.")), showPassthroughDatesError && /*#__PURE__*/React.createElement("div", {
188
172
  className: "col-span-2 px-0 flex space-x-2 mt-6 mb-0"
189
- }, /*#__PURE__*/React.createElement(ErrorMessage, null, "Clients can only receive services from this program for 30 days or until their social coverage ends, whichever comes first.")), isInsuranceLoaded && isLoaded && invalidInsuranceAuthorizationDates && /*#__PURE__*/React.createElement("div", {
173
+ }, /*#__PURE__*/React.createElement(ErrorMessage, null, "Clients can only receive services from this program for 30 days or until their social coverage ends, whichever comes first.")), isFindInsuranceSuccess && isFindAuthorizedSpendSuccess && invalidInsuranceAuthorizationDates && /*#__PURE__*/React.createElement("div", {
190
174
  className: "col-span-2 px-0 flex space-x-2 mt-6 mb-0"
191
175
  }, /*#__PURE__*/React.createElement(ErrorMessage, null, "The service delivery dates requested fall outside the client's enrollment dates for all enrolled plans. Please edit the service delivery dates.")));
192
176
  }
@@ -194,7 +178,7 @@ CapsInfo.propTypes = {
194
178
  formValues: PropTypes.object.isRequired,
195
179
  feeScheduleProgram: PropTypes.object.isRequired,
196
180
  isCostBased: PropTypes.bool.isRequired,
197
- assignReferralErrors: PropTypes.func.isRequired
181
+ setReferralErrors: PropTypes.func.isRequired
198
182
  };
199
183
  export default CapsInfo;
200
184
  //# sourceMappingURL=CapsInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CapsInfo.js","names":["React","useEffect","PropTypes","moment","get","isNumber","useFormState","UTILIZATION_ERROR","DATES_ERROR","PreviousAuthorizationRequestsDetails","formatShortDate","LineItem","usePerson","useFind","Spend","ErrorMessage","useFeatureFlag","InformationText","_ref","name","value","isLoaded","createElement","field","fieldClassName","valueClassName","propTypes","oneOfType","string","element","isRequired","node","number","bool","CapsInfo","_ref2","_formValues$paymentAu","_formValues$paymentAu2","_formValues$paymentAu3","_formState$errors","formValues","feeScheduleProgram","isCostBased","assignReferralErrors","serviceStart","paymentAuthForm","service_start","requestedStartDate","unix","toISOString","serviceEnd","service_end","requestedEndDate","pays5590RefactorInsuranceFilters","add","subtract","person","_useFind","id","fee_schedule_program","requested_starts_at","requested_ends_at","queryConfig","enabled","placeholderData","undefined","authorizedSpendsData","data","isFetching","isLoading","_useFind2","state","fee_schedule","enrolled_before","expired_after","queryClient","insurancesData","isFindInsuranceSuccess","isSuccess","isFindInsuranceLoading","isInsuranceLoaded","insurances","invalidInsuranceAuthorizationDates","length","unit","authorizationSpends","totalApprovedSpend","totalRequestedSpend","totalCap","capStartsAt","capEndsAt","authorizationSpendsErrors","availableCap","formattedAvailableAmount","amount","showClientUtilizationError","some","e","title","showPassthroughDatesError","startDate","utc","startOf","endDate","endOf","hasCap","has_cap","formattedCap","formattedTotalApprovedSpend","formattedTotalRequestedSpend","formattedCapPeriod","concat","amountRequested","amount_requested","isAmountExceeded","formState","authFormErrors","errors","push","Object","keys","forEach","key","includes","className","Fragment","isValid","capInfo","amountAvailable","object","func"],"sources":["../../../src/components/service_authorization/CapsInfo.jsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { get, isNumber } from 'lodash';\nimport { useFormState } from 'react-final-form';\nimport { UTILIZATION_ERROR, DATES_ERROR } from './messageConstants';\nimport PreviousAuthorizationRequestsDetails from './PreviousAuthorizationRequestsDetails';\nimport formatShortDate from './formatShortDate';\nimport LineItem from '../../pages/builder/LineItem';\nimport usePerson from '../../hooks/usePerson';\nimport { useFind } from '../../api/ApiHooks';\nimport Spend from './Spend';\nimport ErrorMessage from '../../common/form/ErrorMessage';\nimport { useFeatureFlag } from '../../utils/useFeatureFlag';\n\nfunction InformationText({\n name, value, isLoaded\n}) {\n return (\n <LineItem\n field={name}\n fieldClassName=\"col-span-1 p-0 text-dark-grey\"\n valueClassName=\"flex text-dark-blue\"\n isLoaded={isLoaded}\n >\n {value}\n </LineItem>\n );\n}\n\nInformationText.propTypes = {\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.node, PropTypes.number]).isRequired,\n isLoaded: PropTypes.bool.isRequired,\n};\n\nfunction CapsInfo({\n formValues,\n feeScheduleProgram,\n isCostBased,\n assignReferralErrors,\n}) {\n\n const serviceStart = formValues?.paymentAuthForm?.service_start;\n let requestedStartDate = serviceStart && moment.unix(serviceStart).toISOString();\n const serviceEnd = formValues?.paymentAuthForm?.service_end;\n let requestedEndDate = serviceEnd && moment.unix(serviceEnd).toISOString();\n\n const pays5590RefactorInsuranceFilters = useFeatureFlag('pays5590RefactorInsuranceFilters', false);\n\n if (pays5590RefactorInsuranceFilters) {\n requestedStartDate = serviceStart && moment(requestedStartDate).add(1, 'day').toISOString();\n requestedEndDate = serviceEnd && moment(requestedEndDate).subtract(1, 'day').toISOString();\n }\n \n const person = usePerson();\n const { data: authorizedSpendsData, isFetching, isLoading } = useFind(\n 'authorized_spend',\n {\n person: person?.id,\n fee_schedule_program: feeScheduleProgram?.id,\n requested_starts_at: requestedStartDate,\n requested_ends_at: requestedEndDate,\n },\n { \n queryConfig: { \n enabled: !!(person?.id && feeScheduleProgram?.id),\n placeholderData: undefined,\n } \n }\n );\n\n const { \n data: insurancesData,\n isSuccess: isFindInsuranceSuccess,\n isLoading: isFindInsuranceLoading,\n } = useFind(\n 'insurance',\n {\n person: person?.id,\n state: 'active',\n 'plan.fee_schedules': feeScheduleProgram?.fee_schedule.id,\n enrolled_before: requestedStartDate,\n expired_after: requestedEndDate,\n },\n {\n queryClient: {\n enabled: !!feeScheduleProgram?.id,\n placeholderData: undefined,\n }\n }\n );\n const isInsuranceLoaded = isFindInsuranceSuccess || !isFindInsuranceLoading;\n\n const isLoaded = !isFetching && !isLoading;\n\n const insurances = get(insurancesData, 'data.data', []);\n const invalidInsuranceAuthorizationDates = !insurances?.length;\n\n const unit = feeScheduleProgram?.unit;\n const authorizationSpends = get(authorizedSpendsData, 'data.data', []); //todo use this on the modal\n const totalApprovedSpend = get(authorizedSpendsData, 'data.meta.total_approved_spend', 0);\n const totalRequestedSpend = get(authorizedSpendsData, 'data.meta.total_requested_spend', 0);\n const totalCap = get(authorizedSpendsData, 'data.meta.total_cap', 0);\n const capStartsAt = get(authorizedSpendsData, 'data.meta.cap_starts_at', null);\n const capEndsAt = get(authorizedSpendsData, 'data.meta.cap_ends_at', null);\n const authorizationSpendsErrors = get(authorizedSpendsData, 'data.meta.errors', []);\n const availableCap = get(authorizedSpendsData, 'data.meta.available_cap', 0);\n const formattedAvailableAmount = <Spend isCostBased={isCostBased} amount={availableCap} unit={unit}/>;\n\n const showClientUtilizationError = authorizationSpendsErrors.some((e) => e.title === UTILIZATION_ERROR);\n const showPassthroughDatesError = authorizationSpendsErrors.some((e) => e.title === DATES_ERROR);\n\n const startDate = moment(capStartsAt).utc().startOf('day');\n const endDate = moment(capEndsAt).utc().endOf('day');\n const hasCap = feeScheduleProgram?.has_cap;\n const formattedCap = hasCap ? <Spend amount={totalCap} unit={unit} isCostBased={isCostBased}/> : 'No Cap';\n const formattedTotalApprovedSpend = <Spend isCostBased={isCostBased} amount={totalApprovedSpend} unit={unit}/>;\n const formattedTotalRequestedSpend = <Spend isCostBased={isCostBased} amount={totalRequestedSpend} unit={unit}/>;\n const formattedCapPeriod = (hasCap && !capStartsAt) ?\n 'Lifetime' : `${formatShortDate(startDate)} - ${formatShortDate(endDate)}`;\n\n\n const amountRequested = formValues?.paymentAuthForm?.amount_requested;\n const isAmountExceeded = isNumber(amountRequested) && hasCap && (amountRequested > availableCap);\n\n const formState = useFormState();\n const authFormErrors = formState.errors?.paymentAuthForm;\n\n useEffect(() => {\n if(isFindInsuranceSuccess) {\n const errors = [];\n\n if (showClientUtilizationError) errors.push('service');\n if (showPassthroughDatesError || invalidInsuranceAuthorizationDates) errors.push('paymentAuthForm.service_end');\n if (isAmountExceeded) errors.push('amount_requested');\n if (authFormErrors) {\n Object.keys(authFormErrors).forEach((key) => {\n if (key === 'amount_requested' && authFormErrors[key].includes('Required')) {\n return;\n }\n errors.push(`paymentAuthForm.${key}`);\n });\n };\n \n assignReferralErrors(errors);\n }\n // NOTE: disable exhaustive-deps because we don't want to run this effect when the authFormErrors values change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n isFindInsuranceSuccess,\n assignReferralErrors,\n showClientUtilizationError,\n showPassthroughDatesError,\n isAmountExceeded,\n invalidInsuranceAuthorizationDates,\n requestedStartDate,\n requestedEndDate,\n amountRequested,\n ]);\n\n return (\n <div className=\"mb-12 grid grid-cols-2 gap-2\" data-testid=\"caps-info-section\">\n { hasCap && (\n <InformationText\n name={<span className=\"font-bold\">AMOUNT AVAILABLE FOR AUTHORIZATION</span>}\n value={(\n <span className=\"font-bold\">\n {formattedAvailableAmount}\n </span>\n )}\n isLoaded={isLoaded}\n />\n )}\n <InformationText\n name=\"Amount Currently Authorized\"\n value={formattedTotalApprovedSpend}\n isLoaded={isLoaded}\n />\n { hasCap && (\n <>\n <InformationText name=\"Cap\" value={formattedCap} isLoaded={isLoaded} />\n {startDate?.isValid() &&\n (<InformationText name=\"Cap Period\" value={formattedCapPeriod} isLoaded={isLoaded} />)}\n </>\n )}\n <InformationText\n name=\"Amount Pending Authorization\"\n value={\n formattedTotalRequestedSpend\n }\n isLoaded={isLoaded}\n />\n <div>\n <PreviousAuthorizationRequestsDetails\n authorizationSpends={authorizationSpends}\n totalApprovedSpend={formattedTotalApprovedSpend}\n totalRequestedSpend={formattedTotalRequestedSpend}\n unit={unit}\n isCostBased={isCostBased}\n capInfo={{hasCap, formattedCap, formattedCapPeriod, startDate}}\n amountAvailable={formattedAvailableAmount}\n />\n </div>\n {isAmountExceeded && (\n <div className=\"col-span-2 px-0 flex space-x-2 mt-6 mb-0\">\n <ErrorMessage>\n The amount requested is more than the amount available for authorization.\n Please adjust the amount requested, or search for another program\n to meet the client&apos;s needs.\n </ErrorMessage>\n </div>\n )}\n {showClientUtilizationError && (\n <div className=\"col-span-2 px-0 flex space-x-2 mt-6 mb-0\">\n <ErrorMessage>\n The client is already receiving this service through either a passthrough or non-passthrough service within this program group.\n </ErrorMessage>\n </div>\n )}\n {showPassthroughDatesError && (\n <div className=\"col-span-2 px-0 flex space-x-2 mt-6 mb-0\">\n <ErrorMessage>\n Clients can only receive services from this program for 30 days or until their social coverage ends,\n whichever comes first.\n </ErrorMessage>\n </div>\n )}\n {(isInsuranceLoaded && isLoaded) && invalidInsuranceAuthorizationDates && (\n <div className=\"col-span-2 px-0 flex space-x-2 mt-6 mb-0\">\n <ErrorMessage>\n The service delivery dates requested fall outside the client&apos;s\n enrollment dates for all enrolled plans. Please edit the service delivery dates.\n </ErrorMessage>\n </div>\n )}\n </div>\n );\n}\n\nCapsInfo.propTypes = {\n formValues: PropTypes.object.isRequired,\n feeScheduleProgram: PropTypes.object.isRequired,\n isCostBased: PropTypes.bool.isRequired,\n assignReferralErrors: PropTypes.func.isRequired,\n};\n\nexport default CapsInfo;\n"],"mappings":"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"}
1
+ {"version":3,"file":"CapsInfo.js","names":["React","useEffect","useMemo","PropTypes","moment","get","isNumber","UTILIZATION_ERROR","DATES_ERROR","PreviousAuthorizationRequestsDetails","formatShortDate","LineItem","usePerson","useFind","Spend","ErrorMessage","useFeatureFlag","InformationText","_ref","name","value","isLoaded","createElement","field","fieldClassName","valueClassName","propTypes","oneOfType","string","element","isRequired","node","number","bool","CapsInfo","_ref2","formValues","feeScheduleProgram","isCostBased","setReferralErrors","serviceStart","requestedStartDate","unix","toISOString","serviceEnd","requestedEndDate","pays5590RefactorInsuranceFilters","add","subtract","person","_useFind","id","fee_schedule_program","requested_starts_at","requested_ends_at","queryConfig","enabled","placeholderData","undefined","authorizedSpendsData","data","isFindAuthorizedSpendSuccess","isSuccess","_useFind2","state","fee_schedule","enrolled_before","expired_after","queryClient","insurancesData","isFindInsuranceSuccess","insurances","invalidInsuranceAuthorizationDates","length","unit","authorizationSpends","totalApprovedSpend","totalRequestedSpend","totalCap","capStartsAt","capEndsAt","authorizationSpendsErrors","availableCap","formattedAvailableAmount","amount","showClientUtilizationError","some","e","title","showPassthroughDatesError","startDate","utc","startOf","endDate","endOf","hasCap","has_cap","formattedCap","formattedTotalApprovedSpend","formattedTotalRequestedSpend","formattedCapPeriod","concat","amountRequested","isAmountExceeded","errors","service","passthrough_dates","invalid_insurance_auth_dates","amount_exceeded","className","Fragment","isValid","capInfo","amountAvailable","object","func"],"sources":["../../../src/components/service_authorization/CapsInfo.jsx"],"sourcesContent":["import React, { useEffect, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport { get, isNumber } from 'lodash';\nimport { UTILIZATION_ERROR, DATES_ERROR } from './messageConstants';\nimport PreviousAuthorizationRequestsDetails from './PreviousAuthorizationRequestsDetails';\nimport formatShortDate from './formatShortDate';\nimport LineItem from '../../pages/builder/LineItem';\nimport usePerson from '../../hooks/usePerson';\nimport { useFind } from '../../api/ApiHooks';\nimport Spend from './Spend';\nimport ErrorMessage from '../../common/form/ErrorMessage';\nimport { useFeatureFlag } from '../../utils/useFeatureFlag';\n\nfunction InformationText({\n name, value, isLoaded\n}) {\n return (\n <LineItem\n field={name}\n fieldClassName=\"col-span-1 p-0 text-dark-grey\"\n valueClassName=\"flex text-dark-blue\"\n isLoaded={isLoaded}\n >\n {value}\n </LineItem>\n );\n}\n\nInformationText.propTypes = {\n name: PropTypes.oneOfType([PropTypes.string, PropTypes.element]).isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.node, PropTypes.number]).isRequired,\n isLoaded: PropTypes.bool.isRequired,\n};\n\nfunction CapsInfo({\n formValues,\n feeScheduleProgram,\n isCostBased,\n setReferralErrors,\n}) {\n const serviceStart = get(formValues, 'paymentAuthForm.service_start');\n let requestedStartDate = serviceStart && moment.unix(serviceStart).toISOString();\n const serviceEnd = get(formValues, 'paymentAuthForm.service_end');\n let requestedEndDate = serviceEnd && moment.unix(serviceEnd).toISOString();\n\n const pays5590RefactorInsuranceFilters = useFeatureFlag('pays5590RefactorInsuranceFilters', false);\n\n if (pays5590RefactorInsuranceFilters) {\n requestedStartDate = serviceStart && moment(requestedStartDate).add(1, 'day').toISOString();\n requestedEndDate = serviceEnd && moment(requestedEndDate).subtract(1, 'day').toISOString();\n }\n \n const person = usePerson();\n const { \n data: authorizedSpendsData, \n isSuccess: isFindAuthorizedSpendSuccess, \n } = useFind(\n 'authorized_spend',\n {\n person: person?.id,\n fee_schedule_program: feeScheduleProgram?.id,\n requested_starts_at: requestedStartDate,\n requested_ends_at: requestedEndDate,\n },\n { \n queryConfig: { \n enabled: !!(person?.id && feeScheduleProgram?.id),\n placeholderData: undefined,\n } \n }\n );\n\n const { \n data: insurancesData,\n isSuccess: isFindInsuranceSuccess,\n } = useFind(\n 'insurance',\n {\n person: person?.id,\n state: 'active',\n 'plan.fee_schedules': feeScheduleProgram?.fee_schedule.id,\n enrolled_before: requestedStartDate,\n expired_after: requestedEndDate,\n },\n {\n queryClient: {\n enabled: !!feeScheduleProgram?.id,\n placeholderData: undefined,\n }\n }\n );\n const insurances = get(insurancesData, 'data.data', []);\n const invalidInsuranceAuthorizationDates = !insurances?.length;\n\n const unit = get(feeScheduleProgram, 'unit');\n const authorizationSpends = get(authorizedSpendsData, 'data.data', []); //todo use this on the modal\n const totalApprovedSpend = get(authorizedSpendsData, 'data.meta.total_approved_spend', 0);\n const totalRequestedSpend = get(authorizedSpendsData, 'data.meta.total_requested_spend', 0);\n const totalCap = get(authorizedSpendsData, 'data.meta.total_cap', 0);\n const capStartsAt = get(authorizedSpendsData, 'data.meta.cap_starts_at', null);\n const capEndsAt = get(authorizedSpendsData, 'data.meta.cap_ends_at', null);\n const authorizationSpendsErrors = get(authorizedSpendsData, 'data.meta.errors', []);\n const availableCap = get(authorizedSpendsData, 'data.meta.available_cap', 0);\n const formattedAvailableAmount = <Spend isCostBased={isCostBased} amount={availableCap} unit={unit}/>;\n\n const showClientUtilizationError = authorizationSpendsErrors.some((e) => e.title === UTILIZATION_ERROR);\n const showPassthroughDatesError = authorizationSpendsErrors.some((e) => e.title === DATES_ERROR);\n\n const startDate = moment(capStartsAt).utc().startOf('day');\n const endDate = moment(capEndsAt).utc().endOf('day');\n const hasCap = feeScheduleProgram?.has_cap;\n const formattedCap = hasCap ? <Spend amount={totalCap} unit={unit} isCostBased={isCostBased}/> : 'No Cap';\n const formattedTotalApprovedSpend = <Spend isCostBased={isCostBased} amount={totalApprovedSpend} unit={unit}/>;\n const formattedTotalRequestedSpend = <Spend isCostBased={isCostBased} amount={totalRequestedSpend} unit={unit}/>;\n const formattedCapPeriod = (hasCap && !capStartsAt) ?\n 'Lifetime' : `${formatShortDate(startDate)} - ${formatShortDate(endDate)}`;\n\n\n const amountRequested = get(formValues, 'paymentAuthForm.amount_requested');\n const isAmountExceeded = isNumber(amountRequested) && hasCap && (amountRequested > availableCap);\n\n const errors = useMemo(() => {\n return {\n service: !!showClientUtilizationError,\n passthrough_dates: !!showPassthroughDatesError,\n invalid_insurance_auth_dates: !!invalidInsuranceAuthorizationDates,\n amount_exceeded: !!isAmountExceeded,\n };\n }, [\n showClientUtilizationError,\n showPassthroughDatesError,\n invalidInsuranceAuthorizationDates,\n isAmountExceeded,\n ]);\n\n useEffect(() => {\n setReferralErrors(errors);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n errors,\n ]);\n\n return (\n <div className=\"mb-12 grid grid-cols-2 gap-2\" data-testid=\"caps-info-section\">\n { hasCap && (\n <InformationText\n name={<span className=\"font-bold\">AMOUNT AVAILABLE FOR AUTHORIZATION</span>}\n value={(\n <span className=\"font-bold\">\n {formattedAvailableAmount}\n </span>\n )}\n isLoaded={isFindAuthorizedSpendSuccess}\n />\n )}\n <InformationText\n name=\"Amount Currently Authorized\"\n value={formattedTotalApprovedSpend}\n isLoaded={isFindAuthorizedSpendSuccess}\n />\n { hasCap && (\n <>\n <InformationText name=\"Cap\" value={formattedCap} isLoaded={isFindAuthorizedSpendSuccess} />\n {startDate?.isValid() &&\n (<InformationText name=\"Cap Period\" value={formattedCapPeriod} isLoaded={isFindAuthorizedSpendSuccess} />)}\n </>\n )}\n <InformationText\n name=\"Amount Pending Authorization\"\n value={\n formattedTotalRequestedSpend\n }\n isLoaded={isFindAuthorizedSpendSuccess}\n />\n <div>\n <PreviousAuthorizationRequestsDetails\n authorizationSpends={authorizationSpends}\n totalApprovedSpend={formattedTotalApprovedSpend}\n totalRequestedSpend={formattedTotalRequestedSpend}\n unit={unit}\n isCostBased={isCostBased}\n capInfo={{hasCap, formattedCap, formattedCapPeriod, startDate}}\n amountAvailable={formattedAvailableAmount}\n />\n </div>\n {isAmountExceeded && (\n <div className=\"col-span-2 px-0 flex space-x-2 mt-6 mb-0\">\n <ErrorMessage>\n The amount requested is more than the amount available for authorization.\n Please adjust the amount requested, or search for another program\n to meet the client&apos;s needs.\n </ErrorMessage>\n </div>\n )}\n {showClientUtilizationError && (\n <div className=\"col-span-2 px-0 flex space-x-2 mt-6 mb-0\">\n <ErrorMessage>\n The client is already receiving this service through either a passthrough or non-passthrough service within this program group.\n </ErrorMessage>\n </div>\n )}\n {showPassthroughDatesError && (\n <div className=\"col-span-2 px-0 flex space-x-2 mt-6 mb-0\">\n <ErrorMessage>\n Clients can only receive services from this program for 30 days or until their social coverage ends,\n whichever comes first.\n </ErrorMessage>\n </div>\n )}\n {(isFindInsuranceSuccess && isFindAuthorizedSpendSuccess) && invalidInsuranceAuthorizationDates && (\n <div className=\"col-span-2 px-0 flex space-x-2 mt-6 mb-0\">\n <ErrorMessage>\n The service delivery dates requested fall outside the client&apos;s\n enrollment dates for all enrolled plans. Please edit the service delivery dates.\n </ErrorMessage>\n </div>\n )}\n </div>\n );\n}\n\nCapsInfo.propTypes = {\n formValues: PropTypes.object.isRequired,\n feeScheduleProgram: PropTypes.object.isRequired,\n isCostBased: PropTypes.bool.isRequired,\n setReferralErrors: PropTypes.func.isRequired,\n};\n\nexport default CapsInfo;\n"],"mappings":"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"}
@@ -4,14 +4,11 @@ import PropTypes from 'prop-types';
4
4
  import { Field } from 'react-final-form';
5
5
  import pluralize from 'pluralize';
6
6
  import fspUtils from '@unite-us/client-utils/dist/utils/feeSchedulePrograms';
7
- import { isRequired } from '@unite-us/client-utils/dist/utils/validations/validations';
8
7
  import CapsInfo from '../../components/service_authorization/CapsInfo';
9
8
  import { DurationField, InputField } from '@unite-us/ui';
10
9
  import CurrencyField from '../../common/form/CurrencyField';
11
10
  import DollarAmount from '../../components/DollarAmount';
12
11
  import LineItem from './LineItem';
13
- import validateCostAmount from '../../utils/validateCostAmount';
14
- import validateUnitAmount from '../../utils/validateUnitAmount';
15
12
  import usePreventWheel from '../../utils/usePreventWheel';
16
13
  var AuthFormLineItem = function AuthFormLineItem(props) {
17
14
  return /*#__PURE__*/React.createElement(LineItem, _extends({
@@ -23,7 +20,7 @@ var AuthorizationSubform = function AuthorizationSubform(_ref) {
23
20
  var _formValues$paymentAu, _formValues$paymentAu2, _formValues$amount_re;
24
21
  var feeScheduleProgram = _ref.feeScheduleProgram,
25
22
  formValues = _ref.formValues,
26
- assignReferralErrors = _ref.assignReferralErrors;
23
+ setReferralErrors = _ref.setReferralErrors;
27
24
  var isCostBased = fspUtils.isCostPaymentType(feeScheduleProgram.payment_type);
28
25
  var showUnits = !isCostBased && (feeScheduleProgram === null || feeScheduleProgram === void 0 ? void 0 : feeScheduleProgram.unit);
29
26
  var showRate = showUnits && (feeScheduleProgram === null || feeScheduleProgram === void 0 ? void 0 : feeScheduleProgram.unit_rate) > 0;
@@ -57,10 +54,7 @@ var AuthorizationSubform = function AuthorizationSubform(_ref) {
57
54
  }), /*#__PURE__*/React.createElement("div", {
58
55
  className: "grid grid-cols-3 gap-x-6"
59
56
  }, /*#__PURE__*/React.createElement(Field, {
60
- name: "paymentAuthForm.amount_requested",
61
- validate: function validate(value) {
62
- return isCostBased ? validateCostAmount(value) : validateUnitAmount(value);
63
- }
57
+ name: "paymentAuthForm.amount_requested"
64
58
  }, function (params) {
65
59
  return isCostBased ? /*#__PURE__*/React.createElement(CurrencyField, _extends({
66
60
  className: "col-span-1 p-0",
@@ -86,10 +80,7 @@ var AuthorizationSubform = function AuthorizationSubform(_ref) {
86
80
  name: "paymentAuthForm.service_start"
87
81
  }, function (startProps) {
88
82
  return /*#__PURE__*/React.createElement(Field, {
89
- name: "paymentAuthForm.service_end",
90
- validate: function validate(value) {
91
- return isRequired(value);
92
- }
83
+ name: "paymentAuthForm.service_end"
93
84
  }, function (endProps) {
94
85
  return /*#__PURE__*/React.createElement(DurationField, {
95
86
  id: "authorization-request-service-dates",
@@ -112,13 +103,13 @@ var AuthorizationSubform = function AuthorizationSubform(_ref) {
112
103
  feeScheduleProgram: feeScheduleProgram,
113
104
  formValues: formValues,
114
105
  isCostBased: isCostBased,
115
- assignReferralErrors: assignReferralErrors
106
+ setReferralErrors: setReferralErrors
116
107
  })));
117
108
  };
118
109
  AuthorizationSubform.propTypes = {
119
110
  feeScheduleProgram: PropTypes.object.isRequired,
120
111
  formValues: PropTypes.object.isRequired,
121
- assignReferralErrors: PropTypes.func.isRequired
112
+ setReferralErrors: PropTypes.func.isRequired
122
113
  };
123
114
  export default AuthorizationSubform;
124
115
  //# sourceMappingURL=AuthorizationSubform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthorizationSubform.js","names":["React","PropTypes","Field","pluralize","fspUtils","isRequired","CapsInfo","DurationField","InputField","CurrencyField","DollarAmount","LineItem","validateCostAmount","validateUnitAmount","usePreventWheel","AuthFormLineItem","props","createElement","_extends","fieldClassName","valueClassName","AuthorizationSubform","_ref","_formValues$paymentAu","_formValues$paymentAu2","_formValues$amount_re","feeScheduleProgram","formValues","assignReferralErrors","isCostBased","isCostPaymentType","payment_type","showUnits","unit","showRate","unit_rate","hasDatesSelected","paymentAuthForm","service_start","service_end","Fragment","className","field","name","PAYMENT_TYPES","value","convertCents","cap_information","dangerouslySetInnerHTML","__html","validate","params","id","label","required","type","amount_requested","startProps","endProps","startField","startFieldPath","endField","endFieldPath","style","container","width","propTypes","object","func"],"sources":["../../../src/pages/builder/AuthorizationSubform.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Field } from 'react-final-form';\nimport pluralize from 'pluralize';\nimport fspUtils from '@unite-us/client-utils/dist/utils/feeSchedulePrograms';\nimport { isRequired } from '@unite-us/client-utils/dist/utils/validations/validations';\nimport CapsInfo from '../../components/service_authorization/CapsInfo';\nimport {\n DurationField,\n InputField,\n} from '@unite-us/ui';\nimport CurrencyField from '../../common/form/CurrencyField';\nimport DollarAmount from '../../components/DollarAmount';\nimport LineItem from './LineItem';\nimport validateCostAmount from '../../utils/validateCostAmount';\nimport validateUnitAmount from '../../utils/validateUnitAmount';\nimport usePreventWheel from '../../utils/usePreventWheel';\n\nconst AuthFormLineItem = (props) => (\n <LineItem\n fieldClassName=\"col-span-1 p-0 text-dark-grey\"\n valueClassName=\"col-span-2 m-0 p-0 text-dark-blue\"\n {...props}\n />\n);\n\nconst AuthorizationSubform = ({ feeScheduleProgram, formValues, assignReferralErrors }) => {\n const isCostBased = fspUtils.isCostPaymentType(feeScheduleProgram.payment_type);\n const showUnits = !isCostBased && feeScheduleProgram?.unit;\n const showRate = showUnits && feeScheduleProgram?.unit_rate > 0;\n const hasDatesSelected = !!(\n formValues?.paymentAuthForm?.service_start &&\n formValues?.paymentAuthForm?.service_end\n );\n\n usePreventWheel('authorization-request-amount-requested');\n\n return (\n <>\n <div className=\"space-y-6\">\n <h5 className=\"text-sm ui-form-field__label m-0\">\n AUTHORIZATION REQUEST\n </h5>\n <dl className=\"grid grid-cols-3 gap-x-6 gap-y-2\">\n <AuthFormLineItem field=\"Contracted Program\">\n {feeScheduleProgram.name}\n </AuthFormLineItem>\n <AuthFormLineItem field=\"Payment Approach\">\n {fspUtils.PAYMENT_TYPES[feeScheduleProgram.payment_type] || 'N/A'}\n </AuthFormLineItem>\n {showUnits && (\n <AuthFormLineItem field=\"Unit\">\n {feeScheduleProgram.unit}\n </AuthFormLineItem>\n )}\n {showRate && (\n <AuthFormLineItem field=\"Rate\">\n <DollarAmount value={feeScheduleProgram.unit_rate} convertCents />\n {' per '}\n {feeScheduleProgram.unit}\n </AuthFormLineItem>\n )}\n <AuthFormLineItem field=\"Program Cap\">\n {feeScheduleProgram.cap_information ? (\n <div dangerouslySetInnerHTML={{ __html: feeScheduleProgram.cap_information }} />\n ) : (\n 'No cap'\n )}\n </AuthFormLineItem>\n </dl>\n <hr className=\"p-0\" />\n <div className=\"grid grid-cols-3 gap-x-6\">\n <Field\n name=\"paymentAuthForm.amount_requested\"\n validate={(value) => {\n return isCostBased ? validateCostAmount(value) : validateUnitAmount(value);\n }}\n >\n {(params) => (isCostBased ? (\n <CurrencyField\n className=\"col-span-1 p-0\"\n id=\"authorization-request-amount-requested\"\n label=\"Amount Requested\"\n required\n {...params}\n />\n ) : (\n <InputField\n className=\"col-span-1 p-0\"\n id=\"authorization-request-amount-requested\"\n label=\"Amount Requested\"\n type=\"number\"\n required\n {...params}\n />\n ))}\n </Field>\n <div className=\"col-span-2 p-0 space-y-2\">\n <div className=\"font-heavy-font text-dark-grey\">Unit</div>\n <div className=\"capitalize\">\n {isCostBased ? 'Dollars' :\n pluralize(\n feeScheduleProgram.unit || '',\n formValues?.amount_requested?.value || 0,\n )}\n </div>\n </div>\n <div className=\"col-span-1 p-0\">\n <Field name=\"paymentAuthForm.service_start\">\n {(startProps) => (\n <Field name=\"paymentAuthForm.service_end\" validate={(value) => isRequired(value)}>\n {(endProps) => (\n <DurationField\n id=\"authorization-request-service-dates\"\n label=\"Service Delivery Date(s)\"\n startField={startProps}\n startFieldPath=\"startField\"\n endField={endProps}\n endFieldPath=\"endField\"\n required\n style={{ container: { width: 'unset' } }}\n />\n )}\n </Field>\n )}\n </Field>\n </div>\n </div>\n </div>\n {\n hasDatesSelected &&\n <>\n <hr className=\"mb-6\"/>\n <CapsInfo\n feeScheduleProgram={feeScheduleProgram}\n formValues={formValues}\n isCostBased={isCostBased}\n assignReferralErrors={assignReferralErrors}\n />\n </>\n }\n </>\n );\n};\n\nAuthorizationSubform.propTypes = {\n feeScheduleProgram: PropTypes.object.isRequired,\n formValues: PropTypes.object.isRequired,\n assignReferralErrors: PropTypes.func.isRequired,\n};\n\nexport default AuthorizationSubform;\n"],"mappings":"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"}
1
+ {"version":3,"file":"AuthorizationSubform.js","names":["React","PropTypes","Field","pluralize","fspUtils","CapsInfo","DurationField","InputField","CurrencyField","DollarAmount","LineItem","usePreventWheel","AuthFormLineItem","props","createElement","_extends","fieldClassName","valueClassName","AuthorizationSubform","_ref","_formValues$paymentAu","_formValues$paymentAu2","_formValues$amount_re","feeScheduleProgram","formValues","setReferralErrors","isCostBased","isCostPaymentType","payment_type","showUnits","unit","showRate","unit_rate","hasDatesSelected","paymentAuthForm","service_start","service_end","Fragment","className","field","name","PAYMENT_TYPES","value","convertCents","cap_information","dangerouslySetInnerHTML","__html","params","id","label","required","type","amount_requested","startProps","endProps","startField","startFieldPath","endField","endFieldPath","style","container","width","propTypes","object","isRequired","func"],"sources":["../../../src/pages/builder/AuthorizationSubform.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Field } from 'react-final-form';\nimport pluralize from 'pluralize';\nimport fspUtils from '@unite-us/client-utils/dist/utils/feeSchedulePrograms';\nimport CapsInfo from '../../components/service_authorization/CapsInfo';\nimport {\n DurationField,\n InputField,\n} from '@unite-us/ui';\nimport CurrencyField from '../../common/form/CurrencyField';\nimport DollarAmount from '../../components/DollarAmount';\nimport LineItem from './LineItem';\nimport usePreventWheel from '../../utils/usePreventWheel';\n\nconst AuthFormLineItem = (props) => (\n <LineItem\n fieldClassName=\"col-span-1 p-0 text-dark-grey\"\n valueClassName=\"col-span-2 m-0 p-0 text-dark-blue\"\n {...props}\n />\n);\n\nconst AuthorizationSubform = ({ feeScheduleProgram, formValues, setReferralErrors }) => {\n const isCostBased = fspUtils.isCostPaymentType(feeScheduleProgram.payment_type);\n const showUnits = !isCostBased && feeScheduleProgram?.unit;\n const showRate = showUnits && feeScheduleProgram?.unit_rate > 0;\n const hasDatesSelected = !!(\n formValues?.paymentAuthForm?.service_start &&\n formValues?.paymentAuthForm?.service_end\n );\n\n usePreventWheel('authorization-request-amount-requested');\n\n return (\n <>\n <div className=\"space-y-6\">\n <h5 className=\"text-sm ui-form-field__label m-0\">\n AUTHORIZATION REQUEST\n </h5>\n <dl className=\"grid grid-cols-3 gap-x-6 gap-y-2\">\n <AuthFormLineItem field=\"Contracted Program\">\n {feeScheduleProgram.name}\n </AuthFormLineItem>\n <AuthFormLineItem field=\"Payment Approach\">\n {fspUtils.PAYMENT_TYPES[feeScheduleProgram.payment_type] || 'N/A'}\n </AuthFormLineItem>\n {showUnits && (\n <AuthFormLineItem field=\"Unit\">\n {feeScheduleProgram.unit}\n </AuthFormLineItem>\n )}\n {showRate && (\n <AuthFormLineItem field=\"Rate\">\n <DollarAmount value={feeScheduleProgram.unit_rate} convertCents />\n {' per '}\n {feeScheduleProgram.unit}\n </AuthFormLineItem>\n )}\n <AuthFormLineItem field=\"Program Cap\">\n {feeScheduleProgram.cap_information ? (\n <div dangerouslySetInnerHTML={{ __html: feeScheduleProgram.cap_information }} />\n ) : (\n 'No cap'\n )}\n </AuthFormLineItem>\n </dl>\n <hr className=\"p-0\" />\n <div className=\"grid grid-cols-3 gap-x-6\">\n <Field\n name=\"paymentAuthForm.amount_requested\"\n >\n {(params) => (isCostBased ? (\n <CurrencyField\n className=\"col-span-1 p-0\"\n id=\"authorization-request-amount-requested\"\n label=\"Amount Requested\"\n required\n {...params}\n />\n ) : (\n <InputField\n className=\"col-span-1 p-0\"\n id=\"authorization-request-amount-requested\"\n label=\"Amount Requested\"\n type=\"number\"\n required\n {...params}\n />\n ))}\n </Field>\n <div className=\"col-span-2 p-0 space-y-2\">\n <div className=\"font-heavy-font text-dark-grey\">Unit</div>\n <div className=\"capitalize\">\n {isCostBased ? 'Dollars' :\n pluralize(\n feeScheduleProgram.unit || '',\n formValues?.amount_requested?.value || 0,\n )}\n </div>\n </div>\n <div className=\"col-span-1 p-0\">\n <Field name=\"paymentAuthForm.service_start\">\n {(startProps) => (\n <Field name=\"paymentAuthForm.service_end\">\n {(endProps) => (\n <DurationField\n id=\"authorization-request-service-dates\"\n label=\"Service Delivery Date(s)\"\n startField={startProps}\n startFieldPath=\"startField\"\n endField={endProps}\n endFieldPath=\"endField\"\n required\n style={{ container: { width: 'unset' } }}\n />\n )}\n </Field>\n )}\n </Field>\n </div>\n </div>\n </div>\n {\n hasDatesSelected &&\n <>\n <hr className=\"mb-6\"/>\n <CapsInfo\n feeScheduleProgram={feeScheduleProgram}\n formValues={formValues}\n isCostBased={isCostBased}\n setReferralErrors={setReferralErrors}\n />\n </>\n }\n </>\n );\n};\n\nAuthorizationSubform.propTypes = {\n feeScheduleProgram: PropTypes.object.isRequired,\n formValues: PropTypes.object.isRequired,\n setReferralErrors: PropTypes.func.isRequired,\n};\n\nexport default AuthorizationSubform;\n"],"mappings":"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"}
@@ -17,17 +17,17 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
17
17
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18
18
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
19
19
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
20
- import React, { useCallback, useEffect, useState, useRef } from 'react';
21
- import { isEmpty, get, compact, intersectionBy } from 'lodash';
20
+ import React, { useEffect, useState, useRef, useCallback } from 'react';
21
+ import { isEqual, isEmpty, get, some, values, intersectionBy, compact } from 'lodash';
22
22
  import { useNavigate, useLocation } from 'react-router-dom';
23
- import { Dialog, Icon } from '@unite-us/ui';
23
+ import { Icon } from '@unite-us/ui';
24
24
  import { setData, useAppCreateReferralContext } from '../../context/AppCreateReferralProvider';
25
25
  import StepHeader from '../../components/StepHeader';
26
26
  import { REFERRAL_BUILDER_DESCRIPTION } from './constants';
27
27
  import AboutGroupedReferralsModal from './AboutGroupedReferralsModal';
28
28
  import ReferralCard from './ReferralCard';
29
29
  import ReferralBuilderForm from './ReferralBuilderForm';
30
- import { isUnlistedProgram, getReferralSubtitle, mapReferralErrorsToIndex, generateErrorMessage, hasOffPlatformReferrals, isEmptyErrors } from './utils';
30
+ import { isUnlistedProgram, getReferralSubtitle, initializeReferralErrors, generateErrorMessage, hasOffPlatformReferrals, isEmptyErrors, removeErrorByIndex } from './utils';
31
31
  import useBuildReferrals from './useBuildReferrals';
32
32
  import CreateReferralContainer from '../../components/CreateReferralContainer';
33
33
  import NavButtons from '../../components/NavButtons';
@@ -87,8 +87,8 @@ export default function ReferralBuilder() {
87
87
  setSelectedIndex = _useState8[1];
88
88
  var _useState9 = useState({}),
89
89
  _useState10 = _slicedToArray(_useState9, 2),
90
- errors = _useState10[0],
91
- setErrors = _useState10[1];
90
+ fieldErrors = _useState10[0],
91
+ setFieldErrors = _useState10[1];
92
92
  var _useState11 = useState(false),
93
93
  _useState12 = _slicedToArray(_useState11, 2),
94
94
  nextClicked = _useState12[0],
@@ -120,10 +120,36 @@ export default function ReferralBuilder() {
120
120
  setNetworksUnlistedProgram = _useState24[1];
121
121
  var hasDraftReferral = (draftState === null || draftState === void 0 ? void 0 : draftState.state) === 'draft';
122
122
  var referralBuilderTitle = crtb1239AdaptDraftReferralFlow && hasDraftReferral ? 'Edit Your Referrals' : 'Prepare Your Referrals';
123
+ var errors = Object.keys(fieldErrors).reduce(function (acc, index) {
124
+ var fieldError = fieldErrors[index];
125
+ acc[index] = {
126
+ service: fieldError === null || fieldError === void 0 ? void 0 : fieldError.service,
127
+ network: fieldError === null || fieldError === void 0 ? void 0 : fieldError.network,
128
+ primary_worker: fieldError === null || fieldError === void 0 ? void 0 : fieldError.primary_worker,
129
+ description: fieldError === null || fieldError === void 0 ? void 0 : fieldError.description,
130
+ amount_requested: (fieldError === null || fieldError === void 0 ? void 0 : fieldError.amount_requested) || (fieldError === null || fieldError === void 0 ? void 0 : fieldError.amount_exceeded),
131
+ service_end: (fieldError === null || fieldError === void 0 ? void 0 : fieldError.service_end) || (fieldError === null || fieldError === void 0 ? void 0 : fieldError.invalid_insurance_auth_dates),
132
+ passthrough_dates: fieldError === null || fieldError === void 0 ? void 0 : fieldError.passthrough_dates,
133
+ opened_date: fieldError === null || fieldError === void 0 ? void 0 : fieldError.opened_date
134
+ };
135
+ return acc;
136
+ }, {});
137
+ var setReferralErrors = function setReferralErrors(referralIndex, newErrors) {
138
+ setFieldErrors(function (prevFieldErrors) {
139
+ var currentErrors = prevFieldErrors[referralIndex];
140
+ var updatedErrors = _objectSpread(_objectSpread({}, currentErrors), newErrors);
141
+ if (isEqual(updatedErrors, currentErrors)) {
142
+ return prevFieldErrors;
143
+ }
144
+ return _objectSpread(_objectSpread({}, prevFieldErrors), {}, _defineProperty({}, referralIndex, updatedErrors));
145
+ });
146
+ };
123
147
  var onReferralsBuilt = function onReferralsBuilt(groupedReferrals) {
124
148
  if (!isEmpty(groupedReferrals)) {
125
- var _errors = mapReferralErrorsToIndex(groupedReferrals, pays3551AuthInSuperset);
126
- setErrors(_errors);
149
+ var initErrors = initializeReferralErrors(groupedReferrals, pays3551AuthInSuperset, showOpenedDate);
150
+ groupedReferrals.forEach(function (_referral, index) {
151
+ setReferralErrors(index, initErrors[index]);
152
+ });
127
153
  }
128
154
  };
129
155
  var _useBuildReferrals = useBuildReferrals(onReferralsBuilt),
@@ -217,10 +243,6 @@ export default function ReferralBuilder() {
217
243
  var onReferralCardClick = function onReferralCardClick(index) {
218
244
  setSelectedIndex(index);
219
245
  };
220
- useEffect(function () {
221
- var errors = mapReferralErrorsToIndex(referrals, pays3551AuthInSuperset, showOpenedDate);
222
- setErrors(errors);
223
- }, [selectedIndex, referrals]);
224
246
  useEffect(function () {
225
247
  fetchContactDocuments(person.id).then(function (result) {
226
248
  setDocuments(result);
@@ -266,56 +288,55 @@ export default function ReferralBuilder() {
266
288
  }));
267
289
  }, 0);
268
290
  };
291
+ var firstIndexWithErrors = Object.entries(errors).findIndex(function (_ref2) {
292
+ var _ref3 = _slicedToArray(_ref2, 2),
293
+ _index = _ref3[0],
294
+ values = _ref3[1];
295
+ return Object.values(values).some(Boolean);
296
+ });
269
297
  var focusErrors = function focusErrors() {
270
- if (isEmpty(errors[selectedIndex])) {
271
- var firstErrorIndex = parseInt(Object.keys(errors)[0]);
272
- setSelectedIndex(firstErrorIndex);
273
- setFocus(firstErrorIndex);
274
- } else {
275
- setFocus(selectedIndex);
298
+ var index = selectedIndex;
299
+ if (!some(values(errors[index]), Boolean)) {
300
+ index = firstIndexWithErrors;
301
+ setSelectedIndex(index);
276
302
  }
303
+ setFocus(index);
277
304
  };
278
305
  var onNextClick = function onNextClick() {
279
306
  if (isEmptyErrors(errors)) {
280
307
  return navigate('/create/supporting-info');
281
308
  }
282
- if (isEmpty(errors[selectedIndex])) {
283
- var firstErrorIndex = parseInt(Object.keys(errors)[0]);
284
- setSelectedIndex(firstErrorIndex);
285
- setFocus(firstErrorIndex);
286
- } else {
287
- setFocus(selectedIndex);
288
- }
289
309
  focusErrors();
290
310
  setNextClicked(true);
291
311
  };
292
312
  var setFocus = function setFocus(index) {
293
313
  setTimeout(function () {
294
- if (errors[index].includes('network')) {
314
+ var _errors$index, _errors$index2, _errors$index3, _errors$index4, _errors$index5, _errors$index6;
315
+ if ((_errors$index = errors[index]) !== null && _errors$index !== void 0 && _errors$index.network) {
295
316
  var _form$current;
296
317
  (_form$current = form.current) === null || _form$current === void 0 || (_form$current = _form$current.mutators) === null || _form$current === void 0 || _form$current.setFieldTouched('network', true);
297
318
  var networkField = document.getElementById("network-selection").parentElement.parentElement;
298
319
  return networkField.focus();
299
320
  }
300
- if (errors[index].includes('amount_requested')) {
321
+ if ((_errors$index2 = errors[index]) !== null && _errors$index2 !== void 0 && _errors$index2.amount_requested) {
301
322
  var _form$current2;
302
323
  (_form$current2 = form.current) === null || _form$current2 === void 0 || (_form$current2 = _form$current2.mutators) === null || _form$current2 === void 0 || _form$current2.setFieldTouched('paymentAuthForm.amount_requested', true);
303
324
  var amountRequested = document.getElementById("authorization-request-amount-requested");
304
325
  return amountRequested.focus();
305
326
  }
306
- if (errors[index].includes('paymentAuthForm.service_end')) {
327
+ if ((_errors$index3 = errors[index]) !== null && _errors$index3 !== void 0 && _errors$index3.service_end || (_errors$index4 = errors[index]) !== null && _errors$index4 !== void 0 && _errors$index4.passthrough_dates) {
307
328
  var _form$current3;
308
329
  (_form$current3 = form.current) === null || _form$current3 === void 0 || (_form$current3 = _form$current3.mutators) === null || _form$current3 === void 0 || _form$current3.setFieldTouched('paymentAuthForm.service_end', true);
309
330
  var selectDatesButton = document.getElementById("authorization-request-service-dates");
310
331
  return selectDatesButton.focus();
311
332
  }
312
- if (errors[index].includes('description')) {
333
+ if ((_errors$index5 = errors[index]) !== null && _errors$index5 !== void 0 && _errors$index5.description) {
313
334
  var _form$current4;
314
335
  (_form$current4 = form.current) === null || _form$current4 === void 0 || (_form$current4 = _form$current4.mutators) === null || _form$current4 === void 0 || _form$current4.setFieldTouched('description', true);
315
336
  var descriptionField = document.getElementById("referral-description");
316
337
  return descriptionField.focus();
317
338
  }
318
- if (errors[index].includes('primary_worker')) {
339
+ if ((_errors$index6 = errors[index]) !== null && _errors$index6 !== void 0 && _errors$index6.primary_worker) {
319
340
  var _form$current5;
320
341
  (_form$current5 = form.current) === null || _form$current5 === void 0 || (_form$current5 = _form$current5.mutators) === null || _form$current5 === void 0 || _form$current5.setFieldTouched('primaryWorker', true);
321
342
  var primaryWorkerField = document.getElementById("primary-worker").parentElement.parentElement;
@@ -336,6 +357,8 @@ export default function ReferralBuilder() {
336
357
  referrals[index] = _objectSpread(_objectSpread({}, referrals[index]), {}, {
337
358
  programs: [].concat(_toConsumableArray(referrals[index].programs), [program])
338
359
  });
360
+ var newErrors = removeErrorByIndex(errors, selectedIndex);
361
+ setFieldErrors(newErrors);
339
362
  dispatch(setData({
340
363
  referrals: compact(referrals)
341
364
  }));
@@ -375,6 +398,8 @@ export default function ReferralBuilder() {
375
398
  selectedPrograms: _toConsumableArray(newSelectedPrograms)
376
399
  }));
377
400
  if (!referrals[selectedIndex]) {
401
+ var newErrors = removeErrorByIndex(errors, selectedIndex);
402
+ setFieldErrors(newErrors);
378
403
  setSelectedIndex(0);
379
404
  }
380
405
  };
@@ -386,14 +411,6 @@ export default function ReferralBuilder() {
386
411
  referrals: referrals
387
412
  }));
388
413
  };
389
- var assignReferralErrors = useCallback(function () {
390
- var errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
391
- setErrors(function (previousErrors) {
392
- var modelErrors = [].concat(_toConsumableArray(mapReferralErrorsToIndex(referrals, pays3551AuthInSuperset)[selectedIndex] || []), _toConsumableArray(errors));
393
- var isInvalid = isEmpty([modelErrors]);
394
- return _objectSpread(_objectSpread({}, previousErrors), !isInvalid && _defineProperty({}, selectedIndex, _toConsumableArray(modelErrors)));
395
- });
396
- }, [selectedIndex, referrals]);
397
414
  var navigateBack = function navigateBack() {
398
415
  return CALLBACKS.onNavigateBack ? CALLBACKS.onNavigateBack() : navigate(-1);
399
416
  };
@@ -402,7 +419,7 @@ export default function ReferralBuilder() {
402
419
  };
403
420
  var createReferrals = useCreateReferrals();
404
421
  var handleSaveDraftReferral = /*#__PURE__*/function () {
405
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
422
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
406
423
  var onSaveDraftReferral;
407
424
  return _regeneratorRuntime().wrap(function _callee$(_context) {
408
425
  while (1) switch (_context.prev = _context.next) {
@@ -431,7 +448,7 @@ export default function ReferralBuilder() {
431
448
  }, _callee);
432
449
  }));
433
450
  return function handleSaveDraftReferral() {
434
- return _ref3.apply(this, arguments);
451
+ return _ref4.apply(this, arguments);
435
452
  };
436
453
  }();
437
454
  var changeWidthReferralCard = function changeWidthReferralCard() {
@@ -566,7 +583,7 @@ export default function ReferralBuilder() {
566
583
  updateAttachments: updateAttachments,
567
584
  source: source,
568
585
  networksUnlistedProgram: networksUnlistedProgram,
569
- assignReferralErrors: assignReferralErrors
586
+ setReferralErrors: setReferralErrors
570
587
  }) : null)) : /*#__PURE__*/React.createElement(NoReferralsDisplay, {
571
588
  crtb1239AdaptDraftReferralFlow: crtb1239AdaptDraftReferralFlow,
572
589
  hasDraftReferral: hasDraftReferral,