@gouvfr-anct/mednum
Version:
✨ Permet de transformer une source de données vers le schéma des lieux de mediation numerique
28 lines (27 loc) • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.processPrisesEnChargeSpecifiques = void 0;
const lieux_de_mediation_numerique_1 = require("@gouvfr-anct/lieux-de-mediation-numerique");
const input_1 = require("../../input");
const isAllowedTerm = (choice, sourceValue) => choice.sauf?.every((forbidden) => !sourceValue.includes(forbidden)) ?? true;
const isTermFound = (sourceValue, choice) => (found, term) => found || (sourceValue.includes(term.toLowerCase()) && isAllowedTerm(choice, sourceValue));
const containsOneOfTheTerms = (choice, sourceValue = '') => choice.termes == null
? sourceValue !== ''
: choice.termes.reduce(isTermFound(sourceValue.toString().toLowerCase(), choice), false);
const appendPriseEnChargeSpecifique = (priseEnChargeSpecifique, prisesEnChargeSpecifiques) => [
...priseEnChargeSpecifique,
...(prisesEnChargeSpecifiques == null ? [] : [prisesEnChargeSpecifiques])
];
const isDefault = (choice) => choice.colonnes == null;
const findAndAppendPriseEnChargeSpecifique = (choice, source) => (prisesEnChargeSpecifiques, colonne) => containsOneOfTheTerms(choice, source[colonne]?.toString())
? appendPriseEnChargeSpecifique(prisesEnChargeSpecifiques, choice.cible)
: prisesEnChargeSpecifiques;
const prisesEnChargeSpecifiquesForTerms = (choice, source) => (prisesEnChargeSpecifiques, colonne) => isDefault(choice)
? appendPriseEnChargeSpecifique(prisesEnChargeSpecifiques, choice.cible)
: findAndAppendPriseEnChargeSpecifique(choice, source)(prisesEnChargeSpecifiques, colonne);
const appendPrisesEnChargeSpecifiques = (source) => (prisesEnChargeSpecifiques, choice) => [
...prisesEnChargeSpecifiques,
...(choice.colonnes ?? (0, input_1.cibleAsDefault)(choice)).reduce(prisesEnChargeSpecifiquesForTerms(choice, source), [])
];
const processPrisesEnChargeSpecifiques = (source, matching) => (0, lieux_de_mediation_numerique_1.PrisesEnChargeSpecifiques)(Array.from(new Set(matching.prise_en_charge_specifique?.reduce(appendPrisesEnChargeSpecifiques(source), []) ?? [])));
exports.processPrisesEnChargeSpecifiques = processPrisesEnChargeSpecifiques;