@unite-us/app-create-referral 0.2.9 → 0.2.10
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.
|
@@ -162,6 +162,11 @@ var groupByCC = function groupByCC(referral) {
|
|
|
162
162
|
return (0, _concat.default)(_context22 = []).call(_context22, (0, _toConsumableArray2.default)(ccPrograms), nonCCReferrals);
|
|
163
163
|
};
|
|
164
164
|
var preventGroupingForSensitiveProvider = function preventGroupingForSensitiveProvider(referral) {
|
|
165
|
+
var networks = (0, _utils.filterNetworks)(referral);
|
|
166
|
+
// if there is only one possible network, set the referral's network
|
|
167
|
+
if (networks.length === 1) {
|
|
168
|
+
referral.network = (0, _lodash.head)(networks);
|
|
169
|
+
}
|
|
165
170
|
var programs = referral.programs;
|
|
166
171
|
return programs.length > 1 ? (0, _map.default)(programs).call(programs, function (program) {
|
|
167
172
|
return _objectSpread(_objectSpread({}, referral), {}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildGroupedReferrals.js","names":["_lodash","require","_utils","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","_filterInstanceProperty2","call","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","groupByNetwork","referral","_context","_context2","_context3","_context4","networks","filterNetworks","network","head","singleNetworkPrograms","_filter","programs","program","provider","multipleNetworkPrograms","programsGroupedByNetworkId","groupBy","sameNetworkReferrals","_map","_values","multipleNetworkReferrals","_concat","_toConsumableArray2","groupByNetworkStatus","_context5","_context6","_context7","_context8","_context9","every","p","programIsOnPlatform","programIsOffPlatform","inNetworkPrograms","OONPrograms","groupByProviderId","_context10","_context11","_context12","programsGroupedByProviderID","sameProviderPrograms","_flatMapInstanceProperty","sameProviderReferrals","uniqueProviderPrograms","uniqueProviderReferrals","isEmpty","groupBySensitivity","_context13","_context14","_context15","_context16","_context17","sensitive","sensitivePrograms","nonSensitivePrograms","nonSensitiveReferrals","groupByCC","_context18","_context19","_context20","_context21","_context22","provider_type","ccPrograms","nonCCPrograms","nonCCReferrals","preventGroupingForSensitiveProvider","buildGroupedReferrals","exports","newReferrals","currentProvider","groupedReferrals","groupOperations","operation"],"sources":["../../../src/pages/builder/buildGroupedReferrals.js"],"sourcesContent":["import { isEmpty, every, head, groupBy, flatMap } from 'lodash';\nimport { programIsOffPlatform, programIsOnPlatform } from './utils';\nimport { filterNetworks } from './utils';\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 can only be grouped with other programs in the same fee schedule (not implemented)\n\nconst groupByNetwork = (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) {\n referral.network = head(networks);\n return [referral];\n }\n // if there is more than one possible network, divide the programs into multiple referrals:\n // referrals with programs in providers in a single network and\n // referrals with programs in providers in multiple networks\n const singleNetworkPrograms = referral.programs.filter(program => program.provider.networks.length === 1);\n const multipleNetworkPrograms = referral.programs.filter(program => program.provider.networks.length > 1);\n // group single network programs by network id\n const programsGroupedByNetworkId = groupBy(singleNetworkPrograms, 'provider.networks[0].id');\n // create a grouped referral for programs with the same single network\n const sameNetworkReferrals = Object.values(programsGroupedByNetworkId).map(programs => ({\n ...referral,\n programs,\n network: head(programs[0].provider.networks),\n }))\n // create separate referrals for each program with multiple networks\n const multipleNetworkReferrals = multipleNetworkPrograms.map(program => ({\n ...referral,\n programs: [program],\n }))\n\n return [...multipleNetworkReferrals, ...sameNetworkReferrals];\n}\n\nconst groupByNetworkStatus = (referral) => {\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 groupByProviderId = (referral) => {\n // group programs by provider id\n const programsGroupedByProviderID = groupBy(referral.programs, 'provider.id');\n // create a new referral for each program with a shared provider id\n const sameProviderPrograms = flatMap(Object.values(programsGroupedByProviderID).filter(program => program.length > 1));\n const sameProviderReferrals = sameProviderPrograms.map(program => ({\n ...referral, programs: [program]\n }))\n // create a new referral for programs with unique provider ids\n const uniqueProviderPrograms = flatMap(Object.values(programsGroupedByProviderID).filter(program => program.length === 1));\n const uniqueProviderReferrals = !isEmpty(uniqueProviderPrograms) ? [{ ...referral, programs: uniqueProviderPrograms }] : [];\n\n return [...sameProviderReferrals, ...uniqueProviderReferrals];\n}\n\nconst groupBySensitivity = (referral) => {\n // if every program is non-sensitive or the referral contains only one sensitive program, return referral\n if (every(referral.programs.map(p => !p.provider.sensitive)) ||\n (referral.programs.length === 1 && head(referral.programs).provider.sensitive)) {\n return [referral];\n }\n // create a new referral for each sensitive program\n const sensitivePrograms = referral.programs.filter(p => p.provider.sensitive).map(program => ({\n ...referral, programs: [program]\n }));\n // create a new referral for non-sensitive programs\n const nonSensitivePrograms = referral.programs.filter(p => !p.provider.sensitive);\n const nonSensitiveReferrals = !isEmpty(nonSensitivePrograms) ? [{ ...referral, programs: nonSensitivePrograms }] : [];\n\n return [...sensitivePrograms, ...nonSensitiveReferrals];\n}\n\nconst groupByCC = (referral) => {\n // if no programs are in a coordination center or the referral contains only one program in a cc, return referral\n if (every(referral.programs.map(p => p.provider.provider_type !== 'coordination_center')) ||\n (referral.programs.length === 1 && head(referral.programs).provider.provider_type === 'coordination_center')) {\n return [referral];\n }\n // create a new referral for each program in a cc\n const ccPrograms = referral.programs.filter(p => p.provider.provider_type === 'coordination_center')\n .map(program => ({\n ...referral, programs: [program]\n }));\n // create a new referral for programs not in a cc\n const nonCCPrograms = referral.programs.filter(p => p.provider.provider_type !== 'coordination_center');\n const nonCCReferrals = !isEmpty(nonCCPrograms) ? [{ ...referral, programs: nonCCPrograms }] : [];\n\n return [...ccPrograms, ...nonCCReferrals];\n}\n\nconst preventGroupingForSensitiveProvider = (referral) => {\n const { programs } = referral;\n return programs.length > 1 ?\n programs.map(program => ({ ...referral, programs: [program] })) :\n [referral];\n};\n\nexport const buildGroupedReferrals = (newReferrals, currentProvider) => {\n let groupedReferrals = newReferrals;\n // if the current provider is sensitive, prevent grouping\n if (currentProvider?.sensitive) {\n groupedReferrals = flatMap(groupedReferrals, preventGroupingForSensitiveProvider);\n } else {\n const groupOperations = [groupByNetwork, groupByNetworkStatus, groupByProviderId, groupBySensitivity, groupByCC];\n groupOperations.forEach(operation => {\n groupedReferrals = flatMap(groupedReferrals, operation);\n });\n }\n\n return groupedReferrals;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"buildGroupedReferrals.js","names":["_lodash","require","_utils","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","_filterInstanceProperty2","call","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","groupByNetwork","referral","_context","_context2","_context3","_context4","networks","filterNetworks","network","head","singleNetworkPrograms","_filter","programs","program","provider","multipleNetworkPrograms","programsGroupedByNetworkId","groupBy","sameNetworkReferrals","_map","_values","multipleNetworkReferrals","_concat","_toConsumableArray2","groupByNetworkStatus","_context5","_context6","_context7","_context8","_context9","every","p","programIsOnPlatform","programIsOffPlatform","inNetworkPrograms","OONPrograms","groupByProviderId","_context10","_context11","_context12","programsGroupedByProviderID","sameProviderPrograms","_flatMapInstanceProperty","sameProviderReferrals","uniqueProviderPrograms","uniqueProviderReferrals","isEmpty","groupBySensitivity","_context13","_context14","_context15","_context16","_context17","sensitive","sensitivePrograms","nonSensitivePrograms","nonSensitiveReferrals","groupByCC","_context18","_context19","_context20","_context21","_context22","provider_type","ccPrograms","nonCCPrograms","nonCCReferrals","preventGroupingForSensitiveProvider","buildGroupedReferrals","exports","newReferrals","currentProvider","groupedReferrals","groupOperations","operation"],"sources":["../../../src/pages/builder/buildGroupedReferrals.js"],"sourcesContent":["import { isEmpty, every, head, groupBy, flatMap } from 'lodash';\nimport { filterNetworks, programIsOffPlatform, programIsOnPlatform } from './utils';\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 can only be grouped with other programs in the same fee schedule (not implemented)\n\nconst groupByNetwork = (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) {\n referral.network = head(networks);\n return [referral];\n }\n // if there is more than one possible network, divide the programs into multiple referrals:\n // referrals with programs in providers in a single network and\n // referrals with programs in providers in multiple networks\n const singleNetworkPrograms = referral.programs.filter(program => program.provider.networks.length === 1);\n const multipleNetworkPrograms = referral.programs.filter(program => program.provider.networks.length > 1);\n // group single network programs by network id\n const programsGroupedByNetworkId = groupBy(singleNetworkPrograms, 'provider.networks[0].id');\n // create a grouped referral for programs with the same single network\n const sameNetworkReferrals = Object.values(programsGroupedByNetworkId).map(programs => ({\n ...referral,\n programs,\n network: head(programs[0].provider.networks),\n }))\n // create separate referrals for each program with multiple networks\n const multipleNetworkReferrals = multipleNetworkPrograms.map(program => ({\n ...referral,\n programs: [program],\n }))\n\n return [...multipleNetworkReferrals, ...sameNetworkReferrals];\n}\n\nconst groupByNetworkStatus = (referral) => {\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 groupByProviderId = (referral) => {\n // group programs by provider id\n const programsGroupedByProviderID = groupBy(referral.programs, 'provider.id');\n // create a new referral for each program with a shared provider id\n const sameProviderPrograms = flatMap(Object.values(programsGroupedByProviderID).filter(program => program.length > 1));\n const sameProviderReferrals = sameProviderPrograms.map(program => ({\n ...referral, programs: [program]\n }))\n // create a new referral for programs with unique provider ids\n const uniqueProviderPrograms = flatMap(Object.values(programsGroupedByProviderID).filter(program => program.length === 1));\n const uniqueProviderReferrals = !isEmpty(uniqueProviderPrograms) ? [{ ...referral, programs: uniqueProviderPrograms }] : [];\n\n return [...sameProviderReferrals, ...uniqueProviderReferrals];\n}\n\nconst groupBySensitivity = (referral) => {\n // if every program is non-sensitive or the referral contains only one sensitive program, return referral\n if (every(referral.programs.map(p => !p.provider.sensitive)) ||\n (referral.programs.length === 1 && head(referral.programs).provider.sensitive)) {\n return [referral];\n }\n // create a new referral for each sensitive program\n const sensitivePrograms = referral.programs.filter(p => p.provider.sensitive).map(program => ({\n ...referral, programs: [program]\n }));\n // create a new referral for non-sensitive programs\n const nonSensitivePrograms = referral.programs.filter(p => !p.provider.sensitive);\n const nonSensitiveReferrals = !isEmpty(nonSensitivePrograms) ? [{ ...referral, programs: nonSensitivePrograms }] : [];\n\n return [...sensitivePrograms, ...nonSensitiveReferrals];\n}\n\nconst groupByCC = (referral) => {\n // if no programs are in a coordination center or the referral contains only one program in a cc, return referral\n if (every(referral.programs.map(p => p.provider.provider_type !== 'coordination_center')) ||\n (referral.programs.length === 1 && head(referral.programs).provider.provider_type === 'coordination_center')) {\n return [referral];\n }\n // create a new referral for each program in a cc\n const ccPrograms = referral.programs.filter(p => p.provider.provider_type === 'coordination_center')\n .map(program => ({\n ...referral, programs: [program]\n }));\n // create a new referral for programs not in a cc\n const nonCCPrograms = referral.programs.filter(p => p.provider.provider_type !== 'coordination_center');\n const nonCCReferrals = !isEmpty(nonCCPrograms) ? [{ ...referral, programs: nonCCPrograms }] : [];\n\n return [...ccPrograms, ...nonCCReferrals];\n}\n\nconst preventGroupingForSensitiveProvider = (referral) => {\n const networks = filterNetworks(referral);\n\t// if there is only one possible network, set the referral's network\n\tif (networks.length === 1) {\n\t\treferral.network = head(networks);\n\t}\n const { programs } = referral;\n return programs.length > 1 ?\n programs.map(program => ({ ...referral, programs: [program] })) :\n [referral];\n};\n\nexport const buildGroupedReferrals = (newReferrals, currentProvider) => {\n let groupedReferrals = newReferrals;\n // if the current provider is sensitive, prevent grouping\n if (currentProvider?.sensitive) {\n groupedReferrals = flatMap(groupedReferrals, preventGroupingForSensitiveProvider);\n } else {\n const groupOperations = [groupByNetwork, groupByNetworkStatus, groupByProviderId, groupBySensitivity, groupByCC];\n groupOperations.forEach(operation => {\n groupedReferrals = flatMap(groupedReferrals, operation);\n });\n }\n\n return groupedReferrals;\n}\n"],"mappings":"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"}
|