UNPKG

@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
"use strict"; 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;