From 2d5594bd8a712323e97a5b4ca012c3d02684318f Mon Sep 17 00:00:00 2001 From: William AZIS Date: Wed, 16 Oct 2024 00:15:05 +0200 Subject: [PATCH] add integration fhir folder --- .../version-2/getting-started/api-basics.md | 18 ++-- .../version-2/getting-started/test-api.md | 16 ++-- .../integration-fhir/integration-dotnet.md | 62 ++++++++++++++ .../integration-fhir/integration-java.md | 84 +++++++++++++++++++ .../integration-fhir/integration-php.md | 64 ++++++++++++++ 5 files changed, 228 insertions(+), 16 deletions(-) create mode 100644 docs/pages/guide/version-2/integration-fhir/integration-dotnet.md create mode 100644 docs/pages/guide/version-2/integration-fhir/integration-java.md create mode 100644 docs/pages/guide/version-2/integration-fhir/integration-php.md diff --git a/docs/pages/guide/version-2/getting-started/api-basics.md b/docs/pages/guide/version-2/getting-started/api-basics.md index 80a6bdb..713962d 100644 --- a/docs/pages/guide/version-2/getting-started/api-basics.md +++ b/docs/pages/guide/version-2/getting-started/api-basics.md @@ -7,10 +7,10 @@ subTitle: Démarrage rapide ### URL d'accès (base url) -Tous les accès se font via HTTPS. - #### Environnement Production +Tous les accès se font via HTTPS. + | Variables | Valeurs | | --- | --- | | api-url | https://gateway.api.esante.gouv.fr/fhir/v2/1.x | @@ -23,12 +23,12 @@ NOTE| Il n'existe pas d'environement bac à sable de l'API avec des données fic | Variables | Valeurs | | --- | --- | -| [api-url]/metadata | Pour le capability statement | -| [api-url]/Practitioner | Pour les exercices professionnels des professionnels intervenant dans le système de santé | -| [api-url]/PractitionerRole | Pour les situations d'exercice des professionnels | -| [api-url]/Organization | Pour les structures (entités juridiques, entités géographiques) | -| [api-url]/HealthcareService | Pour les activités de soins et les équipements sociaux | -| [api-url]/Device | Pour les équipements matériels lourds (EML) | +| [api-url]/metadata | Récupérer le capability statement | +| [api-url]/Practitioner | Récupérer les exercices professionnels des professionnels intervenant dans le système de santé | +| [api-url]/PractitionerRole | Récupérer les situations d'exercice des professionnels | +| [api-url]/Organization | Récupérer les structures (entités juridiques, entités géographiques) | +| [api-url]/HealthcareService | Récupérer les activités de soins et les équipements sociaux | +| [api-url]/Device | Récupérer les équipements matériels lourds (EML) | ### Codes d’état HTTP (HTTP status codes) @@ -40,7 +40,7 @@ Les codes HTTP standard sont des codes de statut envoyés par un serveur en rép | --- | --- | --- | | 200 | OK | Requête réussie | | 400 | Bad Request | La requête est mal formatée. Vérifiez les paramètres ou la syntaxe | -| 401 Unauthorized | Impossible d'authentifier la requête | +| 401 | Unauthorized | Impossible d'authentifier la requête | | 403 | Forbidden | La requêtes n'est pas autorisée | | 404 | Not found | La ressource n'est pas trouvée | | 500 | Internal Server Error |Une erreur inattendue est survenue | | diff --git a/docs/pages/guide/version-2/getting-started/test-api.md b/docs/pages/guide/version-2/getting-started/test-api.md index 736ebcb..9dbf21e 100644 --- a/docs/pages/guide/version-2/getting-started/test-api.md +++ b/docs/pages/guide/version-2/getting-started/test-api.md @@ -33,7 +33,7 @@ Veuillez trouver ci-dessous les variables utilisées dans le projet Postman: |Variable|Description|Valeur| |---|---|---| -|api_key|Clé d'API (Si vous n'avez pas de clé, veuillez suivre la procédure décrite [ici](/annuaire-sante-fhir-documentation/pages/guide/version-1/getting-started/test-api.html))|Saisissez votre clé| +|api_key|Clé d'API (Si vous n'avez pas de clé, veuillez suivre la procédure décrite [ici](/annuaire-sante-fhir-documentation/pages/guide/version-2/getting-started/test-api.html))|Saisissez votre clé| |api_url|L’url d’accès à l’API |https://gateway.api.esante.gouv.fr/fhir/v2/1.x|

@@ -48,25 +48,22 @@ NOTE| Pour la suite de l'exercice, vous devez remplacer {{site.ans.demo_key }} p Pour ces premiers tests, nous utilisons [cURL](https://curl.se/) pour plus de simplicité. -### Récuperer le Capability Statement FHIR +### Récuperer le Capability Statement FHIR (Metadata)

-* **Test 1** : lancez la commande suivante pour récupérer le CapabilityStatement FHIR (liste des fonctionnalités de l'API) : +* **Test 1** : lancez la commande suivante pour récupérer le CapabilityStatement (liste des fonctionnalités de l'API) :
  - -
{% highlight bash %} -curl -H "ESANTE-API-KEY: {{site.ans.demo_key }}" "{{site.ans.api_url}}/metadata?_pretty=true&_format=json" +curl -H "ESANTE-API-KEY: {{site.ans.demo_key }}" "{{site.ans.api_url}}/metadata" {% endhighlight %}
* Ci-dessous la réponse de l'API :
-  ```json { @@ -168,3 +165,8 @@ Pour plus d'informations, consulter le site [IGC-Santé de l'ANS](https://igc-sa

+ + +### Taux de disponibilité + +Le taux de disponibilité qui doit être assuré par le titulaire du marché qui maintient et héberge nos SI est de 99,4% (24h/24 et 7j/7). \ No newline at end of file diff --git a/docs/pages/guide/version-2/integration-fhir/integration-dotnet.md b/docs/pages/guide/version-2/integration-fhir/integration-dotnet.md new file mode 100644 index 0000000..bedac00 --- /dev/null +++ b/docs/pages/guide/version-2/integration-fhir/integration-dotnet.md @@ -0,0 +1,62 @@ +--- +layout: menu-version-1 +title: Utilisation de C# +subTitle: Intégration FHIR +--- + +Ce guide décrit comment intégrer l'API à un projet .Net Core. + +Si vous n'avez pas de clé d'API, veuillez suivre la procédure décrite [ici]({{ '/pages/guide/version-1/integration-fhir/integration-dotnet.html'}}). + +NOTE| Dans nos différents exemples, nous utilisons maven et la librairie développée par Firely Hl7.Fhir.R4. FHIR reste une API HTTP JSON/XML qui pourra être appelée avec d'autres techniques. + + +### Dépendance + +Ajoutez la dépendance Hl7.Fhir.R4 à votre projet. Nous choisirons la version R4 car l'api proposée est basée sur FHIR R4. + +``` +dotnet add package Hl7.Fhir.R4 --version 4.3.0 +``` + + +  + +### Configuration du client HTTP FHIR avec HAPI + +Par rapport à l'utilisation de base du client Fhir, nous spécifions un HttpClientHandler afin d'ajouter l'API Key d'authentification. + +Voici un exemple nominal: +
+{% highlight csharp %} +// class to add the security token in the header: +public class AuthorizationMessageHandler : HttpClientHandler +{ + protected async override System.Threading.Tasks.Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + request.Headers.Add("ESANTE-API-KEY", "{{site.ans.demo_key }}"); + return await base.SendAsync(request, cancellationToken); + } +} + +// client creation: +var settings = new FhirClientSettings +{ +Timeout = 40000, +PreferredFormat = ResourceFormat.Json, +VerifyFhirVersion = false, +}; +var handler = new AuthorizationMessageHandler(); +var client = new FhirClient("{{site.ans.api_url}}/fhir/", settings, handler); + +// and then use the client: +var result = client.Search(); + +{% endhighlight %} +
+ + +Vous retrouverez toute la documentation de ce client sur le site de la librairie Firely HL7 FHIR SDK in .NET : +* [Site du SDK](https://fire.ly/products/firely-net-sdk/) +* [Documentation](https://docs.fire.ly/projects/Firely-NET-SDK/en/latest/) + diff --git a/docs/pages/guide/version-2/integration-fhir/integration-java.md b/docs/pages/guide/version-2/integration-fhir/integration-java.md new file mode 100644 index 0000000..c387332 --- /dev/null +++ b/docs/pages/guide/version-2/integration-fhir/integration-java.md @@ -0,0 +1,84 @@ +--- +layout: menu-version-1 +title: Utilisation de Java +subTitle: Intégration FHIR +--- + +Ce guide décrit comment intégrer l'API à un projet Java. + +Si vous n'avez pas de clé d'API, veuillez suivre la procédure décrite [ici]({{ '/pages/guide/version-1/integration-fhir/integration-java.html'}}). + +NOTE| Dans nos différents exemples, nous utilisons maven et la librairie Hapi. FHIR reste une API HTTP JSON/XML qui pourra être appelée avec d'autres techniques. + +### Dépendances maven + +Pour l'exemple, le projet est un projet java maven. Nous utilisons la librairie [Java Hapi](https://hapifhir.io/){:target="_blank"} qui permet entre autres de faire des appels FHIR. + +Pour utiliser les librairies Hapi, nous allons ajouter les dépendances suivantes dans le fichier pom.xml : + +```xml + + 6.0.0 + + + + junit + junit + 4.13 + test + + + + ca.uhn.hapi.fhir + hapi-fhir-base + ${hapifhir_version} + + + ca.uhn.hapi.fhir + hapi-fhir-client + ${hapifhir_version} + + + ca.uhn.hapi.fhir + hapi-fhir-structures-r4 + ${hapifhir_version} + + + ch.qos.logback + logback-classic + 1.2.3 + + +``` + +  + +### Configuration du client HTTP FHIR avec HAPI + +Par rapport à l'utilisation de base du client HAPI, nous spécifions un Intercepeur afin d'ajouter l'API Key d'authentification. + +Voici un exemple nominal: +
+{% highlight java %} +// register the interceptor only one time: +var client = ctx.newRestfulGenericClient("{{site.ans.api_url}}/fhir"); +client.registerInterceptor(new IClientInterceptor() { + @Override + public void interceptRequest(IHttpRequest iHttpRequest) { + iHttpRequest.addHeader("ESANTE-API-KEY", "{{site.ans.demo_key }}"); + } + @Override + public void interceptResponse(IHttpResponse iHttpResponse) throws IOException {} +}); +// and then use the client: +var conf = client + .capabilities() + .ofType(CapabilityStatement.class) + .execute(); +{% endhighlight %} +
+ +NOTE| La création du client est coûteuse, nous recommandons de conserver le client pour plusieurs appels. + +La documentation Hapi est très riche sur le fonctionnement de son client, vous pourrez trouver différents usages: [Documentation Client HAPI](https://hapifhir.io/hapi-fhir/docs/client/generic_client.html){:target="_blank"} + diff --git a/docs/pages/guide/version-2/integration-fhir/integration-php.md b/docs/pages/guide/version-2/integration-fhir/integration-php.md new file mode 100644 index 0000000..cc0fa82 --- /dev/null +++ b/docs/pages/guide/version-2/integration-fhir/integration-php.md @@ -0,0 +1,64 @@ +--- +layout: menu-version-1 +title: Utilisation de PHP +subTitle: Intégration FHIR +--- + +Ce guide décrit comment intégrer l'API à un projet PHP. + +Si vous n'avez pas de clé d'API, veuillez suivre la procédure décrite [ici]({{ '/pages/guide/version-1/integration-fhir/integration-php.html'}}). + +NOTE| Dans nos différents exemples, nous utilisons composer et la librairie dcarbone/php-fhir pour FHIR et Guzzle pour le REST. FHIR reste une API HTTP JSON/XML qui pourra être appelée avec d'autres techniques. + +### Dépendances composer + +dcarbone/php-fhir permet de parser et typer les objets FHIR. Cela pourra être utilisé par exemple pour la complétion. + + + +
+{% highlight php %} +{ + "require": { + "dcarbone/php-fhir-generated": "v2.0.*", + "guzzlehttp/guzzle": "^7.0" + } +} +{% endhighlight %} + +
+
+ + +### Configuration du client HTTP FHIR avec Guzzle + +Les requêtes sont des requêtes REST auxquelles nous précisons un header https. + +Voici un exemple nominal : + + +
+ +{% highlight php %} + true, + 'sxeArgs' => LIBXML_COMPACT | LIBXML_NSCLEAN +]); +$parser = new PHPFHIRResponseParser($config); + + +$header = ['ESANTE-API-KEY' => 'eb2e94fa-ffe6-491f-aa9d-073f6a5a2415']; +$client = new GuzzleHttp\Client([ + 'base_uri' => 'https://gateway.api.esante.gouv.fr', + 'timeout' => 2.0, + 'headers' => $header]); +{% endhighlight %} + +
+ +