@gouvfr-anct/lieux-de-mediation-numerique
Version:
📚 Bibliothèque pour la modélisation des lieux de médiation numérique respectant le standard du schéma de données des lieux de médiation numériques
309 lines (308 loc) • 18.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeModesOrientationAccompagnateur = exports.mergeModesOrientationBeneficiaire = exports.modalitesAccesFromDataInclusion = exports.mergePriseRdv = exports.mergeFrais = exports.mergeModesAccueil = exports.mergeTypes = exports.mergeProfils = exports.mergeThematiques = exports.structureParenteFromDataInclusion = exports.priseRdvFromDataInclusion = exports.horairesFromDataInclusion = exports.accessibiliteFromDataInclusion = exports.sourceFromDataInclusion = exports.typologiesFromDataInclusion = exports.priseEnChargeSpecifiqueFromDataInclusion = exports.publicSpecifiquementAdresseFromDataInclusion = exports.presentationFromDataInclusion = exports.modalitesAccompagnementFromDataInclusion = exports.servicesFromDataInclusion = exports.adresseFromDataInclusion = exports.labelsFromDataInclusion = exports.localisationFromDataInclusion = exports.contactFromDataInclusion = exports.conditionsAccesFromDataInclusion = exports.TYPOLOGIES_MAP = exports.MODES_ORIENTATION_TO_MODALITE_ACCES = exports.FRAIS_TO_CONDITION_ACCES = void 0;
const models_1 = require("../../../models");
const THEMATIQUES_TO_SERVICES = new Map([
['numerique--devenir-autonome-dans-les-demarches-administratives', models_1.Service.AideAuxDemarchesAdministratives],
['numerique--realiser-des-demarches-administratives-avec-un-accompagnement', models_1.Service.AideAuxDemarchesAdministratives],
['numerique--accompagner-les-demarches-de-sante', models_1.Service.AideAuxDemarchesAdministratives],
['numerique--prendre-en-main-un-smartphone-ou-une-tablette', models_1.Service.MaitriseDesOutilsNumeriquesDuQuotidien],
['numerique--prendre-en-main-un-ordinateur', models_1.Service.MaitriseDesOutilsNumeriquesDuQuotidien],
['numerique--utiliser-le-numerique-au-quotidien', models_1.Service.MaitriseDesOutilsNumeriquesDuQuotidien],
['numerique--approfondir-ma-culture-numerique', models_1.Service.ComprehensionDuMondeNumerique],
['numerique--favoriser-mon-insertion-professionnelle', models_1.Service.InsertionProfessionnelleViaLeNumerique],
['numerique--acceder-a-une-connexion-internet', models_1.Service.AccesInternetEtMaterielInformatique],
['numerique--acceder-a-du-materiel', models_1.Service.AccesInternetEtMaterielInformatique],
['numerique--s-equiper-en-materiel-informatique', models_1.Service.MaterielInformatiqueAPrixSolidaire],
['numerique--creer-et-developper-mon-entreprise', models_1.Service.InsertionProfessionnelleViaLeNumerique],
['numerique--creer-avec-le-numerique', models_1.Service.LoisirsEtCreationsNumeriques],
['numerique--promouvoir-la-citoyennete-numerique', models_1.Service.ComprehensionDuMondeNumerique],
['numerique--soutenir-la-parentalite-et-l-education-avec-le-numerique', models_1.Service.ParentaliteEtEducationAvecLeNumerique]
]);
exports.FRAIS_TO_CONDITION_ACCES = new Map([
['gratuit', models_1.Frais.Gratuit],
['gratuit-sous-conditions', models_1.Frais.GratuitSousCondition],
['payant', models_1.Frais.Payant],
['adhesion', models_1.Frais.Payant],
['pass-numerique', models_1.Frais.GratuitSousCondition]
]);
exports.MODES_ORIENTATION_TO_MODALITE_ACCES = new Map([
['envoyer-un-mail', models_1.ModaliteAcces.ContacterParMail],
['envoyer-un-mail-avec-une-fiche-de-prescription', models_1.ModaliteAcces.PrescriptionParMail],
['telephoner', models_1.ModaliteAcces.Telephoner],
['se-presenter', models_1.ModaliteAcces.SePresenter]
]);
const DISPOSITIF_PROGRAMMES_NATIONAUX_MAP = new Map([
['aidants-connect', models_1.DispositifProgrammeNational.AidantsConnect],
['conseiller-numerique', models_1.DispositifProgrammeNational.ConseillersNumeriques],
['france-service', models_1.DispositifProgrammeNational.FranceServices],
['grandes-ecoles-du-numerique', models_1.DispositifProgrammeNational.GrandeEcoleDuNumerique],
['caf', models_1.DispositifProgrammeNational.PointNumeriqueCAF]
]);
const FORMATIONS_LABELS_MAP = new Map([
['mon-espace-sante', models_1.FormationLabel.FormeAMonEspaceSante],
['duplex', models_1.FormationLabel.FormeADuplex],
['arnia', models_1.FormationLabel.ArniaMednum],
['ressources-reemploi', models_1.FormationLabel.CollectifRessourcesEtActeursReemploi],
['etapes-numeriques', models_1.FormationLabel.EtapesNumeriques],
['fabrique-de-territoire', models_1.FormationLabel.FabriquesDeTerritoire],
['les-eclaireurs', models_1.FormationLabel.LesEclaireurs],
['mes-papiers', models_1.FormationLabel.MesPapiers],
['ordi-3', models_1.FormationLabel.Ordi3],
['sud-labs', models_1.FormationLabel.SudLabs]
]);
const TYPES_TO_MODALITES_ACCOMPAGNEMENT_MAP = new Map([
['autonomie', models_1.ModaliteAccompagnement.EnAutonomie],
['accompagnement', models_1.ModaliteAccompagnement.AccompagnementIndividuel],
['delegation', models_1.ModaliteAccompagnement.AccompagnementIndividuel],
['atelier', models_1.ModaliteAccompagnement.DansUnAtelier]
]);
const PROFILS_TO_PRISES_EN_CHARGE_SPECIFIQUE = new Map([
['surdite', models_1.PriseEnChargeSpecifique.Surdite],
['handicaps-mentaux', models_1.PriseEnChargeSpecifique.HandicapsMentaux],
['personnes-en-situation-illettrisme', models_1.PriseEnChargeSpecifique.Illettrisme],
['public-langues-etrangeres', models_1.PriseEnChargeSpecifique.LanguesEtrangeresAutre],
['deficience-visuelle', models_1.PriseEnChargeSpecifique.DeficienceVisuelle]
]);
const PROFILS_TO_PUBLICS_SPECIFIQUEMENT_ADRESSES = new Map([
['jeunes-16-26', models_1.PublicSpecifiquementAdresse.Jeunes],
['familles-enfants', models_1.PublicSpecifiquementAdresse.FamillesEnfants],
['seniors-65', models_1.PublicSpecifiquementAdresse.Seniors],
['femmes', models_1.PublicSpecifiquementAdresse.Femmes]
]);
exports.TYPOLOGIES_MAP = new Map([
['ACI', models_1.Typologie.ACI],
['ACIPHC', models_1.Typologie.ACIPHC],
['AFPA', models_1.Typologie.AFPA],
['AI', models_1.Typologie.AI],
['ASE', models_1.Typologie.ASE],
['ASSO', models_1.Typologie.ASSO],
['ASSO_CHOMEUR', models_1.Typologie.ASSO_CHOMEUR],
['Autre', models_1.Typologie.AUTRE],
['AVIP', models_1.Typologie.AVIP],
['BIB', models_1.Typologie.BIB],
['CAARUD', models_1.Typologie.CAARUD],
['CADA', models_1.Typologie.CADA],
['CAF', models_1.Typologie.CAF],
['CAP_EMPLOI', models_1.Typologie.CAP_EMPLOI],
['CAVA', models_1.Typologie.CAVA],
['CC', models_1.Typologie.CC],
['CCAS', models_1.Typologie.CCAS],
['CCONS', models_1.Typologie.CCONS],
['CD', models_1.Typologie.CD],
['CDAS', models_1.Typologie.CDAS],
['CFP', models_1.Typologie.CFP],
['CHRS', models_1.Typologie.CHRS],
['CHU', models_1.Typologie.CHU],
['CIAS', models_1.Typologie.CIAS],
['CIDFF', models_1.Typologie.CIDFF],
['CITMET', models_1.Typologie.CITMET],
['CMP', models_1.Typologie.CMP],
['CMS', models_1.Typologie.CMS],
['CPAM', models_1.Typologie.CPAM],
['CPH', models_1.Typologie.CPH],
['CS', models_1.Typologie.CS],
['CSAPA', models_1.Typologie.CSAPA],
['CSC', models_1.Typologie.CSC],
['DEETS', models_1.Typologie.DEETS],
['DEPT', models_1.Typologie.DEPT],
['DIPLP', models_1.Typologie.DIPLP],
['E2C', models_1.Typologie.E2C],
['EA', models_1.Typologie.EA],
['EATT', models_1.Typologie.EATT],
['EI', models_1.Typologie.EI],
['EITI', models_1.Typologie.EITI],
['ENM', models_1.Typologie.ENM],
['EPCI', models_1.Typologie.EPCI],
['EPI', models_1.Typologie.EPI],
['EPIDE', models_1.Typologie.EPIDE],
['EPN', models_1.Typologie.EPN],
['ES', models_1.Typologie.ES],
['ESS', models_1.Typologie.ESS],
['ETTI', models_1.Typologie.ETTI],
['EVS', models_1.Typologie.EVS],
['FABLAB', models_1.Typologie.FABLAB],
['FAIS', models_1.Typologie.FAIS],
['FT', models_1.Typologie.FT],
['GEIQ', models_1.Typologie.GEIQ],
['HUDA', models_1.Typologie.HUDA],
['LA_POSTE', models_1.Typologie.LA_POSTE],
['MDE', models_1.Typologie.MDE],
['MDEF', models_1.Typologie.MDEF],
['MDPH', models_1.Typologie.MDPH],
['MDS', models_1.Typologie.MDS],
['MJC', models_1.Typologie.MJC],
['ML', models_1.Typologie.ML],
['MQ', models_1.Typologie.MQ],
['MSA', models_1.Typologie.MSA],
['MSAP', models_1.Typologie.MSAP],
['MUNI', models_1.Typologie.MUNI],
['OACAS', models_1.Typologie.OACAS],
['ODC', models_1.Typologie.ODC],
['OF', models_1.Typologie.OF],
['OIL', models_1.Typologie.OIL],
['OPCS', models_1.Typologie.OPCS],
['PAD', models_1.Typologie.PAD],
['PE', models_1.Typologie.FT],
['PENSION', models_1.Typologie.PENSION],
['PI', models_1.Typologie.PI],
['PIJ_BIJ', models_1.Typologie.PIJ_BIJ],
['PIMMS', models_1.Typologie.PIMMS],
['PJJ', models_1.Typologie.PJJ],
['PLIE', models_1.Typologie.PLIE],
['PREF', models_1.Typologie.PREF],
['PREVENTION', models_1.Typologie.PREVENTION],
['REG', models_1.Typologie.REG],
['RESSOURCERIE', models_1.Typologie.RESSOURCERIE],
['RFS', models_1.Typologie.RFS],
['RS_FJT', models_1.Typologie.RS_FJT],
['SCP', models_1.Typologie.SCP],
['SPIP', models_1.Typologie.SPIP],
['TIERS_LIEUX', models_1.Typologie.TIERS_LIEUX],
['UDAF', models_1.Typologie.UDAF]
]);
const conditionsAccesFromDataInclusion = (conditionsAcces) => conditionsAcces == null || conditionsAcces.length === 0
? {}
: {
frais_a_charge: (0, models_1.FraisACharge)(conditionsAcces
.map((conditionAcces) => exports.FRAIS_TO_CONDITION_ACCES.get(conditionAcces))
.filter((conditionAcces) => conditionAcces != null))
};
exports.conditionsAccesFromDataInclusion = conditionsAccesFromDataInclusion;
const contactFromDataInclusion = (courriel, telephone, site_web) => courriel == null && telephone == null && site_web == null
? {}
: {
contact: (0, models_1.Contact)({
...(courriel == null ? {} : { courriels: courriel.split('|').map(models_1.Courriel) }),
...(telephone == null ? {} : { telephone }),
...(site_web == null ? {} : { site_web: site_web.split('|').map(models_1.Url) })
})
};
exports.contactFromDataInclusion = contactFromDataInclusion;
const localisationFromDataInclusion = (latitude, longitude) => latitude == null || longitude == null ? {} : { localisation: (0, models_1.Localisation)({ latitude, longitude }) };
exports.localisationFromDataInclusion = localisationFromDataInclusion;
const formationsLabelsFromLabelsNationaux = (labelsNationaux) => {
const formationsLabels = (0, models_1.FormationsLabels)(labelsNationaux
.map((formationLabel) => FORMATIONS_LABELS_MAP.get(formationLabel))
.filter((formationLabel) => formationLabel != null));
return formationsLabels.length === 0 ? {} : { formations_labels: formationsLabels };
};
const dispositifProgrammesNationauxFromLabelsNationaux = (labelsNationaux) => {
const dispositifProgrammesNationaux = (0, models_1.DispositifProgrammesNationaux)(labelsNationaux
.map((labelNational) => DISPOSITIF_PROGRAMMES_NATIONAUX_MAP.get(labelNational))
.filter((labelNational) => labelNational != null));
return dispositifProgrammesNationaux.length === 0 ? {} : { dispositif_programmes_nationaux: dispositifProgrammesNationaux };
};
const labelsFromDataInclusion = (labelsNationaux, labelsAutres) => ({
...(labelsNationaux == null ? {} : dispositifProgrammesNationauxFromLabelsNationaux(labelsNationaux)),
...(labelsNationaux == null ? {} : formationsLabelsFromLabelsNationaux(labelsNationaux)),
...(labelsAutres == null ? {} : { autres_formations_labels: labelsAutres })
});
exports.labelsFromDataInclusion = labelsFromDataInclusion;
const hasCodeInsee = (structure) => structure.code_insee == null && structure._di_geocodage_code_insee == null;
const adresseFromDataInclusion = (structure) => ({
adresse: (0, models_1.Adresse)({
code_postal: structure.code_postal,
commune: structure.commune,
voie: structure.adresse,
...(structure.complement_adresse == null ? {} : { complement_adresse: structure.complement_adresse }),
...(hasCodeInsee(structure) ? {} : { code_insee: structure.code_insee ?? structure._di_geocodage_code_insee })
})
});
exports.adresseFromDataInclusion = adresseFromDataInclusion;
const servicesFromDataInclusion = (thematiques) => ({
services: (0, models_1.Services)(thematiques
?.map((thematique) => THEMATIQUES_TO_SERVICES.get(thematique))
.filter((service) => service != null) ?? [])
});
exports.servicesFromDataInclusion = servicesFromDataInclusion;
const modalitesAccompagnementFromDataInclusion = (types, modesAccueil) => types == null || types.length === 0
? {}
: {
modalites_accompagnement: (0, models_1.ModalitesAccompagnement)([
...types
.map((type) => TYPES_TO_MODALITES_ACCOMPAGNEMENT_MAP.get(type))
.filter((modalitesAccompagnement) => modalitesAccompagnement != null),
...(modesAccueil?.includes('a-distance') === true ? [models_1.ModaliteAccompagnement.ADistance] : [])
])
};
exports.modalitesAccompagnementFromDataInclusion = modalitesAccompagnementFromDataInclusion;
const presentationFromDataInclusion = (presentation_detail, presentation_resume) => presentation_detail == null && presentation_resume == null
? {}
: {
presentation: {
...(presentation_detail == null ? {} : { detail: presentation_detail }),
...(presentation_resume == null ? {} : { resume: presentation_resume })
}
};
exports.presentationFromDataInclusion = presentationFromDataInclusion;
const publicSpecifiquementAdresseFromDataInclusion = (profils) => profils == null || profils.length === 0
? {}
: {
publics_specifiquement_adresses: (0, models_1.PublicsSpecifiquementAdresses)(profils
.map((profil) => PROFILS_TO_PUBLICS_SPECIFIQUEMENT_ADRESSES.get(profil))
.filter((publicSpecifiquementAdresse) => publicSpecifiquementAdresse != null))
};
exports.publicSpecifiquementAdresseFromDataInclusion = publicSpecifiquementAdresseFromDataInclusion;
const priseEnChargeSpecifiqueFromDataInclusion = (profils) => profils == null || profils.length === 0
? {}
: {
prise_en_charge_specifique: (0, models_1.PrisesEnChargeSpecifiques)(profils
.map((profil) => PROFILS_TO_PRISES_EN_CHARGE_SPECIFIQUE.get(profil))
.filter((priseEnChargeSpecifique) => priseEnChargeSpecifique != null))
};
exports.priseEnChargeSpecifiqueFromDataInclusion = priseEnChargeSpecifiqueFromDataInclusion;
const typologiesFromDataInclusion = (typologie) => typologie == null ? {} : { typologies: (0, models_1.Typologies)([typologie]) };
exports.typologiesFromDataInclusion = typologiesFromDataInclusion;
const sourceFromDataInclusion = (source) => (source == null ? {} : { source });
exports.sourceFromDataInclusion = sourceFromDataInclusion;
const accessibiliteFromDataInclusion = (accessibilite) => accessibilite == null ? {} : { fiche_acces_libre: (0, models_1.Url)(accessibilite) };
exports.accessibiliteFromDataInclusion = accessibiliteFromDataInclusion;
const horairesFromDataInclusion = (horaires) => (horaires == null ? {} : { horaires });
exports.horairesFromDataInclusion = horairesFromDataInclusion;
const priseRdvFromDataInclusion = (priseRdv) => priseRdv == null ? {} : { prise_rdv: (0, models_1.Url)(priseRdv) };
exports.priseRdvFromDataInclusion = priseRdvFromDataInclusion;
const structureParenteFromDataInclusion = (structureParente) => structureParente == null ? {} : { structure_parente: structureParente };
exports.structureParenteFromDataInclusion = structureParenteFromDataInclusion;
const mergeThematiques = (thematiques, thematiquesToAdd) => ({
thematiques: Array.from(new Set([...(thematiques ?? []), ...(thematiquesToAdd ?? [])]))
});
exports.mergeThematiques = mergeThematiques;
const mergeProfils = (profils, profilsToAdd) => ({
profils: Array.from(new Set([...(profils ?? []), ...(profilsToAdd ?? [])]))
});
exports.mergeProfils = mergeProfils;
const mergeTypes = (types, typesToAdd) => ({
types: Array.from(new Set([...(types ?? []), ...(typesToAdd ?? [])]))
});
exports.mergeTypes = mergeTypes;
const mergeModesAccueil = (modesAccueil, modesAccueilToAdd) => ({
modes_accueil: Array.from(new Set([...(modesAccueil ?? []), ...(modesAccueilToAdd ?? [])]))
});
exports.mergeModesAccueil = mergeModesAccueil;
const fraisIfDefined = (frais) => (frais == null ? {} : { frais });
const mergeFrais = (frais, fraisToAdd) => fraisIfDefined(Array.from(new Set([...(frais ?? []), ...(fraisToAdd ?? [])])));
exports.mergeFrais = mergeFrais;
const mergePriseRdv = (priseRdv, priseRdvToAdd) => priseRdv == null && priseRdvToAdd == null ? {} : { prise_rdv: priseRdvToAdd ?? priseRdv ?? '' };
exports.mergePriseRdv = mergePriseRdv;
const defaultModalitesAcces = (priseRdv) => priseRdv?.prise_rdv == null ? [] : [models_1.ModaliteAcces.PrendreRdvEnLigne];
const onlyDefined = (nullable) => nullable != null;
const toModaliteAccess = (modeOrientation) => exports.MODES_ORIENTATION_TO_MODALITE_ACCES.get(modeOrientation);
const hasModesOrientation = (modesOrientation) => modesOrientation != null && modesOrientation.length > 0;
const modalitesAccesFromDataInclusion = (modesOrientation, priseRdv) => ({
modalites_acces: (0, models_1.ModalitesAcces)([
...defaultModalitesAcces(priseRdv),
...(hasModesOrientation(modesOrientation)
? Array.from(new Set(modesOrientation)).map(toModaliteAccess).filter(onlyDefined)
: [models_1.ModaliteAcces.SePresenter, models_1.ModaliteAcces.Telephoner, models_1.ModaliteAcces.ContacterParMail])
])
});
exports.modalitesAccesFromDataInclusion = modalitesAccesFromDataInclusion;
const mergeModesOrientationBeneficiaire = (modesOrientationBeneficiaire, modesOrientationBeneficiaireToAdd) => ({
modes_orientation_beneficiaire: Array.from(new Set([...(modesOrientationBeneficiaire ?? []), ...(modesOrientationBeneficiaireToAdd ?? [])]))
});
exports.mergeModesOrientationBeneficiaire = mergeModesOrientationBeneficiaire;
const mergeModesOrientationAccompagnateur = (modesOrientationAccompagnateur, modesOrientationAccompagnateurToAdd) => ({
modes_orientation_accompagnateur: Array.from(new Set([...(modesOrientationAccompagnateur ?? []), ...(modesOrientationAccompagnateurToAdd ?? [])]))
});
exports.mergeModesOrientationAccompagnateur = mergeModesOrientationAccompagnateur;