- Avoir
podmaninstallé (https://podman.io/) - Avoir
docker-compose-v2installé (https://docs.docker.com/compose/releases/migrate/) - Installer
corepack, l'activer puis géreryarn
npm install -g corepack
corepack enable
yarn set version stable
yarnyarn
cp .env.sample .envPuis remplir les secrets.
Vous trouverez toutes ces commandes dans le fichier package.json.
Nécessite d'avoir lancé les containers et d'avoir chargé des informations
yarn start:db
yarn etl:hard-index-migration #OPTIONNEL
yarn devTester le bon déploiement de l'infrastructure et le bon fonctionnement de l'application :
- Vérifier que vous arrivez à communiquer avec la base de données Elasticsearch en local.
Lancer la commande :curl -v 'http://localhost:9200/_cluster/health?pretty'
La fin de la sortie attendue est la suivante :

- Vérifier que vous avez accès à l'interface swagger.
Copier dans la barre de navigation de votre navigateur, l'URL suivante :
http://localhost:3000/ - Tester le service GET - /R4/ResearchStudy sans rentrer de paramètres.
Étendre l'onglet du service puis cliquer sur le boutonTry it outet enfin cliquer sur le boutonExecute.
La sortie attendue est la suivante :

Cette application fonctionne avec la dernière version LTS de node.
yarn build && yarn startNécessite d'avoir lancé les containers
yarn start:dbyarn test
yarn test:coverage
yarn test:mutation:api
yarn test:mutation:etlyarn lintyarn typecheckyarn amibrokenyarn deadcodeyarn depcheckyarn bash:production- Supprimer l'index meddra sur Elasticsearch s'il existe déjà
- Récupérer le fichier llt.asc qui est au format
Windows-1252 - Ouvrir le fichier avec un éditeur de code pour le sauvegarder avec l'encodage
UTF-8et ainsi lire les caractères spéciaux correctement - Renommer le fichier en
meddra-utf8.asc - Placer ce fichier à la racine du projet
- Exécuter la ligne bash suivante
yarn etl:meddra-import- Le guide officiel est disponible sur https://interop.esante.gouv.fr/ig/fhir/eclaire/
- Les données implémentées sont marquées par une coche sur l'image mapping.png
- Rien n'empêche le contraire
- On peut utiliser des outils gratuits d'observabilité
- C'est nul d'être fermé
- Projet d'état
- Open API
- Facile d'utilisation
- Connu par une grosse majorité des développeurs
- Beaucoup de ressource sur Internet, très bonne documentation
- Très bien pour faire juste une API
- Pas de front
- Hébergeur Français
- Facile d'utilisation
- Peu cher
- Interface très simple
- Certifié HDS
- Autonome
- Scalable
- Connu de tous
- Facile d'utilisation
- CI gratuite
- Audit OMS : lecture du code
- Facile d'utilisation
- Très répandu
- La DNUM nous fourni un compte par défaut
- Notification rapide dès qu'il y a une erreur en production
- Erreur très détaillée pour mieux la corriger
- Limite du taux de requêtes (rate limiting) côté applicatif pour ne pas saturer le CPU en cas d'attaque ou de pic de charge par les utilisateurs
- Utilisation de la librairie Throttler sous Nest.JS
- Les services SaaS sous-jacents de l'infrastructure ne sont pas configurables sur l'hébergeur Scalingo :
- OpenResty : reverse proxy des containers web (paramétrage du Limit Request Rate)
- Elasticsearch : moteur de recherche (paramétrage du nombre de thread du pool de search)
- Les variables d'environnement ne contiennent pas de configuration
- Les secrets doivent être sur Scalingo
- En local, il y a un fichier
.env.samplecommité et vide et on le surcharge avec un fichier.env
- Facile et rapide d'implémentation
- Evite de faire trop d'appel à leur API
- Par contre, il faut mettre cette liste à jour tous les semestres
- 2025-01-07 (transmis par mail aux équipes ministérielles) -
Le moteur de recherche Elasticsearch était en saturation mémoire suite à l'échec de l'installation de plugins sur Scalingo.
Les difficultés rencontrées par le moteur de recherche généraient des erreurs applicatives et renvoyaient des codes erreurs techniques aux clients.
N'importe quel acteur ayant participé à l'analyse d'un événement inhabituel, peut rédiger un Post-Mortem.
Le modèle est disponible dans la documentation du projet : 20XX-XX-XX - template post-mortem à copier.md.
Copiez alors le fichier en le nommant avec :
- La date à laquelle l'événement a été remonté
- Une courte explication compréhensible de l'événement
Les principaux objectifs de la rédaction d’un Post-Mortem sont :
- de s’assurer que l’incident est documenté,
- que toutes les causes sous-jacentes sont bien comprises,
- que des mesures préventives efficaces sont mises en place pour réduire la probabilité ou l’impact d’une récidive.
On s’attend à ce qu’il y ait des Post-Mortems après tout événement indésirable important.
Le processus Post-Mortem présente un coût inhérent en termes de temps ou d’efforts, nous choisissons donc délibérément quand en écrire un.
Les déclencheurs habituels sont les suivants :
- Temps d’arrêt ou dégradation visible par l’utilisateur au-delà d’un certain seuil,
- Perte de données quelle qu’en soit la nature,
- Intervention d'un ou plusieurs ingénieurs sur appel (remise à zéro, réacheminement du trafic, etc.),
- Un délai de résolution supérieur à un certain seuil,
- Une défaillance de la surveillance (qui implique généralement la découverte manuelle d’un incident).
Rédiger un Post-Mortem n’est pas une punition, c’est une occasion d’apprendre pour toute l’entreprise.
Le Post-Mortem doit se concentrer sur l’identification des causes de l’incident sans accuser un individu ou une équipe
d’avoir eu un comportement mauvais ou inapproprié.
C'est un principe essentiel de la culture SRE.
La suite des informations est spécifique au système de gestion de paquets dpkg présent dans certaines distributions
Linux (Debian/Ubuntu).
Il convient de les adapter à votre environnement de travail.
Installer les packages suivants :
- texlive-latex-base
- texlive-fonts-recommended
#OPTIONNEL - texlive-fonts-extra
#OPTIONNEL - pandoc
- wkhtmltopdf
Pour palier a des limitations d'affichage en passant directement du format markdown au format PDF avec pandoc,
on exécute les étapes intermédiaires suivantes :
- Ouvrir un Terminal et se placer dans votre répertoire documentation/post-mortem du projet en local,
- Convertir la version markdown d'origine en version HTML via la librairie
pandocavec la commande suivante :pandoc '<Remplacer par le nom du fichier post-mortem>.md' -o 'Post-mortem-intermédiaire-format-web.html' --standalone - Éditer le fichier
Post-mortem-intermédiaire-format-web.htmlpour supprimer le paramètre CSS suivant :<head> ... <style> body { ... max-width: 36em; /* LIGNE A SUPPRIMER */ ... } </style> </head>
- Convertir le format HTML en fichier PDF via la librairie
wkhtmltopdf.Voici à quoi servent les options présentes :wkhtmltopdf --enable-local-file-access --orientation Landscape 'Post-mortem-intermédiaire-format-web.html' '<Remplacer par le nom du fichier post-mortem>.pdf'--enable-local-file-accessautorise l'accès aux images présentes sur votre disque pour les intégrer dans le fichier PDF,--orientation Landscapeoriente les pages du document PDF au format Paysage pour faciliter la lecture.
- Le fichier
<Remplacer par le nom du fichier post-mortem>.pdfest maintenant disponible dans votre répertoire local documentation/post-mortem du projet.