Search FHIR

Documentation des guides d'implémentation de l'ANS
0.1.8 - trial-use France flag

This page is part of the Documentation des guides d'implémentation de l'ANS (v0.1.8: Release) based on FHIR (HL7® FHIR® Standard) R4. This is the current published version in its permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions

Quick start IG

Mise en place du repo GitHub

Prérequis : suivre la documentation pour créer un compte GitHub et l’associer à l’organisation ANS.

Ce nouveau projet doit utiliser le GitHub template ansforge/IG-modele et doit respecter la convention de nommage indiquée dans la documentation de création des répetoires GitHub tout en étant préfixé par “IG-…” (Exemple : IG-fhir-partage-de-documents-de-sante). En cas de doute, l’équipe interopérabilité de l’ANS se tient disponible pour avis.

Une fois l’IG créé, il est nécessaire de le personnaliser pour le projet dédié.

Paramétrage de l’IG

Lors de la création d’un IG, il y a une première phase de paramétrage à effectuer. Il faut remplir:

  • Le fichier sushi-config, avec:
    • l’id, qui sera également l’id du package, qui doit s’appeler “ans.fhir.fr.[codeprojet]”
    • l’url canonique, au format https://interop.esante.gouv.fr/ig/fhir/[codeprojet], avec [codeprojet] identique à celui du package id et en minuscule
    • le nom, le titre …
  • Rapporter les mêmes modifications dans package-list:
    • package-id, titre, url canonique, introduction descriptive…
  • modifier le paramètre ig dans ig.ini pour qu’il soit de la forme fsh-generated/resources/ImplementationGuide-[package-id].json –> Cette étape est nécessaire, sans cela, il y aura des erreurs.
  • Le fichier input/data/features.yml : mettre à jour le lien vers la github issue

Il faudra également mettre à jour le fichier readme.md à la racine du repository.

Paramétrage du menu de navigation de l’IG

Une des plus importantes parties de l’IG est la documentation narrative, celle-ci est écrite en kramdown. Ces pages sont à ajouter dans input/pagecontent avec l’extension .md. A noter que ces pages doivent être directement contenues dans le dossier pagecontent et ne peuvent pas avoir d’arborescence de dossiers.

Une fois une page créée et rédigée, pour l’ajouter au menu, il faut éditer le fichier sushi-config.yaml. Celui-ci contient deux parties : la partie pages et la partie menu

La partie pages

La partie pages est optionnelle, mais elle permet de donner un titre aux pages (par défaut, c’est le nom du fichier qui est utilisé). A noter, il faut utiliser l’extension .md ici.

La partie pages est de la forme:

pages:
    index.md:
        title: Accueil
    specifications_techniques.md:
        construction_des_flux.md:
        st_ajout.md:
            title: Ajout d'un lot de documents

La partie menu

La partie menu permet de définir le menu de navigation dans le header. A noter, il faut utiliser l’extension .html.

La partie menu est de la forme:

menu:
  Accueil: index.html
  Spécifications techniques:
      Construction des flux: construction_des_flux.html
      Flux 01: st_flux1.html
      Flux 02: st_flux2.html
  Spécifications fonctionnelles:

Développement de l’IG

Le développement de l’IG se fait essentiellement dans le dossier input.

Lien vers quelques exemples : [https://github.com/HL7/US-Core/blob/master/sushi-config.yaml] [https://github.com/ansforge/FIG_ans-ig-PDSm/blob/main/sushi-config.yaml]

Installer les dépendances

Windows

Prérequis :

  • Avoir les droits administrateur

Etape 1. Installer VS CODE et les plugins

https://code.visualstudio.com/

  1. Lancer VS Code
  2. Aller dans le menu extension (les 4 carrés dont un qui se décolle à gauche), chercher et installer “FHIR Shorthand”

Etape 2. Installer NodeJS

[https://nodejs.org/en/]

La case “Automatically install the necessary tools” peut être cochée.

Etape 3. Installer SUSHI

  1. Lancer l’invite de commande (windows > “invite de commande”)
  2. Ecrire et lancer la commande npm install -g fsh-sushi

Etape 4. Installer les dépendances de l’IG Publisher

  • JAVA JDK: https://www.oracle.com/fr/java/technologies/downloads/#jdk19-windows (installer, au format .exe)
  • Ruby: https://rubyinstaller.org/downloads (with devkit). Installer le “MSYS2 base installation”.
  • Jekyll et bundler: lancer l’invite de commande en mode administrateur et lancer la commande gem install jekyll bundler

Etape 5. Lancer l’IG Publisher

Télécharger le repository ansforge/FIG_ans-ig-sample : code > download zip. Décompresser le dossier, et le mettre dans un chemin où il n’y a pas d’espace (exemple : C:\Users\nriss\Documents).

Puis:

  • lancer _updatePublisher (lancer _updatePublisher.bat dans le bon dossier sur l’invite de commande). Attention ! Il ne peut pas y avoir d’espace dans le path du dossier, ce qui peut engendrer des erreurs, notamment avec OneDrive.
  • lancer _genonce (lancer _genonce.bat dans le bon dossier sur l’invite de commande)

Si tout s’est bien passé, le dossier output est apparu, il suffit de lancer index.html pour visualiser l’IG généré.

Vous pouvez maintenant commencer à développer votre implementation guide ! :)

  • Documentation vers FSH : https://build.fhir.org/ig/HL7/fhir-shorthand/reference.html
  • Documentation sur l’IG Publisher : https://confluence.hl7.org/pages/viewpage.action?pageId=35718627#IGPublisherDocumentation-QuickStart

MAC / Linux

Prérequis : NodeJS, Java, Ruby et Jekyll

NodeJS

Pour installer NodeJS, vous pouvez suivre la documentation d’installation officielle.

Sur une distribution Linux basée sur Debian (Debian, Ubuntu…), vous pouvez installer NodeJS directement depuis votre package-manager :

sudo apt install nodejs

Il est aussi possible de l’installer via nvm (Node Version Manager), qui vous permettra de changer de version de NodeJS en fonction des requis de vos projets.

Java

Pour installer Java, vous pouvez vous tourner vers le JDK officiel sur la page d’Oracle. Vous y trouverez un .deb ou un .rpm à installer facilement sur votre distribution. Vous pouvez aussi utiliser openjdk pour une implémentation open-source de la plateforme Java.

sudo apt install openjdk-17-jre
Ruby et Jekyll

Pour installer Ruby sur une distribution Linux basée sur Debian, vous pouvez le faire via votre package-manager :

sudo apt-get install ruby-full

Pour le faire sur Mac :

brew install ruby

Que ce soit sous Linux ou Mac, vous pouvez ensuite installer Jekyll avec la commande suivante :

gem install bundler jekyll

Vous trouverez davantage d’informations sur le confluence d’hl7.

Des difficultés pour installer ruby et jekyll peuvent survenir sur mac M1, M2 : lancer le terminal avec rosetta et suivre cette procédure permet de régler les problèmes.

Installer SUSHI

Sushi permet de convertir la grammaire FSH pour générer des profils, extensions (StructureDefinition) et des exemples / instances FHIR. La prise en main est relativement facile lorsque l’on connaît bien FHIR. Sushi est développé en JavaScript sous forme de module npm.

npm install -g fsh-sushi

Pour information, GoFSH permet de faire la transformation inverse : transformer une StructureDefinition au format FSH.

Générer l’IG

bash _updatePublisher.sh # Mise à jour du publisher java
bash _genonce.sh # Génère l'IG

Publication d’une nouvelle version d’un guide d’implémentation

Au sein de l’ANS

Pour publier une nouvelle version (release) d’un guide d’implémentation, il est nécessaire de remplir à la racine du répertoire GitHub un fichier publication-request.json dont la documentation peut être trouvée ici. Ensuite, il suffit de lancer le workflow de release sur GitHub.

En dehors de l’ANS

Pour publier des guides d’implémentation en dehors de l’ANS, il est nécessaire de :

1/ Créer un template pour votre organisation (exemple de celui de l’ANS) 2/ Créer un répertoire GitHub qui va contenir le contenu des pages web à publier (exemple de celui de l’ANS) 3/ Lancer l’IG publisher avec l’option -go-publish (Documentation) 4/ Publier le contenu sur un serveur web 5/ Faire une Pull Request dans ce repo pour ajouter votre flux rss (dans le fichier package-feeds.json)

Pour rappel, les bonnes pratiques imposent de respecter les modélisations faites au niveau national : FrCore et guides d’implémentation de l’ANS