@unite-us/app-create-referral 0.15.170 → 0.15.171
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AppReferrals.js.map +1 -1
- package/dist/AppReferrals.scss +2 -2
- package/dist/AppReferrals.test.js +6 -6
- package/dist/AppReferrals.test.js.map +1 -1
- package/dist/__testUtils__/mockServer/handlers.js +6 -6
- package/dist/__testUtils__/mockServer/handlers.js.map +1 -1
- package/dist/__testUtils__/mockServer/server.js.map +1 -1
- package/dist/__testUtils__/test-utils.js +5 -5
- package/dist/__testUtils__/test-utils.js.map +1 -1
- package/dist/actions/Document/Contact/Group/fetchCaseDocuments.js.map +1 -1
- package/dist/actions/Document/Contact/Group/fetchContactDocuments.js.map +1 -1
- package/dist/actions/Document/Contact/Group/fileUploadUtils.js.map +1 -1
- package/dist/actions/Group/fetchCoreGroupForms.js.map +1 -1
- package/dist/actions/Referral/cannotMoveToReferralReasons.js.map +1 -1
- package/dist/actions/Referral/fetchCoreServices.js.map +1 -1
- package/dist/actions/Referral/fetchPrimaryWorkers.js +0 -1
- package/dist/actions/Referral/fetchPrimaryWorkers.js.map +1 -1
- package/dist/actions/Referral/removeReferralProgram.js.map +1 -1
- package/dist/api/ApiHooks.js.map +1 -1
- package/dist/api/config.js.map +1 -1
- package/dist/common/form/DocumentUploader/components/ContactDocumentsSelector.js.map +1 -1
- package/dist/common/form/DocumentUploader/components/DocumentsListView.js.map +1 -1
- package/dist/common/form/ErrorMessage/index.js.map +1 -1
- package/dist/common/form/FileUploadV2/FileUpload.js.map +1 -1
- package/dist/common/form/FileUploadV2/FileUpload.test.js.map +1 -1
- package/dist/common/form/FileUploadV2/components/FilePreviewWrapper.js.map +1 -1
- package/dist/common/form/FileUploadV2/components/FilePreviewWrapper.test.js.map +1 -1
- package/dist/common/form/FileUploadV2/stylesheets/FileUpload.scss +8 -6
- package/dist/common/form/FormForm/index.js.map +1 -1
- package/dist/common/utils/utils.js.map +1 -1
- package/dist/components/Card.js.map +1 -1
- package/dist/components/CreateReferralContainer.js +1 -2
- package/dist/components/CreateReferralContainer.js.map +1 -1
- package/dist/components/DollarAmount.js.map +1 -1
- package/dist/components/ExpandableButton.js.map +1 -1
- package/dist/components/LineItem.js.map +1 -1
- package/dist/components/NavButtons.js +8 -8
- package/dist/components/NavButtons.js.map +1 -1
- package/dist/components/NoReferralsDisplay.js +3 -4
- package/dist/components/NoReferralsDisplay.js.map +1 -1
- package/dist/components/ReferralStepper.js.map +1 -1
- package/dist/components/SearchableField.js.map +1 -1
- package/dist/components/StepHeader.js.map +1 -1
- package/dist/components/Stepper.js +10 -10
- package/dist/components/Stepper.js.map +1 -1
- package/dist/components/modal/Dialog.js +1 -1
- package/dist/components/modal/Dialog.js.map +1 -1
- package/dist/components/modal/Dialog.scss +7 -4
- package/dist/components/service_authorization/AuthorizationSpendCard.js.map +1 -1
- package/dist/components/service_authorization/CapsInfo.js.map +1 -1
- package/dist/components/service_authorization/CaseStatus.js.map +1 -1
- package/dist/components/service_authorization/PreviousAuthorizationRequestsDetails.js +1 -1
- package/dist/components/service_authorization/PreviousAuthorizationRequestsDetails.js.map +1 -1
- package/dist/components/service_authorization/PreviousAuthorizationRequestsDetails.scss +1 -1
- package/dist/components/service_authorization/ReferralAuthSpendExpandable.js.map +1 -1
- package/dist/components/service_authorization/ReferralAuthorizationRequestSummary.js +2 -2
- package/dist/components/service_authorization/ReferralAuthorizationRequestSummary.js.map +1 -1
- package/dist/components/service_authorization/Spend.js +0 -1
- package/dist/components/service_authorization/Spend.js.map +1 -1
- package/dist/components/service_authorization/formatShortDate.js.map +1 -1
- package/dist/components/service_authorization/messageConstants.js.map +1 -1
- package/dist/components/spinners/OverlaySpinner/OverlaySpinner.js.map +1 -1
- package/dist/components/spinners/Spinner/Spinner.js.map +1 -1
- package/dist/components/spinners/Spinner/Spinner.scss +28 -12
- package/dist/constants/callOrLog.js.map +1 -1
- package/dist/constants/enums.js +8 -8
- package/dist/constants/enums.js.map +1 -1
- package/dist/constants/eventConstants.js.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/context/AppCreateReferralProvider.js +4 -4
- package/dist/context/AppCreateReferralProvider.js.map +1 -1
- package/dist/context/state.js.map +1 -1
- package/dist/context/withAppCreateReferralContext.js +1 -1
- package/dist/context/withAppCreateReferralContext.js.map +1 -1
- package/dist/hooks/__tests__/useCreateReferrals.test.js +5 -5
- package/dist/hooks/__tests__/useCreateReferrals.test.js.map +1 -1
- package/dist/hooks/sendReferral.js +3 -3
- package/dist/hooks/sendReferral.js.map +1 -1
- package/dist/hooks/useClinicalModificationOptions.js.map +1 -1
- package/dist/hooks/useCreateReferrals.js +4 -5
- package/dist/hooks/useCreateReferrals.js.map +1 -1
- package/dist/hooks/useCreateResourceList.js +2 -2
- package/dist/hooks/useCreateResourceList.js.map +1 -1
- package/dist/hooks/useCreateShareEvent.js +1 -1
- package/dist/hooks/useCreateShareEvent.js.map +1 -1
- package/dist/hooks/useForwardReferral.js +3 -4
- package/dist/hooks/useForwardReferral.js.map +1 -1
- package/dist/hooks/usePerson.js +5 -5
- package/dist/hooks/usePerson.js.map +1 -1
- package/dist/hooks/useUpdateResourceList.js +1 -1
- package/dist/hooks/useUpdateResourceList.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pages/builder/ReferralBuilder.js.map +1 -1
- package/dist/pages/builder/ReferralBuilderForm.js.map +1 -1
- package/dist/pages/builder/ReferralBuilderForm.scss +0 -1
- package/dist/pages/builder/ReferralBuilderFormContent.js +1 -1
- package/dist/pages/builder/ReferralBuilderFormContent.js.map +1 -1
- package/dist/pages/builder/__tests__/AuthRequiredClinicalCodes.test.js +8 -8
- package/dist/pages/builder/__tests__/AuthRequiredClinicalCodes.test.js.map +1 -1
- package/dist/pages/builder/__tests__/AuthRequiredNonFundedPrograms.test.js +8 -8
- package/dist/pages/builder/__tests__/AuthRequiredNonFundedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/AuthorizationRequiredPrograms.test.js +7 -7
- package/dist/pages/builder/__tests__/AuthorizationRequiredPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/NonSensitiveGroupedPrograms.test.js +26 -26
- package/dist/pages/builder/__tests__/NonSensitiveGroupedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/NonSensitiveSingleProgram.test.js +21 -21
- package/dist/pages/builder/__tests__/NonSensitiveSingleProgram.test.js.map +1 -1
- package/dist/pages/builder/__tests__/ReferralBuilder.test.js +12 -12
- package/dist/pages/builder/__tests__/ReferralBuilder.test.js.map +1 -1
- package/dist/pages/builder/__tests__/ReferralBuilderForm.attachments.test.js.map +1 -1
- package/dist/pages/builder/__tests__/SensitiveProviderGroupedPrograms.test.js +17 -17
- package/dist/pages/builder/__tests__/SensitiveProviderGroupedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/SensitiveServiceGroupedPrograms.test.js +10 -10
- package/dist/pages/builder/__tests__/SensitiveServiceGroupedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/SensitiveServiceSensitiveProviderGroupedPrograms.test.js +13 -13
- package/dist/pages/builder/__tests__/SensitiveServiceSensitiveProviderGroupedPrograms.test.js.map +1 -1
- package/dist/pages/builder/__tests__/SensitiveSingleProgram.test.js +18 -18
- package/dist/pages/builder/__tests__/SensitiveSingleProgram.test.js.map +1 -1
- package/dist/pages/builder/__tests__/buildDraftState.test.js.map +1 -1
- package/dist/pages/builder/__tests__/buildGroupedReferrals.networkBug.test.js.map +1 -1
- package/dist/pages/builder/buildDraftState.js +2 -3
- package/dist/pages/builder/buildDraftState.js.map +1 -1
- package/dist/pages/builder/clearDraftState.js +0 -1
- package/dist/pages/builder/clearDraftState.js.map +1 -1
- package/dist/pages/builder/components/AboutGroupedReferralsModal.js.map +1 -1
- package/dist/pages/builder/components/AuthorizationSubform.js.map +1 -1
- package/dist/pages/builder/components/ChooseOneServiceTypeModal.js +1 -1
- package/dist/pages/builder/components/ChooseOneServiceTypeModal.js.map +1 -1
- package/dist/pages/builder/components/DetailsDrawer.js.map +1 -1
- package/dist/pages/builder/components/ProgramHeader.js +4 -4
- package/dist/pages/builder/components/ProgramHeader.js.map +1 -1
- package/dist/pages/builder/components/ProgramMenu.js +3 -3
- package/dist/pages/builder/components/ProgramMenu.js.map +1 -1
- package/dist/pages/builder/components/ReferralBuilderContent.js +1 -1
- package/dist/pages/builder/components/ReferralBuilderContent.js.map +1 -1
- package/dist/pages/builder/components/ReferralCard.js +4 -5
- package/dist/pages/builder/components/ReferralCard.js.map +1 -1
- package/dist/pages/builder/components/ReferralClientNeedsField.js.map +1 -1
- package/dist/pages/builder/components/ReferralProgramCard.js +1 -1
- package/dist/pages/builder/components/ReferralProgramCard.js.map +1 -1
- package/dist/pages/builder/components/ReferralProgramMenu.js +0 -1
- package/dist/pages/builder/components/ReferralProgramMenu.js.map +1 -1
- package/dist/pages/builder/constants.js.map +1 -1
- package/dist/pages/builder/hooks/useBuildReferrals.js +2 -2
- package/dist/pages/builder/hooks/useBuildReferrals.js.map +1 -1
- package/dist/pages/builder/hooks/useReferralMutations.js.map +1 -1
- package/dist/pages/builder/utils/buildGroupedReferrals.js.map +1 -1
- package/dist/pages/builder/utils/buildGroupedReferralsHelpers.js.map +1 -1
- package/dist/pages/builder/utils/formatProgramDetail.js.map +1 -1
- package/dist/pages/builder/utils/referralBuilderFormDraftAuth.js.map +1 -1
- package/dist/pages/builder/utils/referralBuilderFormUtils.js.map +1 -1
- package/dist/pages/builder/utils/referralBuilderFormValidation.js.map +1 -1
- package/dist/pages/builder/utils/referralBuilderUtils.js.map +1 -1
- package/dist/pages/builder/utils.js +0 -1
- package/dist/pages/builder/utils.js.map +1 -1
- package/dist/pages/review/DeleteReferralModal.js +0 -1
- package/dist/pages/review/DeleteReferralModal.js.map +1 -1
- package/dist/pages/review/DropdownMultiplesReferrals.js +1 -2
- package/dist/pages/review/DropdownMultiplesReferrals.js.map +1 -1
- package/dist/pages/review/ReferralsSent.js +5 -5
- package/dist/pages/review/ReferralsSent.js.map +1 -1
- package/dist/pages/review/Review.js +5 -6
- package/dist/pages/review/Review.js.map +1 -1
- package/dist/pages/review/SuccessReferralRedesign.js.map +1 -1
- package/dist/pages/review/__tests__/CallbackNotifications.test.js +8 -8
- package/dist/pages/review/__tests__/CallbackNotifications.test.js.map +1 -1
- package/dist/pages/review/__tests__/ReferralsSent.test.js +11 -11
- package/dist/pages/review/__tests__/ReferralsSent.test.js.map +1 -1
- package/dist/pages/review/__tests__/Review.test.js +61 -61
- package/dist/pages/review/__tests__/Review.test.js.map +1 -1
- package/dist/pages/review/__tests__/data.js +1336 -1336
- package/dist/pages/review/__tests__/data.js.map +1 -1
- package/dist/pages/review/__tests__/referralStatusRedesign.test.js.map +1 -1
- package/dist/pages/review/constants.js.map +1 -1
- package/dist/pages/review/referralStatusRedesign.js +1 -1
- package/dist/pages/review/referralStatusRedesign.js.map +1 -1
- package/dist/pages/supporting-info/SupportingInfo.js +0 -3
- package/dist/pages/supporting-info/SupportingInfo.js.map +1 -1
- package/dist/pages/supporting-info/SupportingInfo.scss +2 -3
- package/dist/pages/supporting-info/__tests__/SupportingInfo.test.js +17 -17
- package/dist/pages/supporting-info/__tests__/SupportingInfo.test.js.map +1 -1
- package/dist/pages/supporting-info/__tests__/data.js +8 -8
- package/dist/pages/supporting-info/__tests__/data.js.map +1 -1
- package/dist/reportWebVitals.js.map +1 -1
- package/dist/setupTests.js.map +1 -1
- package/dist/styles/mixins.scss +46 -39
- package/dist/styles/variables.scss +5 -4
- package/dist/utils/__tests__/addHttpIfNeeded.test.js +6 -6
- package/dist/utils/__tests__/addHttpIfNeeded.test.js.map +1 -1
- package/dist/utils/__tests__/attachmentUtils.test.js.map +1 -1
- package/dist/utils/__tests__/canChangeHoldReason.test.js.map +1 -1
- package/dist/utils/__tests__/checkRoles.test.js +15 -15
- package/dist/utils/__tests__/checkRoles.test.js.map +1 -1
- package/dist/utils/attachmentUtils.js.map +1 -1
- package/dist/utils/canAccept.js +4 -4
- package/dist/utils/canAccept.js.map +1 -1
- package/dist/utils/canChangeHoldReason.js +1 -1
- package/dist/utils/canChangeHoldReason.js.map +1 -1
- package/dist/utils/canHoldForReview.js +4 -4
- package/dist/utils/canHoldForReview.js.map +1 -1
- package/dist/utils/canReject.js.map +1 -1
- package/dist/utils/checkRoles.js +7 -7
- package/dist/utils/checkRoles.js.map +1 -1
- package/dist/utils/getProgramServicesPayload.js +1 -1
- package/dist/utils/getProgramServicesPayload.js.map +1 -1
- package/dist/utils/handleDraftSaveResponse.js.map +1 -1
- package/dist/utils/hasUserRole.js.map +1 -1
- package/dist/utils/isReferralForwarded.js +2 -2
- package/dist/utils/isReferralForwarded.js.map +1 -1
- package/dist/utils/referralToConsent.js +1 -1
- package/dist/utils/referralToConsent.js.map +1 -1
- package/dist/utils/useDebounce.js +1 -1
- package/dist/utils/useDebounce.js.map +1 -1
- package/dist/utils/validateCostAmount.js.map +1 -1
- package/dist/utils/validateUnitAmount.js.map +1 -1
- package/package.json +7 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReferralProgramCard.js","names":["React","useState","useEffect","PropTypes","Icon","getProgramStatusDisplay","isUnlistedProgram","DetailsDrawer","formatForProgramDetail","ProgramMenu","ProgramHeader","jsx","_jsx","jsxs","_jsxs","ReferralProgramCard","_ref","program","onClick","isOON","menuIsOpen","unselected","referral","cannotMoveReasons","removeProgram","moveToNewReferral","moveToExistingReferral","canChangePrograms","selectedProgram","setSelectedProgram","undefined","currentProgram","setCurrentProgram","programStatus","receiving_referrals","reasonMenuIsOpen","setReasonMenuIsOpen","moveToReferralIndex","setMoveToReferralIndex","preventUngroup","prevent_ungroup","moveToNewReferralDisabled","programs","length","icon","iconClasses","onMoveToExistingReferralClick","index","focusThreeDotIcon","onMoveToExistingReferralReasonsHover","onMoveToNewReferralClick","onRemoveClick","name","id","service","setTimeout","element","document","querySelector","parentElement","focus","isLoadingDetails","setIsLoadingDetails","onDetailsClick","formatted","renderDetailsButton","type","className","children","size","color","renderProgramMenu","renderThreeDotIcon","ariaLabel","renderWithDetails","isLoading","propTypes","shape","string","isRequired","bool","func","array","object","defaultProps"],"sources":["../../../../src/pages/builder/components/ReferralProgramCard.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { PropTypes } from 'prop-types';\nimport { Icon } from '@unite-us/app-components';\nimport { getProgramStatusDisplay, isUnlistedProgram } from '../utils';\nimport DetailsDrawer from './DetailsDrawer';\nimport { formatForProgramDetail } from '../utils/formatProgramDetail';\nimport ProgramMenu from './ProgramMenu';\nimport ProgramHeader from './ProgramHeader';\n\nexport function ReferralProgramCard({\n program,\n onClick,\n isOON,\n menuIsOpen,\n unselected,\n referral,\n cannotMoveReasons,\n removeProgram,\n moveToNewReferral,\n moveToExistingReferral,\n canChangePrograms,\n}) {\n const [selectedProgram, setSelectedProgram] = useState(undefined);\n const [currentProgram, setCurrentProgram] = useState(undefined);\n const programStatus = getProgramStatusDisplay(program.receiving_referrals, isOON);\n const [reasonMenuIsOpen, setReasonMenuIsOpen] = useState(false);\n const [moveToReferralIndex, setMoveToReferralIndex] = useState(null);\n const preventUngroup = referral.prevent_ungroup;\n const moveToNewReferralDisabled = referral.programs.length < 2 || preventUngroup;\n const icon = menuIsOpen ? \"CrossCircleO\" : \"EllipsisV\";\n const iconClasses = `fill-current text-blue rotate-90 ${menuIsOpen ? 'w-6 h-6' : ''}`;\n\n const onMoveToExistingReferralClick = (index) => {\n setMoveToReferralIndex(index + 1);\n\n if (cannotMoveReasons[index].length) {\n setReasonMenuIsOpen(true);\n } else {\n moveToExistingReferral(index, program);\n }\n focusThreeDotIcon();\n }\n\n const onMoveToExistingReferralReasonsHover = (index) => {\n setMoveToReferralIndex(index + 1);\n\n if (cannotMoveReasons[index].length) {\n setReasonMenuIsOpen(true);\n }\n focusThreeDotIcon();\n }\n\n const onMoveToNewReferralClick = () => {\n if (preventUngroup) return;\n\n moveToNewReferral(program);\n setReasonMenuIsOpen(false);\n focusThreeDotIcon();\n }\n\n const onRemoveClick = () => {\n removeProgram(program.name, program.id, referral.service.id);\n focusThreeDotIcon();\n }\n\n const focusThreeDotIcon = () => {\n setTimeout(() => {\n const element = document.querySelector('#edit_referral_groupings');\n if (element && element.parentElement) {\n element.parentElement.focus();\n }\n }, 100); \n }\n\n useEffect(() => {\n if (!menuIsOpen) {\n setReasonMenuIsOpen(false);\n }\n }, [menuIsOpen])\n\n const [isLoadingDetails, setIsLoadingDetails] = useState(false);\n\n const onDetailsClick = async () => {\n if (currentProgram) {\n setSelectedProgram(currentProgram);\n return;\n }\n setIsLoadingDetails(true);\n const formatted = await formatForProgramDetail(program);\n setCurrentProgram(formatted);\n setSelectedProgram(formatted);\n setIsLoadingDetails(false);\n };\n\n const renderDetailsButton = () => {\n if (isUnlistedProgram(program)) return;\n\n return (\n <button\n type=\"button\"\n onClick={onDetailsClick}\n className=\"text-current-blue z-0 flex items-center\"\n >\n <Icon icon=\"Eye\" className=\"mr-1\" size={20} color=\"action-blue\" />\n Details\n </button>\n );\n };\n\n const renderProgramMenu = () => (\n <ProgramMenu\n menuIsOpen={menuIsOpen}\n onClick={onClick}\n program={program}\n unselected={unselected}\n preventUngroup={preventUngroup}\n onMoveToExistingReferralClick={onMoveToExistingReferralClick}\n onMoveToExistingReferralReasonsHover={onMoveToExistingReferralReasonsHover}\n moveToNewReferralDisabled={moveToNewReferralDisabled}\n onMoveToNewReferralClick={onMoveToNewReferralClick}\n setReasonMenuIsOpen={setReasonMenuIsOpen}\n onRemoveClick={onRemoveClick}\n reasonMenuIsOpen={reasonMenuIsOpen}\n moveToReferralIndex={moveToReferralIndex}\n cannotMoveReasons={cannotMoveReasons}\n />\n );\n\n const renderThreeDotIcon = () => (\n <Icon\n id='edit_referral_groupings'\n icon={icon}\n className={iconClasses}\n onClick={() => onClick(program?.id)}\n ariaLabel=\"Edit referral groupings\"\n />\n );\n\n const renderWithDetails = () => (\n <div className=\"flex my-4\">\n <div className=\"flex-auto p-0\">\n <div className=\"grid grid-cols-12 bg-white border border-solid border-blue-border rounded\">\n <div className=\"col-span-10 md:col-span-8 px-5 py-2\">\n <ProgramHeader program={program} programStatus={programStatus} />\n </div>\n <div className=\"col-span-2 md:col-span-4 flex justify-center items-center\">\n <DetailsDrawer selectedProgram={selectedProgram} setSelectedProgram={setSelectedProgram} isLoading={isLoadingDetails} />\n {renderDetailsButton()}\n </div>\n </div>\n </div>\n <div className=\"p-0 flex justify-center items-center ml-4 w-8\">\n {canChangePrograms && renderThreeDotIcon()}\n </div>\n {canChangePrograms && renderProgramMenu()}\n </div>\n );\n\n return renderWithDetails();\n}\n\nReferralProgramCard.propTypes = {\n program: PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n receiving_referrals: PropTypes.bool,\n }).isRequired,\n onClick: PropTypes.func.isRequired,\n isOON: PropTypes.bool.isRequired,\n menuIsOpen: PropTypes.bool,\n unselected: PropTypes.array,\n referral: PropTypes.object.isRequired,\n moveToNewReferral: PropTypes.func.isRequired,\n moveToExistingReferral: PropTypes.func.isRequired,\n canChangePrograms: PropTypes.bool,\n cannotMoveReasons: PropTypes.object,\n}\n\nReferralProgramCard.defaultProps = {\n menuIsOpen: false,\n unselected: [],\n canChangePrograms: true,\n cannotMoveReasons: {},\n}\n\nexport default ReferralProgramCard;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ReferralProgramCard.js","names":["React","useState","useEffect","PropTypes","Icon","getProgramStatusDisplay","isUnlistedProgram","DetailsDrawer","formatForProgramDetail","ProgramMenu","ProgramHeader","jsx","_jsx","jsxs","_jsxs","ReferralProgramCard","_ref","program","onClick","isOON","menuIsOpen","unselected","referral","cannotMoveReasons","removeProgram","moveToNewReferral","moveToExistingReferral","canChangePrograms","selectedProgram","setSelectedProgram","undefined","currentProgram","setCurrentProgram","programStatus","receiving_referrals","reasonMenuIsOpen","setReasonMenuIsOpen","moveToReferralIndex","setMoveToReferralIndex","preventUngroup","prevent_ungroup","moveToNewReferralDisabled","programs","length","icon","iconClasses","onMoveToExistingReferralClick","index","focusThreeDotIcon","onMoveToExistingReferralReasonsHover","onMoveToNewReferralClick","onRemoveClick","name","id","service","setTimeout","element","document","querySelector","parentElement","focus","isLoadingDetails","setIsLoadingDetails","onDetailsClick","formatted","renderDetailsButton","type","className","children","size","color","renderProgramMenu","renderThreeDotIcon","ariaLabel","renderWithDetails","isLoading","propTypes","shape","string","isRequired","bool","func","array","object","defaultProps"],"sources":["../../../../src/pages/builder/components/ReferralProgramCard.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { PropTypes } from 'prop-types';\nimport { Icon } from '@unite-us/app-components';\nimport { getProgramStatusDisplay, isUnlistedProgram } from '../utils';\nimport DetailsDrawer from './DetailsDrawer';\nimport { formatForProgramDetail } from '../utils/formatProgramDetail';\nimport ProgramMenu from './ProgramMenu';\nimport ProgramHeader from './ProgramHeader';\n\nexport function ReferralProgramCard({\n program,\n onClick,\n isOON,\n menuIsOpen,\n unselected,\n referral,\n cannotMoveReasons,\n removeProgram,\n moveToNewReferral,\n moveToExistingReferral,\n canChangePrograms,\n}) {\n const [selectedProgram, setSelectedProgram] = useState(undefined);\n const [currentProgram, setCurrentProgram] = useState(undefined);\n const programStatus = getProgramStatusDisplay(program.receiving_referrals, isOON);\n const [reasonMenuIsOpen, setReasonMenuIsOpen] = useState(false);\n const [moveToReferralIndex, setMoveToReferralIndex] = useState(null);\n const preventUngroup = referral.prevent_ungroup;\n const moveToNewReferralDisabled = referral.programs.length < 2 || preventUngroup;\n const icon = menuIsOpen ? 'CrossCircleO' : 'EllipsisV';\n const iconClasses = `fill-current text-blue rotate-90 ${menuIsOpen ? 'w-6 h-6' : ''}`;\n\n const onMoveToExistingReferralClick = (index) => {\n setMoveToReferralIndex(index + 1);\n\n if (cannotMoveReasons[index].length) {\n setReasonMenuIsOpen(true);\n } else {\n moveToExistingReferral(index, program);\n }\n focusThreeDotIcon();\n };\n\n const onMoveToExistingReferralReasonsHover = (index) => {\n setMoveToReferralIndex(index + 1);\n\n if (cannotMoveReasons[index].length) {\n setReasonMenuIsOpen(true);\n }\n focusThreeDotIcon();\n };\n\n const onMoveToNewReferralClick = () => {\n if (preventUngroup) return;\n\n moveToNewReferral(program);\n setReasonMenuIsOpen(false);\n focusThreeDotIcon();\n };\n\n const onRemoveClick = () => {\n removeProgram(program.name, program.id, referral.service.id);\n focusThreeDotIcon();\n };\n\n const focusThreeDotIcon = () => {\n setTimeout(() => {\n const element = document.querySelector('#edit_referral_groupings');\n if (element && element.parentElement) {\n element.parentElement.focus();\n }\n }, 100);\n };\n\n useEffect(() => {\n if (!menuIsOpen) {\n setReasonMenuIsOpen(false);\n }\n }, [menuIsOpen]);\n\n const [isLoadingDetails, setIsLoadingDetails] = useState(false);\n\n const onDetailsClick = async () => {\n if (currentProgram) {\n setSelectedProgram(currentProgram);\n return;\n }\n setIsLoadingDetails(true);\n const formatted = await formatForProgramDetail(program);\n setCurrentProgram(formatted);\n setSelectedProgram(formatted);\n setIsLoadingDetails(false);\n };\n\n const renderDetailsButton = () => {\n if (isUnlistedProgram(program)) return;\n\n return (\n <button\n type=\"button\"\n onClick={onDetailsClick}\n className=\"text-current-blue z-0 flex items-center\"\n >\n <Icon icon=\"Eye\" className=\"mr-1\" size={20} color=\"action-blue\" />\n Details\n </button>\n );\n };\n\n const renderProgramMenu = () => (\n <ProgramMenu\n menuIsOpen={menuIsOpen}\n onClick={onClick}\n program={program}\n unselected={unselected}\n preventUngroup={preventUngroup}\n onMoveToExistingReferralClick={onMoveToExistingReferralClick}\n onMoveToExistingReferralReasonsHover={onMoveToExistingReferralReasonsHover}\n moveToNewReferralDisabled={moveToNewReferralDisabled}\n onMoveToNewReferralClick={onMoveToNewReferralClick}\n setReasonMenuIsOpen={setReasonMenuIsOpen}\n onRemoveClick={onRemoveClick}\n reasonMenuIsOpen={reasonMenuIsOpen}\n moveToReferralIndex={moveToReferralIndex}\n cannotMoveReasons={cannotMoveReasons}\n />\n );\n\n const renderThreeDotIcon = () => (\n <Icon\n id=\"edit_referral_groupings\"\n icon={icon}\n className={iconClasses}\n onClick={() => onClick(program?.id)}\n ariaLabel=\"Edit referral groupings\"\n />\n );\n\n const renderWithDetails = () => (\n <div className=\"flex my-4\">\n <div className=\"flex-auto p-0\">\n <div className=\"grid grid-cols-12 bg-white border border-solid border-blue-border rounded\">\n <div className=\"col-span-10 md:col-span-8 px-5 py-2\">\n <ProgramHeader program={program} programStatus={programStatus} />\n </div>\n <div className=\"col-span-2 md:col-span-4 flex justify-center items-center\">\n <DetailsDrawer\n selectedProgram={selectedProgram}\n setSelectedProgram={setSelectedProgram}\n isLoading={isLoadingDetails}\n />\n {renderDetailsButton()}\n </div>\n </div>\n </div>\n <div className=\"p-0 flex justify-center items-center ml-4 w-8\">\n {canChangePrograms && renderThreeDotIcon()}\n </div>\n {canChangePrograms && renderProgramMenu()}\n </div>\n );\n\n return renderWithDetails();\n}\n\nReferralProgramCard.propTypes = {\n program: PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n receiving_referrals: PropTypes.bool,\n }).isRequired,\n onClick: PropTypes.func.isRequired,\n isOON: PropTypes.bool.isRequired,\n menuIsOpen: PropTypes.bool,\n unselected: PropTypes.array,\n referral: PropTypes.object.isRequired,\n moveToNewReferral: PropTypes.func.isRequired,\n moveToExistingReferral: PropTypes.func.isRequired,\n canChangePrograms: PropTypes.bool,\n cannotMoveReasons: PropTypes.object,\n};\n\nReferralProgramCard.defaultProps = {\n menuIsOpen: false,\n unselected: [],\n canChangePrograms: true,\n cannotMoveReasons: {},\n};\n\nexport default ReferralProgramCard;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReferralProgramMenu.js","names":["React","useEffect","useRef","useState","PropTypes","isEmpty","handleKeyPress","jsxs","_jsxs","jsx","_jsx","ReferralProgramMenu","_ref","unselected","preventUngroup","moveToNewReferralDisabled","onMoveToExistingReferralClick","onMoveToExistingReferralReasonsHover","onMoveToNewReferralClick","onRemoveClick","reasonMenuIsOpen","moveToReferralIndex","cannotMoveReasons","onClickThreeDotIcon","setReasonMenuIsOpen","reasons","referralOptionsMenu","buttonRef","showUngroupMessageError","setShowUngroupMessageError","document","addEventListener","handleClickListener","removeEventListener","event","clickedInside","current","contains","target","handleShowUngroupMessageError","handleButtonClick","nextElement","querySelector","parentElement","focus","error","console","className","children","ref","map","index","onClick","onMouseEnter","onMouseOut","onKeyDown","e","tabIndex","reason","propTypes","array","isRequired","bool","func","number","object","defaultProps"],"sources":["../../../../src/pages/builder/components/ReferralProgramMenu.js"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { PropTypes } from 'prop-types';\nimport { isEmpty } from 'lodash';\nimport { handleKeyPress } from '../utils';\n\nconst ReferralProgramMenu = ({\n unselected,\n preventUngroup,\n moveToNewReferralDisabled,\n onMoveToExistingReferralClick,\n onMoveToExistingReferralReasonsHover,\n onMoveToNewReferralClick,\n onRemoveClick,\n reasonMenuIsOpen,\n moveToReferralIndex,\n cannotMoveReasons,\n onClickThreeDotIcon,\n setReasonMenuIsOpen,\n}) => {\n const reasons = cannotMoveReasons[moveToReferralIndex - 1];\n const referralOptionsMenu = useRef();\n const buttonRef = useRef(null);\n const [showUngroupMessageError, setShowUngroupMessageError] = useState(false);\n\n useEffect(() => {\n document.addEventListener('mousedown', handleClickListener);\n\n return () => document.removeEventListener('mousedown', handleClickListener);\n }, []);\n\n const handleClickListener = (event) => {\n let clickedInside = referralOptionsMenu && referralOptionsMenu.current.contains(event.target);\n if (!clickedInside) {\n onClickThreeDotIcon();\n };\n }\n\n const handleShowUngroupMessageError = () => {\n if (!showUngroupMessageError)\n setShowUngroupMessageError(true);\n else\n setShowUngroupMessageError(false);\n }\n\n const handleButtonClick = () => {\n try {\n onClickThreeDotIcon();\n if (!reasonMenuIsOpen) {\n const nextElement = document.querySelector('#edit_referral_groupings').parentElement;\n if (nextElement) {\n nextElement.focus();\n }\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n return (\n <div className=\"absolute z-20 right-0 mt-10 mr-6\">\n <div className=\"flex flex-row-reverse items-start\">\n <div ref={referralOptionsMenu} className=\"shadow-lg bg-white border border-solid border-blue-border\">\n <ul className=\"cursor-pointer pl-0 list-none\">\n {\n unselected.map((index) => (\n <li className=\"p-3 hover:bg-med-pale-blue\">\n <button\n onClick={() => onMoveToExistingReferralClick(index)}\n onMouseEnter={() => onMoveToExistingReferralReasonsHover(index)}\n onMouseOut={() => setReasonMenuIsOpen(false)}\n onKeyDown={(e) => handleKeyPress(e, () => onMoveToExistingReferralClick(index))}\n className={`w-full text-left ${!isEmpty(cannotMoveReasons[index]) ? 'text-gray-400' : ''}`}\n >\n Move to Referral {index + 1}\n </button>\n </li>\n ))\n }\n {!moveToNewReferralDisabled ? (\n <li className=\"p-3 hover:bg-med-pale-blue\">\n <button\n onClick={onMoveToNewReferralClick}\n onKeyDown={(e) => handleKeyPress(e, onMoveToNewReferralClick)}\n onMouseEnter={preventUngroup ? () => handleShowUngroupMessageError() : null}\n onMouseOut={preventUngroup ? () => handleShowUngroupMessageError() : null}\n className={`w-full text-left ${preventUngroup ? 'text-gray-400' : ''}`}\n >\n Move to new referral\n </button>\n </li>\n ) : null}\n <li\n className=\"p-3 hover:bg-med-pale-blue\"\n onClick={onRemoveClick}\n onKeyDown={(e) => handleKeyPress(e, onRemoveClick)}\n tabIndex={0}\n >\n Remove\n </li>\n <li className=\"p-3 hover:bg-med-pale-blue\">\n <button\n ref={buttonRef}\n onClick={handleButtonClick}\n onKeyDown={(e) => handleKeyPress(e, handleButtonClick)}\n aria-expanded={reasonMenuIsOpen}\n aria-controls=\"program-menu\"\n className=\"w-full text-left\"\n >\n Close menu\n </button>\n </li>\n </ul>\n </div>\n {\n reasonMenuIsOpen && !isEmpty(reasons) ? (\n <div className=\"mr-2 p-4 min-w-2/3 bg-med-pale-blue border border-solid border-blue-border z-30\">\n <p className=\"mb-2\">Cannot move to Referral {moveToReferralIndex} for the following reasons:</p>\n <ul className=\"list-disc pl-0\">\n {\n reasons.map((reason, index) => (\n <li className=\"text-red ml-6\" key={`cannot-move-reason-${index}`}>\n {reason}\n </li>\n ))\n }\n </ul>\n </div>\n ) : null\n }\n {\n showUngroupMessageError ? (\n <div className=\"mr-2 p-4 min-w-2/3 bg-med-pale-blue border border-solid border-blue-border z-30\">\n <p className=\"mb-2\">Cannot move to new referral for the following reasons:</p>\n <ul className=\"list-disc pl-0\">\n <li className=\"text-red ml-6\">\n Referrals to a program that requires authorization must be sent as a group.\n </li>\n </ul>\n </div>\n ) : null\n }\n </div>\n </div>\n );\n};\n\nReferralProgramMenu.propTypes = {\n unselected: PropTypes.array.isRequired,\n moveToNewReferralDisabled: PropTypes.bool.isRequired,\n onMoveToExistingReferralClick: PropTypes.func.isRequired,\n onMoveToNewReferralClick: PropTypes.func.isRequired,\n onRemoveClick: PropTypes.func.isRequired,\n reasonMenuIsOpen: PropTypes.bool.isRequired,\n moveToReferralIndex: PropTypes.number.isRequired,\n cannotMoveReasons: PropTypes.object,\n onClickThreeDotIcon: PropTypes.func.isRequired,\n setReasonMenuIsOpen: PropTypes.func.isRequired,\n};\n\nReferralProgramMenu.defaultProps = {\n cannotMoveReasons: {},\n};\n\nexport default ReferralProgramMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ReferralProgramMenu.js","names":["React","useEffect","useRef","useState","PropTypes","isEmpty","handleKeyPress","jsxs","_jsxs","jsx","_jsx","ReferralProgramMenu","_ref","unselected","preventUngroup","moveToNewReferralDisabled","onMoveToExistingReferralClick","onMoveToExistingReferralReasonsHover","onMoveToNewReferralClick","onRemoveClick","reasonMenuIsOpen","moveToReferralIndex","cannotMoveReasons","onClickThreeDotIcon","setReasonMenuIsOpen","reasons","referralOptionsMenu","buttonRef","showUngroupMessageError","setShowUngroupMessageError","document","addEventListener","handleClickListener","removeEventListener","event","clickedInside","current","contains","target","handleShowUngroupMessageError","handleButtonClick","nextElement","querySelector","parentElement","focus","error","console","className","children","ref","map","index","onClick","onMouseEnter","onMouseOut","onKeyDown","e","tabIndex","reason","propTypes","array","isRequired","bool","func","number","object","defaultProps"],"sources":["../../../../src/pages/builder/components/ReferralProgramMenu.js"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { PropTypes } from 'prop-types';\nimport { isEmpty } from 'lodash';\nimport { handleKeyPress } from '../utils';\n\nconst ReferralProgramMenu = ({\n unselected,\n preventUngroup,\n moveToNewReferralDisabled,\n onMoveToExistingReferralClick,\n onMoveToExistingReferralReasonsHover,\n onMoveToNewReferralClick,\n onRemoveClick,\n reasonMenuIsOpen,\n moveToReferralIndex,\n cannotMoveReasons,\n onClickThreeDotIcon,\n setReasonMenuIsOpen,\n}) => {\n const reasons = cannotMoveReasons[moveToReferralIndex - 1];\n const referralOptionsMenu = useRef();\n const buttonRef = useRef(null);\n const [showUngroupMessageError, setShowUngroupMessageError] = useState(false);\n\n useEffect(() => {\n document.addEventListener('mousedown', handleClickListener);\n\n return () => document.removeEventListener('mousedown', handleClickListener);\n }, []);\n\n const handleClickListener = (event) => {\n let clickedInside = referralOptionsMenu && referralOptionsMenu.current.contains(event.target);\n if (!clickedInside) {\n onClickThreeDotIcon();\n }\n };\n\n const handleShowUngroupMessageError = () => {\n if (!showUngroupMessageError) setShowUngroupMessageError(true);\n else setShowUngroupMessageError(false);\n };\n\n const handleButtonClick = () => {\n try {\n onClickThreeDotIcon();\n if (!reasonMenuIsOpen) {\n const nextElement = document.querySelector('#edit_referral_groupings').parentElement;\n if (nextElement) {\n nextElement.focus();\n }\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n return (\n <div className=\"absolute z-20 right-0 mt-10 mr-6\">\n <div className=\"flex flex-row-reverse items-start\">\n <div\n ref={referralOptionsMenu}\n className=\"shadow-lg bg-white border border-solid border-blue-border\"\n >\n <ul className=\"cursor-pointer pl-0 list-none\">\n {unselected.map((index) => (\n <li className=\"p-3 hover:bg-med-pale-blue\">\n <button\n onClick={() => onMoveToExistingReferralClick(index)}\n onMouseEnter={() => onMoveToExistingReferralReasonsHover(index)}\n onMouseOut={() => setReasonMenuIsOpen(false)}\n onKeyDown={(e) => handleKeyPress(e, () => onMoveToExistingReferralClick(index))}\n className={`w-full text-left ${!isEmpty(cannotMoveReasons[index]) ? 'text-gray-400' : ''}`}\n >\n Move to Referral {index + 1}\n </button>\n </li>\n ))}\n {!moveToNewReferralDisabled ? (\n <li className=\"p-3 hover:bg-med-pale-blue\">\n <button\n onClick={onMoveToNewReferralClick}\n onKeyDown={(e) => handleKeyPress(e, onMoveToNewReferralClick)}\n onMouseEnter={preventUngroup ? () => handleShowUngroupMessageError() : null}\n onMouseOut={preventUngroup ? () => handleShowUngroupMessageError() : null}\n className={`w-full text-left ${preventUngroup ? 'text-gray-400' : ''}`}\n >\n Move to new referral\n </button>\n </li>\n ) : null}\n <li\n className=\"p-3 hover:bg-med-pale-blue\"\n onClick={onRemoveClick}\n onKeyDown={(e) => handleKeyPress(e, onRemoveClick)}\n tabIndex={0}\n >\n Remove\n </li>\n <li className=\"p-3 hover:bg-med-pale-blue\">\n <button\n ref={buttonRef}\n onClick={handleButtonClick}\n onKeyDown={(e) => handleKeyPress(e, handleButtonClick)}\n aria-expanded={reasonMenuIsOpen}\n aria-controls=\"program-menu\"\n className=\"w-full text-left\"\n >\n Close menu\n </button>\n </li>\n </ul>\n </div>\n {reasonMenuIsOpen && !isEmpty(reasons) ? (\n <div className=\"mr-2 p-4 min-w-2/3 bg-med-pale-blue border border-solid border-blue-border z-30\">\n <p className=\"mb-2\">\n Cannot move to Referral {moveToReferralIndex} for the following reasons:\n </p>\n <ul className=\"list-disc pl-0\">\n {reasons.map((reason, index) => (\n <li className=\"text-red ml-6\" key={`cannot-move-reason-${index}`}>\n {reason}\n </li>\n ))}\n </ul>\n </div>\n ) : null}\n {showUngroupMessageError ? (\n <div className=\"mr-2 p-4 min-w-2/3 bg-med-pale-blue border border-solid border-blue-border z-30\">\n <p className=\"mb-2\">Cannot move to new referral for the following reasons:</p>\n <ul className=\"list-disc pl-0\">\n <li className=\"text-red ml-6\">\n Referrals to a program that requires authorization must be sent as a group.\n </li>\n </ul>\n </div>\n ) : null}\n </div>\n </div>\n );\n};\n\nReferralProgramMenu.propTypes = {\n unselected: PropTypes.array.isRequired,\n moveToNewReferralDisabled: PropTypes.bool.isRequired,\n onMoveToExistingReferralClick: PropTypes.func.isRequired,\n onMoveToNewReferralClick: PropTypes.func.isRequired,\n onRemoveClick: PropTypes.func.isRequired,\n reasonMenuIsOpen: PropTypes.bool.isRequired,\n moveToReferralIndex: PropTypes.number.isRequired,\n cannotMoveReasons: PropTypes.object,\n onClickThreeDotIcon: PropTypes.func.isRequired,\n setReasonMenuIsOpen: PropTypes.func.isRequired,\n};\n\nReferralProgramMenu.defaultProps = {\n cannotMoveReasons: {},\n};\n\nexport default ReferralProgramMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","names":["REFERRAL_BUILDER_DESCRIPTION","SUPPORTING_INFO","ON_PLATFORM_REFERRALS","OFF_PLATFORM_REFERRALS","GROUPED_REFERRALS_EXPLANATION","UNGROUP_REFERRAL_EXPLANATION","GROUPED_REFERRAL_MUST_HAVE_SAME","REFERRAL_PII_PHI_DESCRIPTION","CFR_PART_2_REFERRAL_MESSAGE","REFERRAL_SENT_SUCCESS","OFF_PLATFORM_REFERRALS_ONLY","ROLE_KEYS","NEXT_STEPS"],"sources":["../../../src/pages/builder/constants.js"],"sourcesContent":["export const REFERRAL_BUILDER_DESCRIPTION = `We automatically group compatible referrals.\n Reorganize referrals based on your client's needs, \n add referral descriptions, and upload any attachments. `;\n\nexport const SUPPORTING_INFO = `Provide supporting information to help\n quickly connect your client with services.`;\n\nexport const ON_PLATFORM_REFERRALS = `An on-platform program uses Unite Us, just like you. \n If you send them a referral, then can accept, reject, or forward it using Unite Us.`;\n\nexport const OFF_PLATFORM_REFERRALS = `An off-platform program doesn't use Unite Us yet. \n If you send them a referral, you must contact them directly to request services, share\n their information with your client, and document the outcome in Unite Us.`;\n\nexport const GROUPED_REFERRALS_EXPLANATION = `With grouped referrals, you can send referrals\n to multiple, on-platform programs at once. Whoever accepts the referral first works with\n the client and the rest of the referrals are recalled. To be grouped, referrals must\n have the same: `;\n\nexport const UNGROUP_REFERRAL_EXPLANATION = `We automatically group compatible referrals for \n you. You can ungroup referrals by clicking the three-dot icon next to any program and move\n it to a new referral.`;\n\nexport const GROUPED_REFERRAL_MUST_HAVE_SAME = ['Service type'
|
|
1
|
+
{"version":3,"file":"constants.js","names":["REFERRAL_BUILDER_DESCRIPTION","SUPPORTING_INFO","ON_PLATFORM_REFERRALS","OFF_PLATFORM_REFERRALS","GROUPED_REFERRALS_EXPLANATION","UNGROUP_REFERRAL_EXPLANATION","GROUPED_REFERRAL_MUST_HAVE_SAME","REFERRAL_PII_PHI_DESCRIPTION","CFR_PART_2_REFERRAL_MESSAGE","REFERRAL_SENT_SUCCESS","OFF_PLATFORM_REFERRALS_ONLY","ROLE_KEYS","NEXT_STEPS"],"sources":["../../../src/pages/builder/constants.js"],"sourcesContent":["export const REFERRAL_BUILDER_DESCRIPTION = `We automatically group compatible referrals.\n Reorganize referrals based on your client's needs, \n add referral descriptions, and upload any attachments. `;\n\nexport const SUPPORTING_INFO = `Provide supporting information to help\n quickly connect your client with services.`;\n\nexport const ON_PLATFORM_REFERRALS = `An on-platform program uses Unite Us, just like you. \n If you send them a referral, then can accept, reject, or forward it using Unite Us.`;\n\nexport const OFF_PLATFORM_REFERRALS = `An off-platform program doesn't use Unite Us yet. \n If you send them a referral, you must contact them directly to request services, share\n their information with your client, and document the outcome in Unite Us.`;\n\nexport const GROUPED_REFERRALS_EXPLANATION = `With grouped referrals, you can send referrals\n to multiple, on-platform programs at once. Whoever accepts the referral first works with\n the client and the rest of the referrals are recalled. To be grouped, referrals must\n have the same: `;\n\nexport const UNGROUP_REFERRAL_EXPLANATION = `We automatically group compatible referrals for \n you. You can ungroup referrals by clicking the three-dot icon next to any program and move\n it to a new referral.`;\n\nexport const GROUPED_REFERRAL_MUST_HAVE_SAME = [\n 'Service type',\n 'Program status (on- or off-platform)',\n 'Authorization (required or not)',\n];\n\nexport const REFERRAL_PII_PHI_DESCRIPTION =\n \"Include personally identifiable information (PII), protected health information (PHI), or other sensitive information only if it's necessary to provide services.\";\n\nexport const CFR_PART_2_REFERRAL_MESSAGE =\n 'If this referral is for a 42 CFR Part 2 covered service, Part 2 prohibits the unauthorized re-disclosure of these records.';\n\nexport const REFERRAL_SENT_SUCCESS = `We've saved these referred programs to the Resources tab on the client's profile.`;\n\nexport const OFF_PLATFORM_REFERRALS_ONLY = 'off-platform referrals only';\n\nexport const ROLE_KEYS = [\n 'case_manager',\n 'referrals_user',\n 'referrals_admin',\n 'oversight',\n 'org_admin',\n];\n\nexport const NEXT_STEPS = [\n 'Share these resources with the client by text, email, or print.',\n 'Confirm whether any on-platform referrals have been accepted by any organizations.',\n 'Contact any off-platform programs directly, follow up with your client, and update the case.',\n];\n"],"mappings":"AAAA,OAAO,MAAMA,4BAA4B,GAAG;AAC5C;AACA,0DAA0D;AAE1D,OAAO,MAAMC,eAAe,GAAG;AAC/B,6CAA6C;AAE7C,OAAO,MAAMC,qBAAqB,GAAG;AACrC,sFAAsF;AAEtF,OAAO,MAAMC,sBAAsB,GAAG;AACtC;AACA,4EAA4E;AAE5E,OAAO,MAAMC,6BAA6B,GAAG;AAC7C;AACA;AACA,kBAAkB;AAElB,OAAO,MAAMC,4BAA4B,GAAG;AAC5C;AACA,wBAAwB;AAExB,OAAO,MAAMC,+BAA+B,GAAG,CAC7C,cAAc,EACd,sCAAsC,EACtC,iCAAiC,CAClC;AAED,OAAO,MAAMC,4BAA4B,GACvC,mKAAmK;AAErK,OAAO,MAAMC,2BAA2B,GACtC,4HAA4H;AAE9H,OAAO,MAAMC,qBAAqB,GAAG,mFAAmF;AAExH,OAAO,MAAMC,2BAA2B,GAAG,6BAA6B;AAExE,OAAO,MAAMC,SAAS,GAAG,CACvB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,WAAW,CACZ;AAED,OAAO,MAAMC,UAAU,GAAG,CACxB,iEAAiE,EACjE,oFAAoF,EACpF,8FAA8F,CAC/F","ignoreList":[]}
|
|
@@ -113,7 +113,7 @@ export default function useBuildReferrals(onReferralsBuilt) {
|
|
|
113
113
|
// Get all the programs from the referrals
|
|
114
114
|
const flatPrograms = newReferralsCloneWithoutUnlisted.flatMap(referral => referral.programs);
|
|
115
115
|
|
|
116
|
-
// Loop over the original referrals object and if the program is not unlisted,
|
|
116
|
+
// Loop over the original referrals object and if the program is not unlisted,
|
|
117
117
|
// replace it with the program from the flatPrograms array, since flatPrograms has all the data
|
|
118
118
|
addProgramToReferral(newReferrals, flatPrograms, p => !isUnlistedProgram(p));
|
|
119
119
|
const filteredReferrals = filterProgramsReceivingReferrals(newReferrals);
|
|
@@ -152,7 +152,7 @@ export default function useBuildReferrals(onReferralsBuilt) {
|
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
154
|
} catch (err) {
|
|
155
|
-
console.error(
|
|
155
|
+
console.error('Error in buildReferrals:', err);
|
|
156
156
|
} finally {
|
|
157
157
|
isBuildingRef.current = false;
|
|
158
158
|
setIsLoading(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBuildReferrals.js","names":["useEffect","useRef","useState","useQueryClient","setData","useAppCreateReferralContext","addProgramToReferral","addIdToUnlistedPrograms","buildReferralsFromPrograms","isUnlistedProgram","filterProgramsReceivingReferrals","referralIsOON","isEmpty","get","buildGroupedReferrals","coreApi","useFeatureFlag","fetchPrimaryWorkers","extractUniqueServiceIds","referrals","Set","map","referral","service","id","filter","Boolean","fetchServicesBatch","queryClient","serviceIds","cacheKey","sort","join","fetchQuery","query","ids","assignServicesToPrograms","servicesMap","forEach","shouldHydratePrimaryWorker","primaryWorker","getPrimaryWorkersForProvider","primaryWorkersByProvider","providerId","currentEmployee","primary_workers","primaryWorkers","applyDefaultPrimaryWorker","hydrateDefaultPrimaryWorkers","Promise","all","sendingProvider","find","worker","optimizedPopulateServices","uniqueServiceIds","length","result","services","Map","s","useBuildReferrals","onReferralsBuilt","dispatch","state","selectedPrograms","currentProvider","draftState","assistanceRequestId","referralDescription","isAssistanceRequest","isLoading","setIsLoading","isBuildingRef","hint542SupersetUnlistedPrograms","crtb854ForwardingSuperset","buildReferrals","current","assistanceRequest","assistanceRequestResponse","findRecord","include","selectedProgramsFiltered","obj","newReferrals","newReferralsClone","JSON","parse","stringify","newReferralsCloneWithoutUnlisted","programs","p","includes","populateRelationship","flatPrograms","flatMap","filteredReferrals","providerPromises","networkPromises","feeSchedulePromises","program","push","then","provider","groupedReferrals","description","case","err","console","error"],"sources":["../../../../src/pages/builder/hooks/useBuildReferrals.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { useQueryClient } from 'react-query';\nimport { setData, useAppCreateReferralContext } from '../../../context/AppCreateReferralProvider';\nimport {\n addProgramToReferral,\n addIdToUnlistedPrograms,\n buildReferralsFromPrograms,\n isUnlistedProgram,\n filterProgramsReceivingReferrals,\n referralIsOON\n} from '../utils';\nimport { isEmpty, get } from 'lodash';\nimport { buildGroupedReferrals } from '../utils/buildGroupedReferrals';\nimport { coreApi } from '../../../api/config';\nimport { useFeatureFlag } from '../../../utils/useFeatureFlag';\nimport fetchPrimaryWorkers from '../../../actions/Referral/fetchPrimaryWorkers';\n\nconst extractUniqueServiceIds = (referrals) => [...new Set(\n referrals.map(referral => referral.service?.id).filter(Boolean)\n)];\n\nconst fetchServicesBatch = (queryClient, serviceIds) => {\n const cacheKey = ['services', serviceIds.sort().join(',')];\n return queryClient.fetchQuery(\n cacheKey,\n () => coreApi.query('services', { ids: serviceIds })\n );\n};\n\nconst assignServicesToPrograms = (referrals, servicesMap) => {\n referrals.forEach(referral => {\n const service = servicesMap.get(referral.service?.id);\n if (service) referral.service = service;\n });\n};\n\nconst shouldHydratePrimaryWorker = (referral) => {\n if (!referralIsOON(referral)) return false;\n\n return !referral.primaryWorker;\n};\n\nconst getPrimaryWorkersForProvider = async (primaryWorkersByProvider, providerId, currentEmployee) => {\n primaryWorkersByProvider[providerId] = primaryWorkersByProvider[providerId] || fetchPrimaryWorkers({\n providerId,\n currentEmployee,\n });\n\n const { primary_workers: primaryWorkers = [] } = await primaryWorkersByProvider[providerId] || {};\n return primaryWorkers;\n};\n\nconst applyDefaultPrimaryWorker = (referral, primaryWorker) => {\n if (!primaryWorker) return referral;\n\n return { ...referral, primaryWorker };\n};\n\nconst hydrateDefaultPrimaryWorkers = async (referrals, currentEmployee) => {\n const primaryWorkersByProvider = {};\n\n return Promise.all(referrals.map(async (referral) => {\n if (!shouldHydratePrimaryWorker(referral)) {\n return referral;\n }\n\n const providerId = referral.sendingProvider.id;\n const primaryWorkers = await getPrimaryWorkersForProvider(\n primaryWorkersByProvider,\n providerId,\n currentEmployee,\n );\n const primaryWorker = primaryWorkers.find((worker) => worker.id === currentEmployee.id);\n\n return applyDefaultPrimaryWorker(referral, primaryWorker);\n }));\n};\n\nconst optimizedPopulateServices = async (referrals, queryClient) => {\n const uniqueServiceIds = extractUniqueServiceIds(referrals);\n if (uniqueServiceIds.length === 0) return;\n\n const result = await fetchServicesBatch(queryClient, uniqueServiceIds);\n const services = get(result, 'response.data.data', get(result, 'data.data', []));\n assignServicesToPrograms(referrals, new Map(services.map(s => [s.id, s])));\n};\n\nexport default function useBuildReferrals(onReferralsBuilt) {\n const { dispatch, state: {\n selectedPrograms,\n referrals,\n currentProvider,\n currentEmployee,\n draftState,\n assistanceRequestId,\n referralDescription,\n isAssistanceRequest,\n } } = useAppCreateReferralContext();\n const [isLoading, setIsLoading] = useState(false);\n const isBuildingRef = useRef(false);\n const queryClient = useQueryClient();\n\n const hint542SupersetUnlistedPrograms = useFeatureFlag('hint542SupersetUnlistedPrograms', false);\n const crtb854ForwardingSuperset = useFeatureFlag('crtb854ForwardingSuperset', false);\n\n const buildReferrals = async () => {\n try {\n // Build the referrals only one time\n if (!isEmpty(selectedPrograms) && isEmpty(referrals) && !isBuildingRef.current) {\n isBuildingRef.current = true;\n\n setIsLoading(true);\n let assistanceRequest = null;\n\n if (assistanceRequestId) {\n const assistanceRequestResponse = await coreApi.findRecord('assistance_request', assistanceRequestId, {\n include: 'case',\n })\n assistanceRequest = get(assistanceRequestResponse, 'data.data', null);\n }\n\n // Add an id and status to unlisted programs(programs without an id are unlisted programs)\n // Remove unlisted programs if the feature flag is disabled\n let selectedProgramsFiltered = hint542SupersetUnlistedPrograms ? addIdToUnlistedPrograms(selectedPrograms) : selectedPrograms.filter(obj => obj.id);\n\n const newReferrals = buildReferralsFromPrograms(selectedProgramsFiltered, currentProvider, draftState);\n\n // Loop over the referrals and if the program is unlisted, replace it with the selected program,\n // because it has the name and service data\n addProgramToReferral(newReferrals, selectedProgramsFiltered, isUnlistedProgram);\n\n // Create a copy of the referrals to avoid mutating the original data. To be able to get data from the programs\n const newReferralsClone = JSON.parse(JSON.stringify(newReferrals));\n const newReferralsCloneWithoutUnlisted = newReferralsClone.map((referral) => {\n referral.programs = referral.programs.filter((p) => !p.id.includes('unlisted'));\n return referral;\n });\n\n await coreApi.populateRelationship('programs', 'program', newReferralsCloneWithoutUnlisted);\n\n // Get all the programs from the referrals\n const flatPrograms = newReferralsCloneWithoutUnlisted.flatMap(referral => referral.programs);\n\n // Loop over the original referrals object and if the program is not unlisted, \n // replace it with the program from the flatPrograms array, since flatPrograms has all the data\n addProgramToReferral(newReferrals, flatPrograms, (p) => !isUnlistedProgram(p));\n\n const filteredReferrals = filterProgramsReceivingReferrals(newReferrals);\n await optimizedPopulateServices(filteredReferrals, queryClient);\n\n let providerPromises = [], networkPromises = [], feeSchedulePromises = [];\n\n filteredReferrals.forEach((referral) => {\n referral.programs.forEach((program) => {\n providerPromises.push(coreApi.populateRelationship('provider', 'provider', program));\n feeSchedulePromises.push(coreApi.populateRelationship('fee_schedule_program', 'fee_schedule_program', program));\n })\n });\n\n await Promise.all(providerPromises).then((programs) => {\n programs.forEach(async (program) => {\n networkPromises.push(coreApi.populateRelationship('networks', 'network', program.provider));\n })\n });\n\n await Promise.all(feeSchedulePromises);\n await Promise.all(networkPromises);\n\n const groupedReferrals = await hydrateDefaultPrimaryWorkers(\n buildGroupedReferrals(filteredReferrals, currentProvider),\n currentEmployee,\n );\n\n if (!isEmpty(assistanceRequest)) {\n groupedReferrals[0].description = assistanceRequest?.description || assistanceRequest?.case?.description;\n }\n\n if ((crtb854ForwardingSuperset || isAssistanceRequest) && referralDescription) {\n groupedReferrals.forEach(referral => {\n referral.description = referralDescription;\n });\n }\n\n dispatch(setData({\n assistanceRequestId: assistanceRequest,\n referrals: groupedReferrals\n }))\n\n if (onReferralsBuilt) {\n onReferralsBuilt(groupedReferrals);\n }\n }\n } catch (err) { \n console.error(\"Error in buildReferrals:\", err);\n }\n finally {\n isBuildingRef.current = false;\n setIsLoading(false);\n }\n }\n\n useEffect(() => {\n buildReferrals();\n }, [selectedPrograms])\n\n return {\n referrals,\n isLoading\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACnD,SAASC,cAAc,QAAQ,aAAa;AAC5C,SAASC,OAAO,EAAEC,2BAA2B,QAAQ,4CAA4C;AACjG,SACEC,oBAAoB,EACpBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,iBAAiB,EACjBC,gCAAgC,EAChCC,aAAa,QACR,UAAU;AACjB,SAASC,OAAO,EAAEC,GAAG,QAAQ,QAAQ;AACrC,SAASC,qBAAqB,QAAQ,gCAAgC;AACtE,SAASC,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,cAAc,QAAQ,+BAA+B;AAC9D,OAAOC,mBAAmB,MAAM,+CAA+C;AAE/E,MAAMC,uBAAuB,GAAIC,SAAS,IAAK,CAAC,GAAG,IAAIC,GAAG,CACxDD,SAAS,CAACE,GAAG,CAACC,QAAQ,IAAIA,QAAQ,CAACC,OAAO,EAAEC,EAAE,CAAC,CAACC,MAAM,CAACC,OAAO,CAChE,CAAC,CAAC;AAEF,MAAMC,kBAAkB,GAAGA,CAACC,WAAW,EAAEC,UAAU,KAAK;EACtD,MAAMC,QAAQ,GAAG,CAAC,UAAU,EAAED,UAAU,CAACE,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC1D,OAAOJ,WAAW,CAACK,UAAU,CAC3BH,QAAQ,EACR,MAAMf,OAAO,CAACmB,KAAK,CAAC,UAAU,EAAE;IAAEC,GAAG,EAAEN;EAAW,CAAC,CACrD,CAAC;AACH,CAAC;AAED,MAAMO,wBAAwB,GAAGA,CAACjB,SAAS,EAAEkB,WAAW,KAAK;EAC3DlB,SAAS,CAACmB,OAAO,CAAChB,QAAQ,IAAI;IAC5B,MAAMC,OAAO,GAAGc,WAAW,CAACxB,GAAG,CAACS,QAAQ,CAACC,OAAO,EAAEC,EAAE,CAAC;IACrD,IAAID,OAAO,EAAED,QAAQ,CAACC,OAAO,GAAGA,OAAO;EACzC,CAAC,CAAC;AACJ,CAAC;AAED,MAAMgB,0BAA0B,GAAIjB,QAAQ,IAAK;EAC/C,IAAI,CAACX,aAAa,CAACW,QAAQ,CAAC,EAAE,OAAO,KAAK;EAE1C,OAAO,CAACA,QAAQ,CAACkB,aAAa;AAChC,CAAC;AAED,MAAMC,4BAA4B,GAAG,MAAAA,CAAOC,wBAAwB,EAAEC,UAAU,EAAEC,eAAe,KAAK;EACpGF,wBAAwB,CAACC,UAAU,CAAC,GAAGD,wBAAwB,CAACC,UAAU,CAAC,IAAI1B,mBAAmB,CAAC;IACjG0B,UAAU;IACVC;EACF,CAAC,CAAC;EAEF,MAAM;IAAEC,eAAe,EAAEC,cAAc,GAAG;EAAG,CAAC,GAAG,OAAMJ,wBAAwB,CAACC,UAAU,CAAC,KAAI,CAAC,CAAC;EACjG,OAAOG,cAAc;AACvB,CAAC;AAED,MAAMC,yBAAyB,GAAGA,CAACzB,QAAQ,EAAEkB,aAAa,KAAK;EAC7D,IAAI,CAACA,aAAa,EAAE,OAAOlB,QAAQ;EAEnC,OAAO;IAAE,GAAGA,QAAQ;IAAEkB;EAAc,CAAC;AACvC,CAAC;AAED,MAAMQ,4BAA4B,GAAG,MAAAA,CAAO7B,SAAS,EAAEyB,eAAe,KAAK;EACzE,MAAMF,wBAAwB,GAAG,CAAC,CAAC;EAEnC,OAAOO,OAAO,CAACC,GAAG,CAAC/B,SAAS,CAACE,GAAG,CAAC,MAAOC,QAAQ,IAAK;IACnD,IAAI,CAACiB,0BAA0B,CAACjB,QAAQ,CAAC,EAAE;MACzC,OAAOA,QAAQ;IACjB;IAEA,MAAMqB,UAAU,GAAGrB,QAAQ,CAAC6B,eAAe,CAAC3B,EAAE;IAC9C,MAAMsB,cAAc,GAAG,MAAML,4BAA4B,CACvDC,wBAAwB,EACxBC,UAAU,EACVC,eACF,CAAC;IACD,MAAMJ,aAAa,GAAGM,cAAc,CAACM,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAAC7B,EAAE,KAAKoB,eAAe,CAACpB,EAAE,CAAC;IAEvF,OAAOuB,yBAAyB,CAACzB,QAAQ,EAAEkB,aAAa,CAAC;EAC3D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAMc,yBAAyB,GAAG,MAAAA,CAAOnC,SAAS,EAAES,WAAW,KAAK;EAClE,MAAM2B,gBAAgB,GAAGrC,uBAAuB,CAACC,SAAS,CAAC;EAC3D,IAAIoC,gBAAgB,CAACC,MAAM,KAAK,CAAC,EAAE;EAEnC,MAAMC,MAAM,GAAG,MAAM9B,kBAAkB,CAACC,WAAW,EAAE2B,gBAAgB,CAAC;EACtE,MAAMG,QAAQ,GAAG7C,GAAG,CAAC4C,MAAM,EAAE,oBAAoB,EAAE5C,GAAG,CAAC4C,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;EAChFrB,wBAAwB,CAACjB,SAAS,EAAE,IAAIwC,GAAG,CAACD,QAAQ,CAACrC,GAAG,CAACuC,CAAC,IAAI,CAACA,CAAC,CAACpC,EAAE,EAAEoC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,eAAe,SAASC,iBAAiBA,CAACC,gBAAgB,EAAE;EAC1D,MAAM;IAAEC,QAAQ;IAAEC,KAAK,EAAE;MACvBC,gBAAgB;MAChB9C,SAAS;MACT+C,eAAe;MACftB,eAAe;MACfuB,UAAU;MACVC,mBAAmB;MACnBC,mBAAmB;MACnBC;IACF;EAAE,CAAC,GAAGjE,2BAA2B,CAAC,CAAC;EACnC,MAAM,CAACkE,SAAS,EAAEC,YAAY,CAAC,GAAGtE,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAMuE,aAAa,GAAGxE,MAAM,CAAC,KAAK,CAAC;EACnC,MAAM2B,WAAW,GAAGzB,cAAc,CAAC,CAAC;EAEpC,MAAMuE,+BAA+B,GAAG1D,cAAc,CAAC,iCAAiC,EAAE,KAAK,CAAC;EAChG,MAAM2D,yBAAyB,GAAG3D,cAAc,CAAC,2BAA2B,EAAE,KAAK,CAAC;EAEpF,MAAM4D,cAAc,GAAG,MAAAA,CAAA,KAAY;IACjC,IAAI;MACF;MACA,IAAI,CAAChE,OAAO,CAACqD,gBAAgB,CAAC,IAAIrD,OAAO,CAACO,SAAS,CAAC,IAAI,CAACsD,aAAa,CAACI,OAAO,EAAE;QAC9EJ,aAAa,CAACI,OAAO,GAAG,IAAI;QAE5BL,YAAY,CAAC,IAAI,CAAC;QAClB,IAAIM,iBAAiB,GAAG,IAAI;QAE5B,IAAIV,mBAAmB,EAAE;UACvB,MAAMW,yBAAyB,GAAG,MAAMhE,OAAO,CAACiE,UAAU,CAAC,oBAAoB,EAAEZ,mBAAmB,EAAE;YACpGa,OAAO,EAAE;UACX,CAAC,CAAC;UACFH,iBAAiB,GAAGjE,GAAG,CAACkE,yBAAyB,EAAE,WAAW,EAAE,IAAI,CAAC;QACvE;;QAEA;QACA;QACA,IAAIG,wBAAwB,GAAGR,+BAA+B,GAAGnE,uBAAuB,CAAC0D,gBAAgB,CAAC,GAAGA,gBAAgB,CAACxC,MAAM,CAAC0D,GAAG,IAAIA,GAAG,CAAC3D,EAAE,CAAC;QAEnJ,MAAM4D,YAAY,GAAG5E,0BAA0B,CAAC0E,wBAAwB,EAAEhB,eAAe,EAAEC,UAAU,CAAC;;QAEtG;QACA;QACA7D,oBAAoB,CAAC8E,YAAY,EAAEF,wBAAwB,EAAEzE,iBAAiB,CAAC;;QAE/E;QACA,MAAM4E,iBAAiB,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,YAAY,CAAC,CAAC;QAClE,MAAMK,gCAAgC,GAAGJ,iBAAiB,CAAChE,GAAG,CAAEC,QAAQ,IAAK;UAC3EA,QAAQ,CAACoE,QAAQ,GAAGpE,QAAQ,CAACoE,QAAQ,CAACjE,MAAM,CAAEkE,CAAC,IAAK,CAACA,CAAC,CAACnE,EAAE,CAACoE,QAAQ,CAAC,UAAU,CAAC,CAAC;UAC/E,OAAOtE,QAAQ;QACjB,CAAC,CAAC;QAEF,MAAMP,OAAO,CAAC8E,oBAAoB,CAAC,UAAU,EAAE,SAAS,EAAEJ,gCAAgC,CAAC;;QAE3F;QACA,MAAMK,YAAY,GAAGL,gCAAgC,CAACM,OAAO,CAACzE,QAAQ,IAAIA,QAAQ,CAACoE,QAAQ,CAAC;;QAE5F;QACA;QACApF,oBAAoB,CAAC8E,YAAY,EAAEU,YAAY,EAAGH,CAAC,IAAK,CAAClF,iBAAiB,CAACkF,CAAC,CAAC,CAAC;QAE9E,MAAMK,iBAAiB,GAAGtF,gCAAgC,CAAC0E,YAAY,CAAC;QACxE,MAAM9B,yBAAyB,CAAC0C,iBAAiB,EAAEpE,WAAW,CAAC;QAE/D,IAAIqE,gBAAgB,GAAG,EAAE;UAAEC,eAAe,GAAG,EAAE;UAAEC,mBAAmB,GAAG,EAAE;QAEzEH,iBAAiB,CAAC1D,OAAO,CAAEhB,QAAQ,IAAK;UACtCA,QAAQ,CAACoE,QAAQ,CAACpD,OAAO,CAAE8D,OAAO,IAAK;YACrCH,gBAAgB,CAACI,IAAI,CAACtF,OAAO,CAAC8E,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAEO,OAAO,CAAC,CAAC;YACpFD,mBAAmB,CAACE,IAAI,CAACtF,OAAO,CAAC8E,oBAAoB,CAAC,sBAAsB,EAAE,sBAAsB,EAAEO,OAAO,CAAC,CAAC;UACjH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,MAAMnD,OAAO,CAACC,GAAG,CAAC+C,gBAAgB,CAAC,CAACK,IAAI,CAAEZ,QAAQ,IAAK;UACrDA,QAAQ,CAACpD,OAAO,CAAC,MAAO8D,OAAO,IAAK;YAClCF,eAAe,CAACG,IAAI,CAACtF,OAAO,CAAC8E,oBAAoB,CAAC,UAAU,EAAE,SAAS,EAAEO,OAAO,CAACG,QAAQ,CAAC,CAAC;UAC7F,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,MAAMtD,OAAO,CAACC,GAAG,CAACiD,mBAAmB,CAAC;QACtC,MAAMlD,OAAO,CAACC,GAAG,CAACgD,eAAe,CAAC;QAElC,MAAMM,gBAAgB,GAAG,MAAMxD,4BAA4B,CACzDlC,qBAAqB,CAACkF,iBAAiB,EAAE9B,eAAe,CAAC,EACzDtB,eACF,CAAC;QAED,IAAI,CAAChC,OAAO,CAACkE,iBAAiB,CAAC,EAAE;UAC/B0B,gBAAgB,CAAC,CAAC,CAAC,CAACC,WAAW,GAAG3B,iBAAiB,EAAE2B,WAAW,IAAI3B,iBAAiB,EAAE4B,IAAI,EAAED,WAAW;QAC1G;QAEA,IAAI,CAAC9B,yBAAyB,IAAIL,mBAAmB,KAAKD,mBAAmB,EAAE;UAC7EmC,gBAAgB,CAAClE,OAAO,CAAChB,QAAQ,IAAI;YACnCA,QAAQ,CAACmF,WAAW,GAAGpC,mBAAmB;UAC5C,CAAC,CAAC;QACJ;QAEAN,QAAQ,CAAC3D,OAAO,CAAC;UACfgE,mBAAmB,EAAEU,iBAAiB;UACtC3D,SAAS,EAAEqF;QACb,CAAC,CAAC,CAAC;QAEH,IAAI1C,gBAAgB,EAAE;UACpBA,gBAAgB,CAAC0C,gBAAgB,CAAC;QACpC;MACF;IACF,CAAC,CAAC,OAAOG,GAAG,EAAE;MACZC,OAAO,CAACC,KAAK,CAAC,0BAA0B,EAAEF,GAAG,CAAC;IAChD,CAAC,SACO;MACNlC,aAAa,CAACI,OAAO,GAAG,KAAK;MAC7BL,YAAY,CAAC,KAAK,CAAC;IACrB;EACF,CAAC;EAEDxE,SAAS,CAAC,MAAM;IACd4E,cAAc,CAAC,CAAC;EAClB,CAAC,EAAE,CAACX,gBAAgB,CAAC,CAAC;EAEtB,OAAO;IACL9C,SAAS;IACToD;EACF,CAAC;AACH","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useBuildReferrals.js","names":["useEffect","useRef","useState","useQueryClient","setData","useAppCreateReferralContext","addProgramToReferral","addIdToUnlistedPrograms","buildReferralsFromPrograms","isUnlistedProgram","filterProgramsReceivingReferrals","referralIsOON","isEmpty","get","buildGroupedReferrals","coreApi","useFeatureFlag","fetchPrimaryWorkers","extractUniqueServiceIds","referrals","Set","map","referral","service","id","filter","Boolean","fetchServicesBatch","queryClient","serviceIds","cacheKey","sort","join","fetchQuery","query","ids","assignServicesToPrograms","servicesMap","forEach","shouldHydratePrimaryWorker","primaryWorker","getPrimaryWorkersForProvider","primaryWorkersByProvider","providerId","currentEmployee","primary_workers","primaryWorkers","applyDefaultPrimaryWorker","hydrateDefaultPrimaryWorkers","Promise","all","sendingProvider","find","worker","optimizedPopulateServices","uniqueServiceIds","length","result","services","Map","s","useBuildReferrals","onReferralsBuilt","dispatch","state","selectedPrograms","currentProvider","draftState","assistanceRequestId","referralDescription","isAssistanceRequest","isLoading","setIsLoading","isBuildingRef","hint542SupersetUnlistedPrograms","crtb854ForwardingSuperset","buildReferrals","current","assistanceRequest","assistanceRequestResponse","findRecord","include","selectedProgramsFiltered","obj","newReferrals","newReferralsClone","JSON","parse","stringify","newReferralsCloneWithoutUnlisted","programs","p","includes","populateRelationship","flatPrograms","flatMap","filteredReferrals","providerPromises","networkPromises","feeSchedulePromises","program","push","then","provider","groupedReferrals","description","case","err","console","error"],"sources":["../../../../src/pages/builder/hooks/useBuildReferrals.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { useQueryClient } from 'react-query';\nimport { setData, useAppCreateReferralContext } from '../../../context/AppCreateReferralProvider';\nimport {\n addProgramToReferral,\n addIdToUnlistedPrograms,\n buildReferralsFromPrograms,\n isUnlistedProgram,\n filterProgramsReceivingReferrals,\n referralIsOON,\n} from '../utils';\nimport { isEmpty, get } from 'lodash';\nimport { buildGroupedReferrals } from '../utils/buildGroupedReferrals';\nimport { coreApi } from '../../../api/config';\nimport { useFeatureFlag } from '../../../utils/useFeatureFlag';\nimport fetchPrimaryWorkers from '../../../actions/Referral/fetchPrimaryWorkers';\n\nconst extractUniqueServiceIds = (referrals) => [\n ...new Set(referrals.map((referral) => referral.service?.id).filter(Boolean)),\n];\n\nconst fetchServicesBatch = (queryClient, serviceIds) => {\n const cacheKey = ['services', serviceIds.sort().join(',')];\n return queryClient.fetchQuery(cacheKey, () => coreApi.query('services', { ids: serviceIds }));\n};\n\nconst assignServicesToPrograms = (referrals, servicesMap) => {\n referrals.forEach((referral) => {\n const service = servicesMap.get(referral.service?.id);\n if (service) referral.service = service;\n });\n};\n\nconst shouldHydratePrimaryWorker = (referral) => {\n if (!referralIsOON(referral)) return false;\n\n return !referral.primaryWorker;\n};\n\nconst getPrimaryWorkersForProvider = async (\n primaryWorkersByProvider,\n providerId,\n currentEmployee,\n) => {\n primaryWorkersByProvider[providerId] =\n primaryWorkersByProvider[providerId] ||\n fetchPrimaryWorkers({\n providerId,\n currentEmployee,\n });\n\n const { primary_workers: primaryWorkers = [] } =\n (await primaryWorkersByProvider[providerId]) || {};\n return primaryWorkers;\n};\n\nconst applyDefaultPrimaryWorker = (referral, primaryWorker) => {\n if (!primaryWorker) return referral;\n\n return { ...referral, primaryWorker };\n};\n\nconst hydrateDefaultPrimaryWorkers = async (referrals, currentEmployee) => {\n const primaryWorkersByProvider = {};\n\n return Promise.all(\n referrals.map(async (referral) => {\n if (!shouldHydratePrimaryWorker(referral)) {\n return referral;\n }\n\n const providerId = referral.sendingProvider.id;\n const primaryWorkers = await getPrimaryWorkersForProvider(\n primaryWorkersByProvider,\n providerId,\n currentEmployee,\n );\n const primaryWorker = primaryWorkers.find((worker) => worker.id === currentEmployee.id);\n\n return applyDefaultPrimaryWorker(referral, primaryWorker);\n }),\n );\n};\n\nconst optimizedPopulateServices = async (referrals, queryClient) => {\n const uniqueServiceIds = extractUniqueServiceIds(referrals);\n if (uniqueServiceIds.length === 0) return;\n\n const result = await fetchServicesBatch(queryClient, uniqueServiceIds);\n const services = get(result, 'response.data.data', get(result, 'data.data', []));\n assignServicesToPrograms(referrals, new Map(services.map((s) => [s.id, s])));\n};\n\nexport default function useBuildReferrals(onReferralsBuilt) {\n const {\n dispatch,\n state: {\n selectedPrograms,\n referrals,\n currentProvider,\n currentEmployee,\n draftState,\n assistanceRequestId,\n referralDescription,\n isAssistanceRequest,\n },\n } = useAppCreateReferralContext();\n const [isLoading, setIsLoading] = useState(false);\n const isBuildingRef = useRef(false);\n const queryClient = useQueryClient();\n\n const hint542SupersetUnlistedPrograms = useFeatureFlag('hint542SupersetUnlistedPrograms', false);\n const crtb854ForwardingSuperset = useFeatureFlag('crtb854ForwardingSuperset', false);\n\n const buildReferrals = async () => {\n try {\n // Build the referrals only one time\n if (!isEmpty(selectedPrograms) && isEmpty(referrals) && !isBuildingRef.current) {\n isBuildingRef.current = true;\n\n setIsLoading(true);\n let assistanceRequest = null;\n\n if (assistanceRequestId) {\n const assistanceRequestResponse = await coreApi.findRecord(\n 'assistance_request',\n assistanceRequestId,\n {\n include: 'case',\n },\n );\n assistanceRequest = get(assistanceRequestResponse, 'data.data', null);\n }\n\n // Add an id and status to unlisted programs(programs without an id are unlisted programs)\n // Remove unlisted programs if the feature flag is disabled\n let selectedProgramsFiltered = hint542SupersetUnlistedPrograms\n ? addIdToUnlistedPrograms(selectedPrograms)\n : selectedPrograms.filter((obj) => obj.id);\n\n const newReferrals = buildReferralsFromPrograms(\n selectedProgramsFiltered,\n currentProvider,\n draftState,\n );\n\n // Loop over the referrals and if the program is unlisted, replace it with the selected program,\n // because it has the name and service data\n addProgramToReferral(newReferrals, selectedProgramsFiltered, isUnlistedProgram);\n\n // Create a copy of the referrals to avoid mutating the original data. To be able to get data from the programs\n const newReferralsClone = JSON.parse(JSON.stringify(newReferrals));\n const newReferralsCloneWithoutUnlisted = newReferralsClone.map((referral) => {\n referral.programs = referral.programs.filter((p) => !p.id.includes('unlisted'));\n return referral;\n });\n\n await coreApi.populateRelationship('programs', 'program', newReferralsCloneWithoutUnlisted);\n\n // Get all the programs from the referrals\n const flatPrograms = newReferralsCloneWithoutUnlisted.flatMap(\n (referral) => referral.programs,\n );\n\n // Loop over the original referrals object and if the program is not unlisted,\n // replace it with the program from the flatPrograms array, since flatPrograms has all the data\n addProgramToReferral(newReferrals, flatPrograms, (p) => !isUnlistedProgram(p));\n\n const filteredReferrals = filterProgramsReceivingReferrals(newReferrals);\n await optimizedPopulateServices(filteredReferrals, queryClient);\n\n let providerPromises = [],\n networkPromises = [],\n feeSchedulePromises = [];\n\n filteredReferrals.forEach((referral) => {\n referral.programs.forEach((program) => {\n providerPromises.push(coreApi.populateRelationship('provider', 'provider', program));\n feeSchedulePromises.push(\n coreApi.populateRelationship('fee_schedule_program', 'fee_schedule_program', program),\n );\n });\n });\n\n await Promise.all(providerPromises).then((programs) => {\n programs.forEach(async (program) => {\n networkPromises.push(\n coreApi.populateRelationship('networks', 'network', program.provider),\n );\n });\n });\n\n await Promise.all(feeSchedulePromises);\n await Promise.all(networkPromises);\n\n const groupedReferrals = await hydrateDefaultPrimaryWorkers(\n buildGroupedReferrals(filteredReferrals, currentProvider),\n currentEmployee,\n );\n\n if (!isEmpty(assistanceRequest)) {\n groupedReferrals[0].description =\n assistanceRequest?.description || assistanceRequest?.case?.description;\n }\n\n if ((crtb854ForwardingSuperset || isAssistanceRequest) && referralDescription) {\n groupedReferrals.forEach((referral) => {\n referral.description = referralDescription;\n });\n }\n\n dispatch(\n setData({\n assistanceRequestId: assistanceRequest,\n referrals: groupedReferrals,\n }),\n );\n\n if (onReferralsBuilt) {\n onReferralsBuilt(groupedReferrals);\n }\n }\n } catch (err) {\n console.error('Error in buildReferrals:', err);\n } finally {\n isBuildingRef.current = false;\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n buildReferrals();\n }, [selectedPrograms]);\n\n return {\n referrals,\n isLoading,\n };\n}\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AACnD,SAASC,cAAc,QAAQ,aAAa;AAC5C,SAASC,OAAO,EAAEC,2BAA2B,QAAQ,4CAA4C;AACjG,SACEC,oBAAoB,EACpBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,iBAAiB,EACjBC,gCAAgC,EAChCC,aAAa,QACR,UAAU;AACjB,SAASC,OAAO,EAAEC,GAAG,QAAQ,QAAQ;AACrC,SAASC,qBAAqB,QAAQ,gCAAgC;AACtE,SAASC,OAAO,QAAQ,qBAAqB;AAC7C,SAASC,cAAc,QAAQ,+BAA+B;AAC9D,OAAOC,mBAAmB,MAAM,+CAA+C;AAE/E,MAAMC,uBAAuB,GAAIC,SAAS,IAAK,CAC7C,GAAG,IAAIC,GAAG,CAACD,SAAS,CAACE,GAAG,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,OAAO,EAAEC,EAAE,CAAC,CAACC,MAAM,CAACC,OAAO,CAAC,CAAC,CAC9E;AAED,MAAMC,kBAAkB,GAAGA,CAACC,WAAW,EAAEC,UAAU,KAAK;EACtD,MAAMC,QAAQ,GAAG,CAAC,UAAU,EAAED,UAAU,CAACE,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC1D,OAAOJ,WAAW,CAACK,UAAU,CAACH,QAAQ,EAAE,MAAMf,OAAO,CAACmB,KAAK,CAAC,UAAU,EAAE;IAAEC,GAAG,EAAEN;EAAW,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,MAAMO,wBAAwB,GAAGA,CAACjB,SAAS,EAAEkB,WAAW,KAAK;EAC3DlB,SAAS,CAACmB,OAAO,CAAEhB,QAAQ,IAAK;IAC9B,MAAMC,OAAO,GAAGc,WAAW,CAACxB,GAAG,CAACS,QAAQ,CAACC,OAAO,EAAEC,EAAE,CAAC;IACrD,IAAID,OAAO,EAAED,QAAQ,CAACC,OAAO,GAAGA,OAAO;EACzC,CAAC,CAAC;AACJ,CAAC;AAED,MAAMgB,0BAA0B,GAAIjB,QAAQ,IAAK;EAC/C,IAAI,CAACX,aAAa,CAACW,QAAQ,CAAC,EAAE,OAAO,KAAK;EAE1C,OAAO,CAACA,QAAQ,CAACkB,aAAa;AAChC,CAAC;AAED,MAAMC,4BAA4B,GAAG,MAAAA,CACnCC,wBAAwB,EACxBC,UAAU,EACVC,eAAe,KACZ;EACHF,wBAAwB,CAACC,UAAU,CAAC,GAClCD,wBAAwB,CAACC,UAAU,CAAC,IACpC1B,mBAAmB,CAAC;IAClB0B,UAAU;IACVC;EACF,CAAC,CAAC;EAEJ,MAAM;IAAEC,eAAe,EAAEC,cAAc,GAAG;EAAG,CAAC,GAC5C,CAAC,MAAMJ,wBAAwB,CAACC,UAAU,CAAC,KAAK,CAAC,CAAC;EACpD,OAAOG,cAAc;AACvB,CAAC;AAED,MAAMC,yBAAyB,GAAGA,CAACzB,QAAQ,EAAEkB,aAAa,KAAK;EAC7D,IAAI,CAACA,aAAa,EAAE,OAAOlB,QAAQ;EAEnC,OAAO;IAAE,GAAGA,QAAQ;IAAEkB;EAAc,CAAC;AACvC,CAAC;AAED,MAAMQ,4BAA4B,GAAG,MAAAA,CAAO7B,SAAS,EAAEyB,eAAe,KAAK;EACzE,MAAMF,wBAAwB,GAAG,CAAC,CAAC;EAEnC,OAAOO,OAAO,CAACC,GAAG,CAChB/B,SAAS,CAACE,GAAG,CAAC,MAAOC,QAAQ,IAAK;IAChC,IAAI,CAACiB,0BAA0B,CAACjB,QAAQ,CAAC,EAAE;MACzC,OAAOA,QAAQ;IACjB;IAEA,MAAMqB,UAAU,GAAGrB,QAAQ,CAAC6B,eAAe,CAAC3B,EAAE;IAC9C,MAAMsB,cAAc,GAAG,MAAML,4BAA4B,CACvDC,wBAAwB,EACxBC,UAAU,EACVC,eACF,CAAC;IACD,MAAMJ,aAAa,GAAGM,cAAc,CAACM,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAAC7B,EAAE,KAAKoB,eAAe,CAACpB,EAAE,CAAC;IAEvF,OAAOuB,yBAAyB,CAACzB,QAAQ,EAAEkB,aAAa,CAAC;EAC3D,CAAC,CACH,CAAC;AACH,CAAC;AAED,MAAMc,yBAAyB,GAAG,MAAAA,CAAOnC,SAAS,EAAES,WAAW,KAAK;EAClE,MAAM2B,gBAAgB,GAAGrC,uBAAuB,CAACC,SAAS,CAAC;EAC3D,IAAIoC,gBAAgB,CAACC,MAAM,KAAK,CAAC,EAAE;EAEnC,MAAMC,MAAM,GAAG,MAAM9B,kBAAkB,CAACC,WAAW,EAAE2B,gBAAgB,CAAC;EACtE,MAAMG,QAAQ,GAAG7C,GAAG,CAAC4C,MAAM,EAAE,oBAAoB,EAAE5C,GAAG,CAAC4C,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;EAChFrB,wBAAwB,CAACjB,SAAS,EAAE,IAAIwC,GAAG,CAACD,QAAQ,CAACrC,GAAG,CAAEuC,CAAC,IAAK,CAACA,CAAC,CAACpC,EAAE,EAAEoC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,eAAe,SAASC,iBAAiBA,CAACC,gBAAgB,EAAE;EAC1D,MAAM;IACJC,QAAQ;IACRC,KAAK,EAAE;MACLC,gBAAgB;MAChB9C,SAAS;MACT+C,eAAe;MACftB,eAAe;MACfuB,UAAU;MACVC,mBAAmB;MACnBC,mBAAmB;MACnBC;IACF;EACF,CAAC,GAAGjE,2BAA2B,CAAC,CAAC;EACjC,MAAM,CAACkE,SAAS,EAAEC,YAAY,CAAC,GAAGtE,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAMuE,aAAa,GAAGxE,MAAM,CAAC,KAAK,CAAC;EACnC,MAAM2B,WAAW,GAAGzB,cAAc,CAAC,CAAC;EAEpC,MAAMuE,+BAA+B,GAAG1D,cAAc,CAAC,iCAAiC,EAAE,KAAK,CAAC;EAChG,MAAM2D,yBAAyB,GAAG3D,cAAc,CAAC,2BAA2B,EAAE,KAAK,CAAC;EAEpF,MAAM4D,cAAc,GAAG,MAAAA,CAAA,KAAY;IACjC,IAAI;MACF;MACA,IAAI,CAAChE,OAAO,CAACqD,gBAAgB,CAAC,IAAIrD,OAAO,CAACO,SAAS,CAAC,IAAI,CAACsD,aAAa,CAACI,OAAO,EAAE;QAC9EJ,aAAa,CAACI,OAAO,GAAG,IAAI;QAE5BL,YAAY,CAAC,IAAI,CAAC;QAClB,IAAIM,iBAAiB,GAAG,IAAI;QAE5B,IAAIV,mBAAmB,EAAE;UACvB,MAAMW,yBAAyB,GAAG,MAAMhE,OAAO,CAACiE,UAAU,CACxD,oBAAoB,EACpBZ,mBAAmB,EACnB;YACEa,OAAO,EAAE;UACX,CACF,CAAC;UACDH,iBAAiB,GAAGjE,GAAG,CAACkE,yBAAyB,EAAE,WAAW,EAAE,IAAI,CAAC;QACvE;;QAEA;QACA;QACA,IAAIG,wBAAwB,GAAGR,+BAA+B,GAC1DnE,uBAAuB,CAAC0D,gBAAgB,CAAC,GACzCA,gBAAgB,CAACxC,MAAM,CAAE0D,GAAG,IAAKA,GAAG,CAAC3D,EAAE,CAAC;QAE5C,MAAM4D,YAAY,GAAG5E,0BAA0B,CAC7C0E,wBAAwB,EACxBhB,eAAe,EACfC,UACF,CAAC;;QAED;QACA;QACA7D,oBAAoB,CAAC8E,YAAY,EAAEF,wBAAwB,EAAEzE,iBAAiB,CAAC;;QAE/E;QACA,MAAM4E,iBAAiB,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,YAAY,CAAC,CAAC;QAClE,MAAMK,gCAAgC,GAAGJ,iBAAiB,CAAChE,GAAG,CAAEC,QAAQ,IAAK;UAC3EA,QAAQ,CAACoE,QAAQ,GAAGpE,QAAQ,CAACoE,QAAQ,CAACjE,MAAM,CAAEkE,CAAC,IAAK,CAACA,CAAC,CAACnE,EAAE,CAACoE,QAAQ,CAAC,UAAU,CAAC,CAAC;UAC/E,OAAOtE,QAAQ;QACjB,CAAC,CAAC;QAEF,MAAMP,OAAO,CAAC8E,oBAAoB,CAAC,UAAU,EAAE,SAAS,EAAEJ,gCAAgC,CAAC;;QAE3F;QACA,MAAMK,YAAY,GAAGL,gCAAgC,CAACM,OAAO,CAC1DzE,QAAQ,IAAKA,QAAQ,CAACoE,QACzB,CAAC;;QAED;QACA;QACApF,oBAAoB,CAAC8E,YAAY,EAAEU,YAAY,EAAGH,CAAC,IAAK,CAAClF,iBAAiB,CAACkF,CAAC,CAAC,CAAC;QAE9E,MAAMK,iBAAiB,GAAGtF,gCAAgC,CAAC0E,YAAY,CAAC;QACxE,MAAM9B,yBAAyB,CAAC0C,iBAAiB,EAAEpE,WAAW,CAAC;QAE/D,IAAIqE,gBAAgB,GAAG,EAAE;UACvBC,eAAe,GAAG,EAAE;UACpBC,mBAAmB,GAAG,EAAE;QAE1BH,iBAAiB,CAAC1D,OAAO,CAAEhB,QAAQ,IAAK;UACtCA,QAAQ,CAACoE,QAAQ,CAACpD,OAAO,CAAE8D,OAAO,IAAK;YACrCH,gBAAgB,CAACI,IAAI,CAACtF,OAAO,CAAC8E,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAEO,OAAO,CAAC,CAAC;YACpFD,mBAAmB,CAACE,IAAI,CACtBtF,OAAO,CAAC8E,oBAAoB,CAAC,sBAAsB,EAAE,sBAAsB,EAAEO,OAAO,CACtF,CAAC;UACH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,MAAMnD,OAAO,CAACC,GAAG,CAAC+C,gBAAgB,CAAC,CAACK,IAAI,CAAEZ,QAAQ,IAAK;UACrDA,QAAQ,CAACpD,OAAO,CAAC,MAAO8D,OAAO,IAAK;YAClCF,eAAe,CAACG,IAAI,CAClBtF,OAAO,CAAC8E,oBAAoB,CAAC,UAAU,EAAE,SAAS,EAAEO,OAAO,CAACG,QAAQ,CACtE,CAAC;UACH,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,MAAMtD,OAAO,CAACC,GAAG,CAACiD,mBAAmB,CAAC;QACtC,MAAMlD,OAAO,CAACC,GAAG,CAACgD,eAAe,CAAC;QAElC,MAAMM,gBAAgB,GAAG,MAAMxD,4BAA4B,CACzDlC,qBAAqB,CAACkF,iBAAiB,EAAE9B,eAAe,CAAC,EACzDtB,eACF,CAAC;QAED,IAAI,CAAChC,OAAO,CAACkE,iBAAiB,CAAC,EAAE;UAC/B0B,gBAAgB,CAAC,CAAC,CAAC,CAACC,WAAW,GAC7B3B,iBAAiB,EAAE2B,WAAW,IAAI3B,iBAAiB,EAAE4B,IAAI,EAAED,WAAW;QAC1E;QAEA,IAAI,CAAC9B,yBAAyB,IAAIL,mBAAmB,KAAKD,mBAAmB,EAAE;UAC7EmC,gBAAgB,CAAClE,OAAO,CAAEhB,QAAQ,IAAK;YACrCA,QAAQ,CAACmF,WAAW,GAAGpC,mBAAmB;UAC5C,CAAC,CAAC;QACJ;QAEAN,QAAQ,CACN3D,OAAO,CAAC;UACNgE,mBAAmB,EAAEU,iBAAiB;UACtC3D,SAAS,EAAEqF;QACb,CAAC,CACH,CAAC;QAED,IAAI1C,gBAAgB,EAAE;UACpBA,gBAAgB,CAAC0C,gBAAgB,CAAC;QACpC;MACF;IACF,CAAC,CAAC,OAAOG,GAAG,EAAE;MACZC,OAAO,CAACC,KAAK,CAAC,0BAA0B,EAAEF,GAAG,CAAC;IAChD,CAAC,SAAS;MACRlC,aAAa,CAACI,OAAO,GAAG,KAAK;MAC7BL,YAAY,CAAC,KAAK,CAAC;IACrB;EACF,CAAC;EAEDxE,SAAS,CAAC,MAAM;IACd4E,cAAc,CAAC,CAAC;EAClB,CAAC,EAAE,CAACX,gBAAgB,CAAC,CAAC;EAEtB,OAAO;IACL9C,SAAS;IACToD;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReferralMutations.js","names":["useEffect","useRef","isEmpty","compact","get","intersectionBy","setData","removeReferralProgram","removeErrorByIndex","CALLBACKS","DRAFT_AUTHORIZATION_PROGRAM_CHANGE_MESSAGE","useReferralMutations","_ref","referrals","selectedPrograms","selectedIndex","setSelectedIndex","errors","setFieldErrors","dispatch","saveValuesTimeoutRef","current","clearTimeout","saveValuesOnChange","props","values","updatedReferrals","setTimeout","selectedReferralHasAuthorization","preventAuthorizedDraftProgramChange","notify","error","moveToExistingReferral","index","program","programs","filter","p","id","newErrors","newIndex","moveToNewReferral","referral","newReferral","description","persistedAttachments","pendingAttachments","removablePersistedAttachments","newReferrals","length","removeProgram","programName","programId","serviceId","newReferralPrograms","flatMap","r","newSelectedPrograms","updateSelectedReferral","updatedFields","nextReferrals","map","updateAttachments","attachments","updatePersistedAttachments","removableAttachments"],"sources":["../../../../src/pages/builder/hooks/useReferralMutations.js"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { isEmpty, compact, get, intersectionBy } from 'lodash';\nimport { setData } from '../../../context/AppCreateReferralProvider';\nimport { removeReferralProgram } from '../../../actions/Referral/removeReferralProgram';\nimport { removeErrorByIndex } from '../utils';\nimport { CALLBACKS } from '../../../api/config';\nimport { DRAFT_AUTHORIZATION_PROGRAM_CHANGE_MESSAGE } from '../../../constants';\n\nexport default function useReferralMutations({\n referrals,\n selectedPrograms,\n selectedIndex,\n setSelectedIndex,\n errors,\n setFieldErrors,\n dispatch,\n}) {\n const saveValuesTimeoutRef = useRef(null);\n\n useEffect(() => () => {\n if (saveValuesTimeoutRef.current) {\n clearTimeout(saveValuesTimeoutRef.current);\n }\n }, []);\n\n const saveValuesOnChange = (props) => {\n const { values } = props;\n const updatedReferrals = [...referrals];\n updatedReferrals[selectedIndex] = {\n ...referrals[selectedIndex],\n ...values\n }\n\n if (saveValuesTimeoutRef.current) {\n clearTimeout(saveValuesTimeoutRef.current);\n }\n\n // Testing: Avoid React Final Form error: FormSpy Cannot update a component while rendering\n // https://github.com/final-form/react-final-form/issues/809#issue-638963034\n saveValuesTimeoutRef.current = setTimeout(() => {\n dispatch(setData({\n referrals: [...updatedReferrals]\n }));\n\n saveValuesTimeoutRef.current = null;\n }, 0);\n }\n\n const selectedReferralHasAuthorization = () => !!get(\n referrals,\n `[${selectedIndex}].case.service_authorization.id`,\n );\n\n const preventAuthorizedDraftProgramChange = () => {\n if (!selectedReferralHasAuthorization()) {\n return false;\n }\n\n CALLBACKS.notify?.error?.(DRAFT_AUTHORIZATION_PROGRAM_CHANGE_MESSAGE);\n return true;\n };\n\n const moveToExistingReferral = (index, program) => {\n if (preventAuthorizedDraftProgramChange()) return;\n\n const { programs } = referrals[selectedIndex];\n\n referrals[selectedIndex] = {\n ...referrals[selectedIndex],\n programs: programs.filter((p) => p.id !== program.id),\n }\n if (isEmpty(referrals[selectedIndex].programs)) {\n referrals[selectedIndex] = null;\n }\n\n referrals[index] = {\n ...referrals[index],\n programs: [...referrals[index].programs, program]\n }\n\n const newErrors = removeErrorByIndex(errors, selectedIndex);\n setFieldErrors(newErrors);\n\n dispatch(setData({\n referrals: compact(referrals),\n }));\n\n const newIndex = selectedIndex < index ? index - 1 : index;\n setSelectedIndex(newIndex);\n }\n\n const moveToNewReferral = (program) => {\n if (preventAuthorizedDraftProgramChange()) return;\n\n const referral = referrals[selectedIndex];\n referral.programs = referral.programs.filter((p) => p.id !== program.id);\n\n const newReferral = {\n ...referral,\n programs: [program],\n description: '',\n persistedAttachments: [],\n pendingAttachments: [],\n removablePersistedAttachments: [],\n }\n\n const newReferrals = [...referrals, newReferral];\n\n dispatch(setData({\n referrals: newReferrals,\n }));\n\n setSelectedIndex(newReferrals.length - 1);\n }\n\n const removeProgram = (programName, programId, serviceId) => {\n if (preventAuthorizedDraftProgramChange()) return;\n\n const referral = referrals[selectedIndex];\n const newReferral = removeReferralProgram({ referral, programName, programId, serviceId });\n\n referrals[selectedIndex] = newReferral ? {\n ...newReferral\n } : null;\n\n const newReferrals = compact(referrals);\n const newReferralPrograms = newReferrals.flatMap((r) => r.programs);\n const newSelectedPrograms = intersectionBy(selectedPrograms, newReferralPrograms, 'id');\n\n dispatch(setData({\n referrals: [...newReferrals],\n selectedPrograms: [...newSelectedPrograms],\n }));\n\n if (!referrals[selectedIndex]) {\n const newErrors = removeErrorByIndex(errors, selectedIndex);\n setFieldErrors(newErrors);\n setSelectedIndex(0);\n }\n }\n\n const updateSelectedReferral = (updatedFields) => {\n const nextReferrals = referrals.map((referral, index) => (\n index === selectedIndex\n ? {\n ...referral,\n ...updatedFields,\n }\n : referral\n ));\n\n dispatch(setData({\n referrals: nextReferrals,\n }));\n };\n\n const updateAttachments = (attachments) => {\n updateSelectedReferral({\n pendingAttachments: attachments,\n });\n };\n\n const updatePersistedAttachments = (attachments, removableAttachments) => {\n updateSelectedReferral({\n persistedAttachments: attachments,\n removablePersistedAttachments: removableAttachments,\n });\n };\n\n return {\n saveValuesOnChange,\n moveToExistingReferral,\n moveToNewReferral,\n removeProgram,\n updateAttachments,\n updatePersistedAttachments,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useReferralMutations.js","names":["useEffect","useRef","isEmpty","compact","get","intersectionBy","setData","removeReferralProgram","removeErrorByIndex","CALLBACKS","DRAFT_AUTHORIZATION_PROGRAM_CHANGE_MESSAGE","useReferralMutations","_ref","referrals","selectedPrograms","selectedIndex","setSelectedIndex","errors","setFieldErrors","dispatch","saveValuesTimeoutRef","current","clearTimeout","saveValuesOnChange","props","values","updatedReferrals","setTimeout","selectedReferralHasAuthorization","preventAuthorizedDraftProgramChange","notify","error","moveToExistingReferral","index","program","programs","filter","p","id","newErrors","newIndex","moveToNewReferral","referral","newReferral","description","persistedAttachments","pendingAttachments","removablePersistedAttachments","newReferrals","length","removeProgram","programName","programId","serviceId","newReferralPrograms","flatMap","r","newSelectedPrograms","updateSelectedReferral","updatedFields","nextReferrals","map","updateAttachments","attachments","updatePersistedAttachments","removableAttachments"],"sources":["../../../../src/pages/builder/hooks/useReferralMutations.js"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { isEmpty, compact, get, intersectionBy } from 'lodash';\nimport { setData } from '../../../context/AppCreateReferralProvider';\nimport { removeReferralProgram } from '../../../actions/Referral/removeReferralProgram';\nimport { removeErrorByIndex } from '../utils';\nimport { CALLBACKS } from '../../../api/config';\nimport { DRAFT_AUTHORIZATION_PROGRAM_CHANGE_MESSAGE } from '../../../constants';\n\nexport default function useReferralMutations({\n referrals,\n selectedPrograms,\n selectedIndex,\n setSelectedIndex,\n errors,\n setFieldErrors,\n dispatch,\n}) {\n const saveValuesTimeoutRef = useRef(null);\n\n useEffect(\n () => () => {\n if (saveValuesTimeoutRef.current) {\n clearTimeout(saveValuesTimeoutRef.current);\n }\n },\n [],\n );\n\n const saveValuesOnChange = (props) => {\n const { values } = props;\n const updatedReferrals = [...referrals];\n updatedReferrals[selectedIndex] = {\n ...referrals[selectedIndex],\n ...values,\n };\n\n if (saveValuesTimeoutRef.current) {\n clearTimeout(saveValuesTimeoutRef.current);\n }\n\n // Testing: Avoid React Final Form error: FormSpy Cannot update a component while rendering\n // https://github.com/final-form/react-final-form/issues/809#issue-638963034\n saveValuesTimeoutRef.current = setTimeout(() => {\n dispatch(\n setData({\n referrals: [...updatedReferrals],\n }),\n );\n\n saveValuesTimeoutRef.current = null;\n }, 0);\n };\n\n const selectedReferralHasAuthorization = () =>\n !!get(referrals, `[${selectedIndex}].case.service_authorization.id`);\n\n const preventAuthorizedDraftProgramChange = () => {\n if (!selectedReferralHasAuthorization()) {\n return false;\n }\n\n CALLBACKS.notify?.error?.(DRAFT_AUTHORIZATION_PROGRAM_CHANGE_MESSAGE);\n return true;\n };\n\n const moveToExistingReferral = (index, program) => {\n if (preventAuthorizedDraftProgramChange()) return;\n\n const { programs } = referrals[selectedIndex];\n\n referrals[selectedIndex] = {\n ...referrals[selectedIndex],\n programs: programs.filter((p) => p.id !== program.id),\n };\n if (isEmpty(referrals[selectedIndex].programs)) {\n referrals[selectedIndex] = null;\n }\n\n referrals[index] = {\n ...referrals[index],\n programs: [...referrals[index].programs, program],\n };\n\n const newErrors = removeErrorByIndex(errors, selectedIndex);\n setFieldErrors(newErrors);\n\n dispatch(\n setData({\n referrals: compact(referrals),\n }),\n );\n\n const newIndex = selectedIndex < index ? index - 1 : index;\n setSelectedIndex(newIndex);\n };\n\n const moveToNewReferral = (program) => {\n if (preventAuthorizedDraftProgramChange()) return;\n\n const referral = referrals[selectedIndex];\n referral.programs = referral.programs.filter((p) => p.id !== program.id);\n\n const newReferral = {\n ...referral,\n programs: [program],\n description: '',\n persistedAttachments: [],\n pendingAttachments: [],\n removablePersistedAttachments: [],\n };\n\n const newReferrals = [...referrals, newReferral];\n\n dispatch(\n setData({\n referrals: newReferrals,\n }),\n );\n\n setSelectedIndex(newReferrals.length - 1);\n };\n\n const removeProgram = (programName, programId, serviceId) => {\n if (preventAuthorizedDraftProgramChange()) return;\n\n const referral = referrals[selectedIndex];\n const newReferral = removeReferralProgram({ referral, programName, programId, serviceId });\n\n referrals[selectedIndex] = newReferral\n ? {\n ...newReferral,\n }\n : null;\n\n const newReferrals = compact(referrals);\n const newReferralPrograms = newReferrals.flatMap((r) => r.programs);\n const newSelectedPrograms = intersectionBy(selectedPrograms, newReferralPrograms, 'id');\n\n dispatch(\n setData({\n referrals: [...newReferrals],\n selectedPrograms: [...newSelectedPrograms],\n }),\n );\n\n if (!referrals[selectedIndex]) {\n const newErrors = removeErrorByIndex(errors, selectedIndex);\n setFieldErrors(newErrors);\n setSelectedIndex(0);\n }\n };\n\n const updateSelectedReferral = (updatedFields) => {\n const nextReferrals = referrals.map((referral, index) =>\n index === selectedIndex\n ? {\n ...referral,\n ...updatedFields,\n }\n : referral,\n );\n\n dispatch(\n setData({\n referrals: nextReferrals,\n }),\n );\n };\n\n const updateAttachments = (attachments) => {\n updateSelectedReferral({\n pendingAttachments: attachments,\n });\n };\n\n const updatePersistedAttachments = (attachments, removableAttachments) => {\n updateSelectedReferral({\n persistedAttachments: attachments,\n removablePersistedAttachments: removableAttachments,\n });\n };\n\n return {\n saveValuesOnChange,\n moveToExistingReferral,\n moveToNewReferral,\n removeProgram,\n updateAttachments,\n updatePersistedAttachments,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildGroupedReferrals.js","names":["every","head","flatMap","isUnlistedReferral","filterNetworks","programIsOffPlatform","programIsOnPlatform","separateSensitiveAndNonSensitiveAuthPrograms","createSameFeeReferrals","createSensitiveProgramReferrals","createNonAuthReferrals","assignSingleNetworkIfAvailable","attachUnlistedProgramToMatchingReferral","buildMultipleNetworkReferrals","buildNoNetworkReferrals","buildSameNetworkReferrals","createReferralSplitter","keepReferralsWithPrograms","splitProgramsByNetworkAvailability","splitReferralsByListingStatus","withPreventUngroup","fn","referral","prevent_ungroup","groupByNetworkImpl","networks","length","network","singleNetworkPrograms","multipleNetworkPrograms","noNetworkPrograms","programs","sameNetworkReferrals","multipleNetworkReferrals","noNetworkReferrals","groupByNetwork","groupByNetworkStatus","map","p","inNetworkPrograms","filter","OONPrograms","isSensitiveProgram","program","provider","sensitive","groupBySensitivityImpl","groupBySensitivity","isCoordinationCenterProgram","provider_type","groupByCCImpl","groupByCC","preventGroupingForSensitiveProvider","cloneReferralsWithPrograms","referrals","groupByFunded","fundedWithAuthorizationPrograms","fee_schedule_program","authorization_required","fundedWithoutAuthorizationPrograms","sensitiveAuthPrograms","nonSensitive","nonSensitiveAuthPrograms","sameFeeReferrals","sensitiveProgramReferrals","nonAuthReferrals","groupUnlistedProgramsToReferrals","unlistedReferrals","listedReferrals","listedReferralCopies","unlistedReferralCopies","updatedUnlistedReferrals","unlistedReferral","updatedUnlistedReferralAfterListedMatch","updatedUnlistedReferral","Object","assign","GROUP_OPERATIONS","buildGroupedReferrals","newReferrals","currentProvider","groupedReferrals","reduce","operation"],"sources":["../../../../src/pages/builder/utils/buildGroupedReferrals.js"],"sourcesContent":["import { every, head, flatMap } from 'lodash';\nimport {\n isUnlistedReferral,\n filterNetworks,\n programIsOffPlatform,\n programIsOnPlatform,\n separateSensitiveAndNonSensitiveAuthPrograms,\n createSameFeeReferrals,\n createSensitiveProgramReferrals,\n createNonAuthReferrals,\n} from '../utils';\nimport {\n assignSingleNetworkIfAvailable,\n attachUnlistedProgramToMatchingReferral,\n buildMultipleNetworkReferrals,\n buildNoNetworkReferrals,\n buildSameNetworkReferrals,\n createReferralSplitter,\n keepReferralsWithPrograms,\n splitProgramsByNetworkAvailability,\n splitReferralsByListingStatus,\n} from './buildGroupedReferralsHelpers';\n\n// Grouping Rules:\n// - On- and off-platform programs cannot be grouped\n// - Service must be the same\n// - Programs in coordination centers cannot be grouped\n// - Programs must be in the same network\n// - Programs in sensitive providers cannot be grouped\n// - Programs at the same provider cannot be grouped\n// - Users at sensitive providers cannot group programs\n// - Funded programs that require authroization with the same fee schedule program can be grouped\n// - Unlisted programs can only be grouped with programs in the same service and with off platform referrals\n\nconst withPreventUngroup = (fn) => (referral) => (\n referral.prevent_ungroup ? [referral] : fn(referral)\n);\n\nconst groupByNetworkImpl = (referral) => {\n const networks = filterNetworks(referral);\n // if there is only one possible network, set the referral's network and return the referral\n if (networks.length === 1 || isUnlistedReferral(referral)) {\n referral.network = head(networks);\n return [referral];\n }\n\n const {\n singleNetworkPrograms,\n multipleNetworkPrograms,\n noNetworkPrograms,\n } = splitProgramsByNetworkAvailability(referral.programs);\n\n const sameNetworkReferrals = buildSameNetworkReferrals(referral, singleNetworkPrograms);\n const multipleNetworkReferrals = buildMultipleNetworkReferrals(referral, multipleNetworkPrograms);\n const noNetworkReferrals = buildNoNetworkReferrals(referral, noNetworkPrograms);\n\n return [...multipleNetworkReferrals, ...sameNetworkReferrals, ...noNetworkReferrals];\n}\n\nconst groupByNetwork = withPreventUngroup(groupByNetworkImpl);\n\nconst groupByNetworkStatus = (referral) => {\n if (referral.prevent_ungroup) {\n return [referral];\n }\n // if every program is on-platform or every programs is off-platform, return the referral\n if (every(referral.programs.map(p => programIsOnPlatform(p))) ||\n every(referral.programs.map(p => programIsOffPlatform(p)))) {\n return [referral];\n }\n // divide programs into on- and off-platform referrals\n const inNetworkPrograms = referral.programs.filter(p => programIsOnPlatform(p));\n const OONPrograms = referral.programs.filter(p => programIsOffPlatform(p));\n\n return [\n ...inNetworkPrograms.length ? [{ ...referral, programs: inNetworkPrograms }] : [],\n ...OONPrograms.length ? [{ ...referral, programs: OONPrograms }] : []\n ];\n}\n\nconst isSensitiveProgram = (program) => !!program?.provider?.sensitive;\nconst groupBySensitivityImpl = createReferralSplitter(isSensitiveProgram);\n\nconst groupBySensitivity = withPreventUngroup(groupBySensitivityImpl);\n\nconst isCoordinationCenterProgram = (program) => (\n program?.provider?.provider_type === 'coordination_center'\n);\nconst groupByCCImpl = createReferralSplitter(isCoordinationCenterProgram);\n\nconst groupByCC = withPreventUngroup(groupByCCImpl);\n\nconst preventGroupingForSensitiveProvider = (referral) => {\n assignSingleNetworkIfAvailable(referral);\n const { programs } = referral;\n return programs.length > 1 ?\n programs.map(program => ({ ...referral, programs: [program] })) :\n [referral];\n};\n\nconst cloneReferralsWithPrograms = (referrals) => (\n referrals.map((referral) => ({\n ...referral,\n programs: [...referral.programs],\n }))\n);\n\nconst groupByFunded = (referral) => {\n assignSingleNetworkIfAvailable(referral);\n\n const fundedWithAuthorizationPrograms = referral.programs.filter(p => p.fee_schedule_program?.authorization_required);\n const fundedWithoutAuthorizationPrograms = referral.programs.filter(p => !p.fee_schedule_program?.authorization_required);\n\n const {\n sensitive: sensitiveAuthPrograms,\n nonSensitive: nonSensitiveAuthPrograms,\n } = separateSensitiveAndNonSensitiveAuthPrograms(fundedWithAuthorizationPrograms);\n\n const sameFeeReferrals = createSameFeeReferrals(referral, nonSensitiveAuthPrograms);\n const sensitiveProgramReferrals = createSensitiveProgramReferrals(referral, sensitiveAuthPrograms);\n const nonAuthReferrals = createNonAuthReferrals(referral, fundedWithoutAuthorizationPrograms);\n\n return [...nonAuthReferrals, ...sameFeeReferrals, ...sensitiveProgramReferrals];\n};\n\nconst groupUnlistedProgramsToReferrals = (referrals) => {\n const { unlistedReferrals, listedReferrals } = splitReferralsByListingStatus(referrals);\n\n if (unlistedReferrals.length === 0) {\n return listedReferrals;\n }\n\n const listedReferralCopies = cloneReferralsWithPrograms(listedReferrals);\n const unlistedReferralCopies = cloneReferralsWithPrograms(unlistedReferrals);\n\n const updatedUnlistedReferrals = keepReferralsWithPrograms(\n unlistedReferralCopies.map((unlistedReferral) => {\n const updatedUnlistedReferralAfterListedMatch = attachUnlistedProgramToMatchingReferral(\n unlistedReferral,\n listedReferralCopies,\n );\n\n const updatedUnlistedReferral = attachUnlistedProgramToMatchingReferral(\n updatedUnlistedReferralAfterListedMatch,\n unlistedReferralCopies.filter((referral) => referral !== unlistedReferral),\n );\n\n Object.assign(unlistedReferral, updatedUnlistedReferral);\n\n return unlistedReferral;\n }),\n );\n\n return [...listedReferralCopies, ...updatedUnlistedReferrals];\n}\n\nconst GROUP_OPERATIONS = [\n groupByFunded,\n groupByNetwork,\n groupByNetworkStatus,\n groupBySensitivity,\n groupByCC,\n];\n\nexport const buildGroupedReferrals = (newReferrals, currentProvider) => {\n // if the current provider is sensitive, prevent grouping\n if (currentProvider?.sensitive) {\n return flatMap(newReferrals, preventGroupingForSensitiveProvider);\n }\n\n const groupedReferrals = GROUP_OPERATIONS.reduce(\n (referrals, operation) => flatMap(referrals, operation),\n newReferrals,\n );\n\n return groupUnlistedProgramsToReferrals(groupedReferrals);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"buildGroupedReferrals.js","names":["every","head","flatMap","isUnlistedReferral","filterNetworks","programIsOffPlatform","programIsOnPlatform","separateSensitiveAndNonSensitiveAuthPrograms","createSameFeeReferrals","createSensitiveProgramReferrals","createNonAuthReferrals","assignSingleNetworkIfAvailable","attachUnlistedProgramToMatchingReferral","buildMultipleNetworkReferrals","buildNoNetworkReferrals","buildSameNetworkReferrals","createReferralSplitter","keepReferralsWithPrograms","splitProgramsByNetworkAvailability","splitReferralsByListingStatus","withPreventUngroup","fn","referral","prevent_ungroup","groupByNetworkImpl","networks","length","network","singleNetworkPrograms","multipleNetworkPrograms","noNetworkPrograms","programs","sameNetworkReferrals","multipleNetworkReferrals","noNetworkReferrals","groupByNetwork","groupByNetworkStatus","map","p","inNetworkPrograms","filter","OONPrograms","isSensitiveProgram","program","provider","sensitive","groupBySensitivityImpl","groupBySensitivity","isCoordinationCenterProgram","provider_type","groupByCCImpl","groupByCC","preventGroupingForSensitiveProvider","cloneReferralsWithPrograms","referrals","groupByFunded","fundedWithAuthorizationPrograms","fee_schedule_program","authorization_required","fundedWithoutAuthorizationPrograms","sensitiveAuthPrograms","nonSensitive","nonSensitiveAuthPrograms","sameFeeReferrals","sensitiveProgramReferrals","nonAuthReferrals","groupUnlistedProgramsToReferrals","unlistedReferrals","listedReferrals","listedReferralCopies","unlistedReferralCopies","updatedUnlistedReferrals","unlistedReferral","updatedUnlistedReferralAfterListedMatch","updatedUnlistedReferral","Object","assign","GROUP_OPERATIONS","buildGroupedReferrals","newReferrals","currentProvider","groupedReferrals","reduce","operation"],"sources":["../../../../src/pages/builder/utils/buildGroupedReferrals.js"],"sourcesContent":["import { every, head, flatMap } from 'lodash';\nimport {\n isUnlistedReferral,\n filterNetworks,\n programIsOffPlatform,\n programIsOnPlatform,\n separateSensitiveAndNonSensitiveAuthPrograms,\n createSameFeeReferrals,\n createSensitiveProgramReferrals,\n createNonAuthReferrals,\n} from '../utils';\nimport {\n assignSingleNetworkIfAvailable,\n attachUnlistedProgramToMatchingReferral,\n buildMultipleNetworkReferrals,\n buildNoNetworkReferrals,\n buildSameNetworkReferrals,\n createReferralSplitter,\n keepReferralsWithPrograms,\n splitProgramsByNetworkAvailability,\n splitReferralsByListingStatus,\n} from './buildGroupedReferralsHelpers';\n\n// Grouping Rules:\n// - On- and off-platform programs cannot be grouped\n// - Service must be the same\n// - Programs in coordination centers cannot be grouped\n// - Programs must be in the same network\n// - Programs in sensitive providers cannot be grouped\n// - Programs at the same provider cannot be grouped\n// - Users at sensitive providers cannot group programs\n// - Funded programs that require authroization with the same fee schedule program can be grouped\n// - Unlisted programs can only be grouped with programs in the same service and with off platform referrals\n\nconst withPreventUngroup = (fn) => (referral) =>\n referral.prevent_ungroup ? [referral] : fn(referral);\n\nconst groupByNetworkImpl = (referral) => {\n const networks = filterNetworks(referral);\n // if there is only one possible network, set the referral's network and return the referral\n if (networks.length === 1 || isUnlistedReferral(referral)) {\n referral.network = head(networks);\n return [referral];\n }\n\n const { singleNetworkPrograms, multipleNetworkPrograms, noNetworkPrograms } =\n splitProgramsByNetworkAvailability(referral.programs);\n\n const sameNetworkReferrals = buildSameNetworkReferrals(referral, singleNetworkPrograms);\n const multipleNetworkReferrals = buildMultipleNetworkReferrals(referral, multipleNetworkPrograms);\n const noNetworkReferrals = buildNoNetworkReferrals(referral, noNetworkPrograms);\n\n return [...multipleNetworkReferrals, ...sameNetworkReferrals, ...noNetworkReferrals];\n};\n\nconst groupByNetwork = withPreventUngroup(groupByNetworkImpl);\n\nconst groupByNetworkStatus = (referral) => {\n if (referral.prevent_ungroup) {\n return [referral];\n }\n // if every program is on-platform or every programs is off-platform, return the referral\n if (\n every(referral.programs.map((p) => programIsOnPlatform(p))) ||\n every(referral.programs.map((p) => programIsOffPlatform(p)))\n ) {\n return [referral];\n }\n // divide programs into on- and off-platform referrals\n const inNetworkPrograms = referral.programs.filter((p) => programIsOnPlatform(p));\n const OONPrograms = referral.programs.filter((p) => programIsOffPlatform(p));\n\n return [\n ...(inNetworkPrograms.length ? [{ ...referral, programs: inNetworkPrograms }] : []),\n ...(OONPrograms.length ? [{ ...referral, programs: OONPrograms }] : []),\n ];\n};\n\nconst isSensitiveProgram = (program) => !!program?.provider?.sensitive;\nconst groupBySensitivityImpl = createReferralSplitter(isSensitiveProgram);\n\nconst groupBySensitivity = withPreventUngroup(groupBySensitivityImpl);\n\nconst isCoordinationCenterProgram = (program) =>\n program?.provider?.provider_type === 'coordination_center';\nconst groupByCCImpl = createReferralSplitter(isCoordinationCenterProgram);\n\nconst groupByCC = withPreventUngroup(groupByCCImpl);\n\nconst preventGroupingForSensitiveProvider = (referral) => {\n assignSingleNetworkIfAvailable(referral);\n const { programs } = referral;\n return programs.length > 1\n ? programs.map((program) => ({ ...referral, programs: [program] }))\n : [referral];\n};\n\nconst cloneReferralsWithPrograms = (referrals) =>\n referrals.map((referral) => ({\n ...referral,\n programs: [...referral.programs],\n }));\n\nconst groupByFunded = (referral) => {\n assignSingleNetworkIfAvailable(referral);\n\n const fundedWithAuthorizationPrograms = referral.programs.filter(\n (p) => p.fee_schedule_program?.authorization_required,\n );\n const fundedWithoutAuthorizationPrograms = referral.programs.filter(\n (p) => !p.fee_schedule_program?.authorization_required,\n );\n\n const { sensitive: sensitiveAuthPrograms, nonSensitive: nonSensitiveAuthPrograms } =\n separateSensitiveAndNonSensitiveAuthPrograms(fundedWithAuthorizationPrograms);\n\n const sameFeeReferrals = createSameFeeReferrals(referral, nonSensitiveAuthPrograms);\n const sensitiveProgramReferrals = createSensitiveProgramReferrals(\n referral,\n sensitiveAuthPrograms,\n );\n const nonAuthReferrals = createNonAuthReferrals(referral, fundedWithoutAuthorizationPrograms);\n\n return [...nonAuthReferrals, ...sameFeeReferrals, ...sensitiveProgramReferrals];\n};\n\nconst groupUnlistedProgramsToReferrals = (referrals) => {\n const { unlistedReferrals, listedReferrals } = splitReferralsByListingStatus(referrals);\n\n if (unlistedReferrals.length === 0) {\n return listedReferrals;\n }\n\n const listedReferralCopies = cloneReferralsWithPrograms(listedReferrals);\n const unlistedReferralCopies = cloneReferralsWithPrograms(unlistedReferrals);\n\n const updatedUnlistedReferrals = keepReferralsWithPrograms(\n unlistedReferralCopies.map((unlistedReferral) => {\n const updatedUnlistedReferralAfterListedMatch = attachUnlistedProgramToMatchingReferral(\n unlistedReferral,\n listedReferralCopies,\n );\n\n const updatedUnlistedReferral = attachUnlistedProgramToMatchingReferral(\n updatedUnlistedReferralAfterListedMatch,\n unlistedReferralCopies.filter((referral) => referral !== unlistedReferral),\n );\n\n Object.assign(unlistedReferral, updatedUnlistedReferral);\n\n return unlistedReferral;\n }),\n );\n\n return [...listedReferralCopies, ...updatedUnlistedReferrals];\n};\n\nconst GROUP_OPERATIONS = [\n groupByFunded,\n groupByNetwork,\n groupByNetworkStatus,\n groupBySensitivity,\n groupByCC,\n];\n\nexport const buildGroupedReferrals = (newReferrals, currentProvider) => {\n // if the current provider is sensitive, prevent grouping\n if (currentProvider?.sensitive) {\n return flatMap(newReferrals, preventGroupingForSensitiveProvider);\n }\n\n const groupedReferrals = GROUP_OPERATIONS.reduce(\n (referrals, operation) => flatMap(referrals, operation),\n newReferrals,\n );\n\n return groupUnlistedProgramsToReferrals(groupedReferrals);\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildGroupedReferralsHelpers.js","names":["every","groupBy","head","OFF_PLATFORM_REFERRALS_ONLY","filterNetworks","isUnlistedProgram","createReferralWithPrograms","referral","programs","extraFields","arguments","length","undefined","createSingleProgramReferral","program","assignSingleNetworkIfAvailable","networks","network","getReferralNetworkForProgram","networkOptions","find","id","hasSingleNetwork","provider","hasMultipleNetworks","hasNoNetworks","splitProgramsByNetworkAvailability","singleNetworkPrograms","filter","multipleNetworkPrograms","noNetworkPrograms","buildSameNetworkReferrals","Object","values","map","groupedPrograms","buildMultipleNetworkReferrals","buildNoNetworkReferrals","shouldReturnReferralAsIs","predicate","splitReferralByProgramPredicate","matchingPrograms","remainingPrograms","createSplitReferrals","createReferralSplitter","splitReferralsByListingStatus","referrals","listedReferrals","unlistedReferrals","forEach","push","matchesOffPlatformService","unlistedReferral","services","service","status","toLowerCase","attachUnlistedProgramToMatchingReferral","unlistedProgram","matchingReferral","slice","keepReferralsWithPrograms"],"sources":["../../../../src/pages/builder/utils/buildGroupedReferralsHelpers.js"],"sourcesContent":["import { every, groupBy, head } from 'lodash';\nimport { OFF_PLATFORM_REFERRALS_ONLY } from '../constants';\nimport { filterNetworks, isUnlistedProgram } from '../utils';\n\nexport const createReferralWithPrograms = (referral, programs, extraFields = {}) => ({\n ...referral,\n programs,\n ...extraFields,\n});\n\nexport const createSingleProgramReferral = (referral, program, extraFields = {}) => (\n createReferralWithPrograms(referral, [program], extraFields)\n);\n\nexport const assignSingleNetworkIfAvailable = (referral) => {\n const networks = filterNetworks(referral);\n\n if (networks.length === 1) {\n referral.network = head(networks);\n }\n};\n\nexport const getReferralNetworkForProgram = (referral, program) => {\n const networkOptions = filterNetworks({ ...referral, programs: [program] });\n\n if (networkOptions.length === 1) {\n return head(networkOptions);\n }\n\n return networkOptions.find((network) => network.id === referral.network?.id) || null;\n};\n\nconst hasSingleNetwork = (program) => program.provider?.networks?.length === 1;\nconst hasMultipleNetworks = (program) => program.provider?.networks?.length > 1;\nconst hasNoNetworks = (program) => !program.provider?.networks?.length;\n\nexport const splitProgramsByNetworkAvailability = (programs) => ({\n singleNetworkPrograms: programs.filter(hasSingleNetwork),\n multipleNetworkPrograms: programs.filter(hasMultipleNetworks),\n noNetworkPrograms: programs.filter(hasNoNetworks),\n});\n\nexport const buildSameNetworkReferrals = (referral, programs) => (\n Object.values(groupBy(programs, 'provider.networks[0].id')).map((groupedPrograms) => (\n createReferralWithPrograms(referral, groupedPrograms, {\n network: head(groupedPrograms[0].provider?.networks),\n })\n ))\n);\n\nexport const buildMultipleNetworkReferrals = (referral, programs) => (\n programs.map((program) => (\n createSingleProgramReferral(referral, program, {\n network: getReferralNetworkForProgram(referral, program),\n })\n ))\n);\n\nexport const buildNoNetworkReferrals = (referral, programs) => (\n programs.map((program) => createSingleProgramReferral(referral, program))\n);\n\nexport const shouldReturnReferralAsIs = (referral, predicate) => (\n every(referral.programs, (program) => !predicate(program)) ||\n (referral.programs.length === 1 && predicate(head(referral.programs)))\n);\n\nexport const splitReferralByProgramPredicate = (referral, predicate) => ({\n matchingPrograms: referral.programs.filter(predicate),\n remainingPrograms: referral.programs.filter((program) => !predicate(program)),\n});\n\nexport const createSplitReferrals = (referral, matchingPrograms, remainingPrograms) => (\n [\n ...matchingPrograms.map((program) => createSingleProgramReferral(referral, program)),\n ...(remainingPrograms.length > 0 ? [createReferralWithPrograms(referral, remainingPrograms)] : []),\n ]\n);\n\nexport const createReferralSplitter = (predicate) => (referral) => {\n if (shouldReturnReferralAsIs(referral, predicate)) {\n return [referral];\n }\n\n const { matchingPrograms, remainingPrograms } = splitReferralByProgramPredicate(\n referral,\n predicate,\n );\n\n return createSplitReferrals(referral, matchingPrograms, remainingPrograms);\n};\n\nexport const splitReferralsByListingStatus = (referrals) => {\n const listedReferrals = [];\n const unlistedReferrals = [];\n\n referrals.forEach((referral) => {\n if (every(referral.programs, isUnlistedProgram)) {\n unlistedReferrals.push(referral);\n return;\n }\n\n listedReferrals.push(referral);\n });\n\n return { listedReferrals, unlistedReferrals };\n};\n\nconst matchesOffPlatformService = (unlistedReferral, referral) => (\n unlistedReferral.programs[0]?.services[0] === referral.service.id &&\n referral.programs[0]?.status?.toLowerCase() === OFF_PLATFORM_REFERRALS_ONLY\n);\n\nexport const attachUnlistedProgramToMatchingReferral = (unlistedReferral, referrals) => {\n const unlistedProgram = unlistedReferral.programs[0];\n const matchingReferral = referrals.find((referral) => (\n matchesOffPlatformService(unlistedReferral, referral)\n ));\n\n if (!unlistedProgram || !matchingReferral) {\n return unlistedReferral;\n }\n\n matchingReferral.programs.push(unlistedProgram);\n\n return {\n ...unlistedReferral,\n programs: unlistedReferral.programs.slice(1),\n };\n};\n\nexport const keepReferralsWithPrograms = (referrals) => (\n referrals.filter((referral) => referral?.programs?.length > 0)\n);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"buildGroupedReferralsHelpers.js","names":["every","groupBy","head","OFF_PLATFORM_REFERRALS_ONLY","filterNetworks","isUnlistedProgram","createReferralWithPrograms","referral","programs","extraFields","arguments","length","undefined","createSingleProgramReferral","program","assignSingleNetworkIfAvailable","networks","network","getReferralNetworkForProgram","networkOptions","find","id","hasSingleNetwork","provider","hasMultipleNetworks","hasNoNetworks","splitProgramsByNetworkAvailability","singleNetworkPrograms","filter","multipleNetworkPrograms","noNetworkPrograms","buildSameNetworkReferrals","Object","values","map","groupedPrograms","buildMultipleNetworkReferrals","buildNoNetworkReferrals","shouldReturnReferralAsIs","predicate","splitReferralByProgramPredicate","matchingPrograms","remainingPrograms","createSplitReferrals","createReferralSplitter","splitReferralsByListingStatus","referrals","listedReferrals","unlistedReferrals","forEach","push","matchesOffPlatformService","unlistedReferral","services","service","status","toLowerCase","attachUnlistedProgramToMatchingReferral","unlistedProgram","matchingReferral","slice","keepReferralsWithPrograms"],"sources":["../../../../src/pages/builder/utils/buildGroupedReferralsHelpers.js"],"sourcesContent":["import { every, groupBy, head } from 'lodash';\nimport { OFF_PLATFORM_REFERRALS_ONLY } from '../constants';\nimport { filterNetworks, isUnlistedProgram } from '../utils';\n\nexport const createReferralWithPrograms = (referral, programs, extraFields = {}) => ({\n ...referral,\n programs,\n ...extraFields,\n});\n\nexport const createSingleProgramReferral = (referral, program, extraFields = {}) =>\n createReferralWithPrograms(referral, [program], extraFields);\n\nexport const assignSingleNetworkIfAvailable = (referral) => {\n const networks = filterNetworks(referral);\n\n if (networks.length === 1) {\n referral.network = head(networks);\n }\n};\n\nexport const getReferralNetworkForProgram = (referral, program) => {\n const networkOptions = filterNetworks({ ...referral, programs: [program] });\n\n if (networkOptions.length === 1) {\n return head(networkOptions);\n }\n\n return networkOptions.find((network) => network.id === referral.network?.id) || null;\n};\n\nconst hasSingleNetwork = (program) => program.provider?.networks?.length === 1;\nconst hasMultipleNetworks = (program) => program.provider?.networks?.length > 1;\nconst hasNoNetworks = (program) => !program.provider?.networks?.length;\n\nexport const splitProgramsByNetworkAvailability = (programs) => ({\n singleNetworkPrograms: programs.filter(hasSingleNetwork),\n multipleNetworkPrograms: programs.filter(hasMultipleNetworks),\n noNetworkPrograms: programs.filter(hasNoNetworks),\n});\n\nexport const buildSameNetworkReferrals = (referral, programs) =>\n Object.values(groupBy(programs, 'provider.networks[0].id')).map((groupedPrograms) =>\n createReferralWithPrograms(referral, groupedPrograms, {\n network: head(groupedPrograms[0].provider?.networks),\n }),\n );\n\nexport const buildMultipleNetworkReferrals = (referral, programs) =>\n programs.map((program) =>\n createSingleProgramReferral(referral, program, {\n network: getReferralNetworkForProgram(referral, program),\n }),\n );\n\nexport const buildNoNetworkReferrals = (referral, programs) =>\n programs.map((program) => createSingleProgramReferral(referral, program));\n\nexport const shouldReturnReferralAsIs = (referral, predicate) =>\n every(referral.programs, (program) => !predicate(program)) ||\n (referral.programs.length === 1 && predicate(head(referral.programs)));\n\nexport const splitReferralByProgramPredicate = (referral, predicate) => ({\n matchingPrograms: referral.programs.filter(predicate),\n remainingPrograms: referral.programs.filter((program) => !predicate(program)),\n});\n\nexport const createSplitReferrals = (referral, matchingPrograms, remainingPrograms) => [\n ...matchingPrograms.map((program) => createSingleProgramReferral(referral, program)),\n ...(remainingPrograms.length > 0\n ? [createReferralWithPrograms(referral, remainingPrograms)]\n : []),\n];\n\nexport const createReferralSplitter = (predicate) => (referral) => {\n if (shouldReturnReferralAsIs(referral, predicate)) {\n return [referral];\n }\n\n const { matchingPrograms, remainingPrograms } = splitReferralByProgramPredicate(\n referral,\n predicate,\n );\n\n return createSplitReferrals(referral, matchingPrograms, remainingPrograms);\n};\n\nexport const splitReferralsByListingStatus = (referrals) => {\n const listedReferrals = [];\n const unlistedReferrals = [];\n\n referrals.forEach((referral) => {\n if (every(referral.programs, isUnlistedProgram)) {\n unlistedReferrals.push(referral);\n return;\n }\n\n listedReferrals.push(referral);\n });\n\n return { listedReferrals, unlistedReferrals };\n};\n\nconst matchesOffPlatformService = (unlistedReferral, referral) =>\n unlistedReferral.programs[0]?.services[0] === referral.service.id &&\n referral.programs[0]?.status?.toLowerCase() === OFF_PLATFORM_REFERRALS_ONLY;\n\nexport const attachUnlistedProgramToMatchingReferral = (unlistedReferral, referrals) => {\n const unlistedProgram = unlistedReferral.programs[0];\n const matchingReferral = referrals.find((referral) =>\n matchesOffPlatformService(unlistedReferral, referral),\n );\n\n if (!unlistedProgram || !matchingReferral) {\n return unlistedReferral;\n }\n\n matchingReferral.programs.push(unlistedProgram);\n\n return {\n ...unlistedReferral,\n programs: unlistedReferral.programs.slice(1),\n };\n};\n\nexport const keepReferralsWithPrograms = (referrals) =>\n referrals.filter((referral) => referral?.programs?.length > 0);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatProgramDetail.js","names":["isEmpty","ageRangeConverters","SEARCH_ROLES","SERVICE_AREA_TYPES","STATIC_FILTER_OPTIONS","selectHours","fetchProviderPrograms","US_STATES","ACCESSIBILITY_OPTIONS","LANGUAGE_OPTIONS","TRANSPORTATION_OPTIONS","PAYMENT_OPTIONS","POPULATIONS","PROGRAM_DELIVERY_OPTIONS","convertApiAgeRangeToUnits","processAgeText","parseAge","_ref","min_months","max_months","mapValuesToLabels","values","options","map","value","option","find","opt","label","join","getProgramProps","_ref2","name","description","eligibility_text","population_restrictions","accessibility_options","delivery_options","payment_options","population_specializations","languages","services","transportation_options","city_requirements","county_requirements","postal_code_requirements","state_requirements","age_specializations","gender_requirements","age_requirements","phone_numbers","email_addresses","website_url","locations","receiving_referrals","provider","offers_specialized_screening","fee_schedule_screenings","suggest_edit_enabled","id","hasRequirements","length","hasAccessibility","hasOtherEligibility","hasEligibility","hasContactInfo","hours","accessibilityLabels","languageLabels","transportationLabels","paymentLabels","populationRestrictionLabels","populationSpecializationLabels","deliveryOptionLabels","providersWithServices","appRoles","PAYMENTS","residency","hasEligibilityText","sort","_a","_b","is_primary","offersSpecializedScreening","feeScheduleScreenings","providerPrograms","favorPrimaryEmail","emailA","emailB","getProviderProps","_ref3","licensed","addresses","sensitive","emailsSortedByPriority","addr","email_address","provider_id","provider_name","provider_description","provider_phone_numbers","provider_email_addresses","provider_website_url","provider_hours","provider_licensed","provider_locations","provider_sensitive","hasOrgInfo","generateServesThisAreaOption","area","service_area_type","NATIONAL","state","state_abbreviation","toUpperCase","display_name","getMapProps","_ref4","service_areas","closestOrFirstLocation","loc","is_closest","servingArea","a","latitude","longitude","zoom","hasMap","formatForProgramDetail","program","programProps","providerProps","mapProps"],"sources":["../../../../src/pages/builder/utils/formatProgramDetail.js"],"sourcesContent":["import { isEmpty } from 'lodash';\nimport { ageRangeConverters } from '@unite-us/app-components';\nimport { SEARCH_ROLES, SERVICE_AREA_TYPES, STATIC_FILTER_OPTIONS } from '../../../constants';\nimport selectHours from '../utils';\nimport fetchProviderPrograms from '../../../actions/Referral/fetchCoreServices';\n\nconst { US_STATES, ACCESSIBILITY_OPTIONS, LANGUAGE_OPTIONS, TRANSPORTATION_OPTIONS, PAYMENT_OPTIONS, POPULATIONS, PROGRAM_DELIVERY_OPTIONS } = STATIC_FILTER_OPTIONS;\nconst { convertApiAgeRangeToUnits, processAgeText } = ageRangeConverters;\nconst parseAge = ({ min_months, max_months }) => {\n if (!min_months && !max_months) return '';\n\n return processAgeText(...convertApiAgeRangeToUnits(`${min_months}...${max_months}`));\n};\n\nconst mapValuesToLabels = (values, options) => {\n return values\n .map((value) => {\n const option = options.find((opt) => opt.value === value);\n return option ? option.label : value;\n })\n .join(', ');\n}\n\nconst getProgramProps = async ({\n name,\n description,\n eligibility_text,\n population_restrictions = [],\n accessibility_options = [],\n delivery_options = [],\n payment_options = [],\n population_specializations = [],\n languages = [],\n services = [],\n transportation_options = [],\n city_requirements = [],\n county_requirements = [],\n postal_code_requirements = [],\n state_requirements = [],\n age_specializations = {},\n gender_requirements = [],\n age_requirements = {},\n phone_numbers = [],\n email_addresses = [],\n website_url,\n locations = [],\n receiving_referrals,\n provider,\n offers_specialized_screening,\n fee_schedule_screenings,\n suggest_edit_enabled,\n id,\n}) => {\n const hasRequirements = !!age_requirements?.min_months\n || !!age_requirements?.max_months\n || !!city_requirements.length\n || !!county_requirements.length\n || !!gender_requirements.length\n || !!population_restrictions.length\n || !!postal_code_requirements.length\n || !!state_requirements.length;\n const hasAccessibility = !!delivery_options.length\n || !!languages.length\n || !!population_specializations.length\n || !!age_specializations?.min_months\n || !!age_specializations?.max_months\n || !!accessibility_options.length\n || !!transportation_options.length\n || !!payment_options.length;\n const hasOtherEligibility = !!eligibility_text;\n const hasEligibility = hasRequirements || hasAccessibility || hasOtherEligibility;\n const hasContactInfo = !!phone_numbers.length\n || !!email_addresses.length\n || !!website_url\n || !!locations.length;\n const hours = selectHours(locations, provider?.hours);\n const accessibilityLabels = mapValuesToLabels(accessibility_options, ACCESSIBILITY_OPTIONS);\n const languageLabels = mapValuesToLabels(languages, LANGUAGE_OPTIONS);\n const transportationLabels = mapValuesToLabels(transportation_options, TRANSPORTATION_OPTIONS);\n const paymentLabels = mapValuesToLabels(payment_options, PAYMENT_OPTIONS);\n const populationRestrictionLabels = mapValuesToLabels(population_restrictions, POPULATIONS);\n const populationSpecializationLabels = mapValuesToLabels(population_specializations, POPULATIONS);\n const deliveryOptionLabels = mapValuesToLabels(delivery_options, PROGRAM_DELIVERY_OPTIONS);\n \n const providersWithServices = await fetchProviderPrograms(provider?.id, id);\n const appRoles = [SEARCH_ROLES.PAYMENTS]\n\n return {\n name,\n description,\n eligibility_text,\n hasRequirements,\n hasAccessibility,\n hasOtherEligibility,\n hasEligibility,\n hasContactInfo,\n postal_code_requirements: postal_code_requirements.join(', '),\n city_requirements: city_requirements.join('; '),\n county_requirements: county_requirements.join('; '),\n state_requirements: state_requirements.join(', '),\n age_requirements: parseAge(age_requirements),\n age_specializations: parseAge(age_specializations),\n gender_requirements: gender_requirements.join(', '),\n delivery_options: deliveryOptionLabels,\n population_restrictions: populationRestrictionLabels,\n languages: languageLabels,\n population_specializations: populationSpecializationLabels,\n accessibility_options: accessibilityLabels,\n residency: {\n state_requirements: state_requirements.join(', '),\n city_requirements: city_requirements.join('; '),\n county_requirements: county_requirements.join('; '),\n postal_code_requirements: postal_code_requirements.join(', '),\n },\n hasEligibilityText: !isEmpty(eligibility_text),\n transportation_options: transportationLabels,\n payment_options: paymentLabels,\n services: providersWithServices.services,\n phone_numbers,\n email_addresses: email_addresses.sort((_a, _b) => (_b.is_primary === null ? -1 : 1)),\n website_url,\n locations,\n hours,\n receiving_referrals,\n offersSpecializedScreening: offers_specialized_screening,\n feeScheduleScreenings: fee_schedule_screenings,\n suggest_edit_enabled,\n providerPrograms: providersWithServices.providerPrograms,\n appRoles,\n };\n}\n\nconst favorPrimaryEmail = (emailA, emailB) => {\n if (emailB.is_primary) {\n return 1;\n }\n if (emailA.is_primary) {\n return -1;\n }\n return 0;\n}\n\nconst getProviderProps = ({\n name,\n description,\n phone_numbers,\n email_addresses,\n website_url,\n hours,\n licensed,\n addresses,\n id,\n sensitive,\n}) => {\n const emailsSortedByPriority = email_addresses.length > 0\n ? email_addresses\n .sort(favorPrimaryEmail)\n .map((addr) => addr.email_address)\n : [];\n\n return {\n provider_id: id,\n provider_name: name,\n provider_description: description,\n provider_phone_numbers: phone_numbers,\n provider_email_addresses: emailsSortedByPriority,\n provider_website_url: website_url,\n provider_hours: hours,\n provider_licensed: licensed,\n provider_locations: addresses,\n provider_sensitive: sensitive,\n hasOrgInfo:\n !isEmpty(description)\n || !isEmpty(phone_numbers)\n || !isEmpty(email_addresses)\n || !isEmpty(website_url)\n || !isEmpty(hours)\n || !isEmpty(locations),\n };\n}\n\nconst generateServesThisAreaOption = (area) => {\n if (area.service_area_type === SERVICE_AREA_TYPES.NATIONAL) {\n return SERVICE_AREA_TYPES.NATIONAL;\n }\n return US_STATES.find(\n (state) => state.value === area.state_abbreviation.toUpperCase(),\n ).display_name;\n}\n\nconst getMapProps = ({ locations = [], service_areas = [] }) => {\n const closestOrFirstLocation = locations?.find((loc) => loc.is_closest) ?? locations[0];\n let servingArea = '';\n if (service_areas?.length > 0) {\n const area = service_areas.find(\n (a) => a.service_area_type !== SERVICE_AREA_TYPES.NATIONAL,\n ) ?? service_areas[0];\n servingArea = generateServesThisAreaOption(area);\n }\n const { latitude, longitude } = closestOrFirstLocation ?? {};\n\n return {\n latitude,\n longitude,\n zoom: '15',\n servingArea,\n hasMap: !!latitude && !!longitude,\n };\n}\n\nexport const formatForProgramDetail = async (program) => {\n const programProps = await getProgramProps(program);\n const providerProps = program?.provider \n ? getProviderProps(program.provider)\n : {};\n\n const mapProps = getMapProps(program);\n\n return {\n id: program.id,\n ...programProps,\n ...providerProps,\n ...mapProps,\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"formatProgramDetail.js","names":["isEmpty","ageRangeConverters","SEARCH_ROLES","SERVICE_AREA_TYPES","STATIC_FILTER_OPTIONS","selectHours","fetchProviderPrograms","US_STATES","ACCESSIBILITY_OPTIONS","LANGUAGE_OPTIONS","TRANSPORTATION_OPTIONS","PAYMENT_OPTIONS","POPULATIONS","PROGRAM_DELIVERY_OPTIONS","convertApiAgeRangeToUnits","processAgeText","parseAge","_ref","min_months","max_months","mapValuesToLabels","values","options","map","value","option","find","opt","label","join","getProgramProps","_ref2","name","description","eligibility_text","population_restrictions","accessibility_options","delivery_options","payment_options","population_specializations","languages","services","transportation_options","city_requirements","county_requirements","postal_code_requirements","state_requirements","age_specializations","gender_requirements","age_requirements","phone_numbers","email_addresses","website_url","locations","receiving_referrals","provider","offers_specialized_screening","fee_schedule_screenings","suggest_edit_enabled","id","hasRequirements","length","hasAccessibility","hasOtherEligibility","hasEligibility","hasContactInfo","hours","accessibilityLabels","languageLabels","transportationLabels","paymentLabels","populationRestrictionLabels","populationSpecializationLabels","deliveryOptionLabels","providersWithServices","appRoles","PAYMENTS","residency","hasEligibilityText","sort","_a","_b","is_primary","offersSpecializedScreening","feeScheduleScreenings","providerPrograms","favorPrimaryEmail","emailA","emailB","getProviderProps","_ref3","licensed","addresses","sensitive","emailsSortedByPriority","addr","email_address","provider_id","provider_name","provider_description","provider_phone_numbers","provider_email_addresses","provider_website_url","provider_hours","provider_licensed","provider_locations","provider_sensitive","hasOrgInfo","generateServesThisAreaOption","area","service_area_type","NATIONAL","state","state_abbreviation","toUpperCase","display_name","getMapProps","_ref4","service_areas","closestOrFirstLocation","loc","is_closest","servingArea","a","latitude","longitude","zoom","hasMap","formatForProgramDetail","program","programProps","providerProps","mapProps"],"sources":["../../../../src/pages/builder/utils/formatProgramDetail.js"],"sourcesContent":["import { isEmpty } from 'lodash';\nimport { ageRangeConverters } from '@unite-us/app-components';\nimport { SEARCH_ROLES, SERVICE_AREA_TYPES, STATIC_FILTER_OPTIONS } from '../../../constants';\nimport selectHours from '../utils';\nimport fetchProviderPrograms from '../../../actions/Referral/fetchCoreServices';\n\nconst {\n US_STATES,\n ACCESSIBILITY_OPTIONS,\n LANGUAGE_OPTIONS,\n TRANSPORTATION_OPTIONS,\n PAYMENT_OPTIONS,\n POPULATIONS,\n PROGRAM_DELIVERY_OPTIONS,\n} = STATIC_FILTER_OPTIONS;\nconst { convertApiAgeRangeToUnits, processAgeText } = ageRangeConverters;\nconst parseAge = ({ min_months, max_months }) => {\n if (!min_months && !max_months) return '';\n\n return processAgeText(...convertApiAgeRangeToUnits(`${min_months}...${max_months}`));\n};\n\nconst mapValuesToLabels = (values, options) => {\n return values\n .map((value) => {\n const option = options.find((opt) => opt.value === value);\n return option ? option.label : value;\n })\n .join(', ');\n};\n\nconst getProgramProps = async ({\n name,\n description,\n eligibility_text,\n population_restrictions = [],\n accessibility_options = [],\n delivery_options = [],\n payment_options = [],\n population_specializations = [],\n languages = [],\n services = [],\n transportation_options = [],\n city_requirements = [],\n county_requirements = [],\n postal_code_requirements = [],\n state_requirements = [],\n age_specializations = {},\n gender_requirements = [],\n age_requirements = {},\n phone_numbers = [],\n email_addresses = [],\n website_url,\n locations = [],\n receiving_referrals,\n provider,\n offers_specialized_screening,\n fee_schedule_screenings,\n suggest_edit_enabled,\n id,\n}) => {\n const hasRequirements =\n !!age_requirements?.min_months ||\n !!age_requirements?.max_months ||\n !!city_requirements.length ||\n !!county_requirements.length ||\n !!gender_requirements.length ||\n !!population_restrictions.length ||\n !!postal_code_requirements.length ||\n !!state_requirements.length;\n const hasAccessibility =\n !!delivery_options.length ||\n !!languages.length ||\n !!population_specializations.length ||\n !!age_specializations?.min_months ||\n !!age_specializations?.max_months ||\n !!accessibility_options.length ||\n !!transportation_options.length ||\n !!payment_options.length;\n const hasOtherEligibility = !!eligibility_text;\n const hasEligibility = hasRequirements || hasAccessibility || hasOtherEligibility;\n const hasContactInfo =\n !!phone_numbers.length || !!email_addresses.length || !!website_url || !!locations.length;\n const hours = selectHours(locations, provider?.hours);\n const accessibilityLabels = mapValuesToLabels(accessibility_options, ACCESSIBILITY_OPTIONS);\n const languageLabels = mapValuesToLabels(languages, LANGUAGE_OPTIONS);\n const transportationLabels = mapValuesToLabels(transportation_options, TRANSPORTATION_OPTIONS);\n const paymentLabels = mapValuesToLabels(payment_options, PAYMENT_OPTIONS);\n const populationRestrictionLabels = mapValuesToLabels(population_restrictions, POPULATIONS);\n const populationSpecializationLabels = mapValuesToLabels(population_specializations, POPULATIONS);\n const deliveryOptionLabels = mapValuesToLabels(delivery_options, PROGRAM_DELIVERY_OPTIONS);\n\n const providersWithServices = await fetchProviderPrograms(provider?.id, id);\n const appRoles = [SEARCH_ROLES.PAYMENTS];\n\n return {\n name,\n description,\n eligibility_text,\n hasRequirements,\n hasAccessibility,\n hasOtherEligibility,\n hasEligibility,\n hasContactInfo,\n postal_code_requirements: postal_code_requirements.join(', '),\n city_requirements: city_requirements.join('; '),\n county_requirements: county_requirements.join('; '),\n state_requirements: state_requirements.join(', '),\n age_requirements: parseAge(age_requirements),\n age_specializations: parseAge(age_specializations),\n gender_requirements: gender_requirements.join(', '),\n delivery_options: deliveryOptionLabels,\n population_restrictions: populationRestrictionLabels,\n languages: languageLabels,\n population_specializations: populationSpecializationLabels,\n accessibility_options: accessibilityLabels,\n residency: {\n state_requirements: state_requirements.join(', '),\n city_requirements: city_requirements.join('; '),\n county_requirements: county_requirements.join('; '),\n postal_code_requirements: postal_code_requirements.join(', '),\n },\n hasEligibilityText: !isEmpty(eligibility_text),\n transportation_options: transportationLabels,\n payment_options: paymentLabels,\n services: providersWithServices.services,\n phone_numbers,\n email_addresses: email_addresses.sort((_a, _b) => (_b.is_primary === null ? -1 : 1)),\n website_url,\n locations,\n hours,\n receiving_referrals,\n offersSpecializedScreening: offers_specialized_screening,\n feeScheduleScreenings: fee_schedule_screenings,\n suggest_edit_enabled,\n providerPrograms: providersWithServices.providerPrograms,\n appRoles,\n };\n};\n\nconst favorPrimaryEmail = (emailA, emailB) => {\n if (emailB.is_primary) {\n return 1;\n }\n if (emailA.is_primary) {\n return -1;\n }\n return 0;\n};\n\nconst getProviderProps = ({\n name,\n description,\n phone_numbers,\n email_addresses,\n website_url,\n hours,\n licensed,\n addresses,\n id,\n sensitive,\n}) => {\n const emailsSortedByPriority =\n email_addresses.length > 0\n ? email_addresses.sort(favorPrimaryEmail).map((addr) => addr.email_address)\n : [];\n\n return {\n provider_id: id,\n provider_name: name,\n provider_description: description,\n provider_phone_numbers: phone_numbers,\n provider_email_addresses: emailsSortedByPriority,\n provider_website_url: website_url,\n provider_hours: hours,\n provider_licensed: licensed,\n provider_locations: addresses,\n provider_sensitive: sensitive,\n hasOrgInfo:\n !isEmpty(description) ||\n !isEmpty(phone_numbers) ||\n !isEmpty(email_addresses) ||\n !isEmpty(website_url) ||\n !isEmpty(hours) ||\n !isEmpty(locations),\n };\n};\n\nconst generateServesThisAreaOption = (area) => {\n if (area.service_area_type === SERVICE_AREA_TYPES.NATIONAL) {\n return SERVICE_AREA_TYPES.NATIONAL;\n }\n return US_STATES.find((state) => state.value === area.state_abbreviation.toUpperCase())\n .display_name;\n};\n\nconst getMapProps = ({ locations = [], service_areas = [] }) => {\n const closestOrFirstLocation = locations?.find((loc) => loc.is_closest) ?? locations[0];\n let servingArea = '';\n if (service_areas?.length > 0) {\n const area =\n service_areas.find((a) => a.service_area_type !== SERVICE_AREA_TYPES.NATIONAL) ??\n service_areas[0];\n servingArea = generateServesThisAreaOption(area);\n }\n const { latitude, longitude } = closestOrFirstLocation ?? {};\n\n return {\n latitude,\n longitude,\n zoom: '15',\n servingArea,\n hasMap: !!latitude && !!longitude,\n };\n};\n\nexport const formatForProgramDetail = async (program) => {\n const programProps = await getProgramProps(program);\n const providerProps = program?.provider ? getProviderProps(program.provider) : {};\n\n const mapProps = getMapProps(program);\n\n return {\n id: program.id,\n ...programProps,\n ...providerProps,\n ...mapProps,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"referralBuilderFormDraftAuth.js","names":["feeScheduleProgramUtils","isEmpty","moment","coreApi","shouldLoadDraftPaymentAuthorization","referral","feeScheduleProgram","state","authorization_required","fetchCaseData","caseId","caseResponse","findRecord","data","fetchServiceAuthorizationData","serviceAuthorizationId","serviceAuthorizationResponse","fetchClinicalModificationData","clinicalModifications","firstClinicalModification","clinicalModificationResponse","id","buildAmountRequestedInitialValue","serviceAuthorizationData","isUnitBased","isCostPaymentType","payment_type","requested_unit_amount","requested_cents","buildClinicalModificationValue","clinicalModificationData","value","code","buildPaymentAuthFormValues","_ref","amount_requested","service_end","requested_ends_at","unix","service_start","requested_starts_at","icd10_code","fetchDraftPaymentAuthorizationValues","_ref2","referralState","paymentType","authorizationRequired","caseData","service_authorization","clinical_modifications","paymentAuthFormValues","mergeDraftPaymentAuthorizationInitialValues","_ref3","previousValues","crtb854ForwardingSuperset","referralDescription","initialValues","case","paymentAuthForm","description"],"sources":["../../../../src/pages/builder/utils/referralBuilderFormDraftAuth.js"],"sourcesContent":["import { feeScheduleProgramUtils } from '@unite-us/app-components';\nimport { isEmpty } from 'lodash';\nimport moment from 'moment';\nimport { coreApi } from '../../../api/config';\n\nconst shouldLoadDraftPaymentAuthorization = (referral, feeScheduleProgram)
|
|
1
|
+
{"version":3,"file":"referralBuilderFormDraftAuth.js","names":["feeScheduleProgramUtils","isEmpty","moment","coreApi","shouldLoadDraftPaymentAuthorization","referral","feeScheduleProgram","state","authorization_required","fetchCaseData","caseId","caseResponse","findRecord","data","fetchServiceAuthorizationData","serviceAuthorizationId","serviceAuthorizationResponse","fetchClinicalModificationData","clinicalModifications","firstClinicalModification","clinicalModificationResponse","id","buildAmountRequestedInitialValue","serviceAuthorizationData","isUnitBased","isCostPaymentType","payment_type","requested_unit_amount","requested_cents","buildClinicalModificationValue","clinicalModificationData","value","code","buildPaymentAuthFormValues","_ref","amount_requested","service_end","requested_ends_at","unix","service_start","requested_starts_at","icd10_code","fetchDraftPaymentAuthorizationValues","_ref2","referralState","paymentType","authorizationRequired","caseData","service_authorization","clinical_modifications","paymentAuthFormValues","mergeDraftPaymentAuthorizationInitialValues","_ref3","previousValues","crtb854ForwardingSuperset","referralDescription","initialValues","case","paymentAuthForm","description"],"sources":["../../../../src/pages/builder/utils/referralBuilderFormDraftAuth.js"],"sourcesContent":["import { feeScheduleProgramUtils } from '@unite-us/app-components';\nimport { isEmpty } from 'lodash';\nimport moment from 'moment';\nimport { coreApi } from '../../../api/config';\n\nconst shouldLoadDraftPaymentAuthorization = (referral, feeScheduleProgram) =>\n referral.state === 'draft' && feeScheduleProgram?.authorization_required;\n\nconst fetchCaseData = async (caseId) => {\n const caseResponse = await coreApi.findRecord('case', caseId);\n\n return caseResponse?.data?.data;\n};\n\nconst fetchServiceAuthorizationData = async (serviceAuthorizationId) => {\n const serviceAuthorizationResponse = await coreApi.findRecord(\n 'service_authorization',\n serviceAuthorizationId,\n );\n\n return serviceAuthorizationResponse?.data?.data;\n};\n\nconst fetchClinicalModificationData = async (clinicalModifications) => {\n const firstClinicalModification = clinicalModifications?.[0];\n\n if (!firstClinicalModification) {\n return null;\n }\n\n const clinicalModificationResponse = await coreApi.findRecord(\n 'clinical_modifications',\n firstClinicalModification.id,\n );\n\n return clinicalModificationResponse?.data?.data;\n};\n\nconst buildAmountRequestedInitialValue = (serviceAuthorizationData, feeScheduleProgram) => {\n const isUnitBased = !feeScheduleProgramUtils.isCostPaymentType(feeScheduleProgram?.payment_type);\n\n if (isUnitBased) {\n return serviceAuthorizationData?.requested_unit_amount;\n }\n\n return serviceAuthorizationData?.requested_cents;\n};\n\nconst buildClinicalModificationValue = (clinicalModificationData) => {\n if (isEmpty(clinicalModificationData)) {\n return {};\n }\n\n return {\n value: clinicalModificationData.code,\n id: clinicalModificationData.id,\n };\n};\n\nconst buildPaymentAuthFormValues = ({\n serviceAuthorizationData,\n clinicalModificationData,\n feeScheduleProgram,\n}) => ({\n amount_requested: buildAmountRequestedInitialValue(serviceAuthorizationData, feeScheduleProgram),\n service_end: moment(serviceAuthorizationData?.requested_ends_at).unix(),\n service_start: moment(serviceAuthorizationData?.requested_starts_at).unix(),\n icd10_code: buildClinicalModificationValue(clinicalModificationData),\n});\n\nexport const fetchDraftPaymentAuthorizationValues = async ({\n caseId,\n referralState,\n paymentType,\n authorizationRequired,\n}) => {\n if (\n !shouldLoadDraftPaymentAuthorization(\n { state: referralState },\n { authorization_required: authorizationRequired },\n )\n ) {\n return null;\n }\n\n const caseData = await fetchCaseData(caseId);\n const serviceAuthorizationData = await fetchServiceAuthorizationData(\n caseData?.service_authorization?.id,\n );\n const clinicalModificationData = await fetchClinicalModificationData(\n serviceAuthorizationData?.clinical_modifications,\n );\n\n return {\n paymentAuthFormValues: buildPaymentAuthFormValues({\n serviceAuthorizationData,\n clinicalModificationData,\n feeScheduleProgram: { payment_type: paymentType },\n }),\n serviceAuthorizationData,\n };\n};\n\nexport const mergeDraftPaymentAuthorizationInitialValues = ({\n previousValues,\n paymentAuthFormValues,\n serviceAuthorizationData,\n crtb854ForwardingSuperset,\n referralDescription,\n}) => {\n const initialValues = {\n ...previousValues,\n case: {\n ...previousValues.case,\n service_authorization: {\n ...previousValues.case?.service_authorization,\n ...serviceAuthorizationData,\n },\n },\n paymentAuthForm: {\n ...previousValues.paymentAuthForm,\n ...paymentAuthFormValues,\n },\n };\n\n if (crtb854ForwardingSuperset && referralDescription) {\n initialValues.description = referralDescription;\n }\n\n return initialValues;\n};\n"],"mappings":"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","ignoreList":[]}
|