Intégration FHIR

Utilisation de Java

Ce guide décrit comment intégrer l’API FHIR du ROR à un projet Java.

Si vous n’avez pas encore vos identifiants d’accès, consultez la page Authentification.

Dans nos différents exemples, nous utilisons Maven et la librairie HAPI FHIR. FHIR reste une API HTTP JSON/XML qui peut être appelée avec d'autres techniques.

Dépendances Maven

Pour l’exemple, le projet est un projet Java Maven. Nous utilisons la librairie HAPI FHIR qui permet de structurer les données.

Pour utiliser les librairies HAPI, nous allons ajouter les dépendances suivantes dans le fichier pom.xml :

<properties>
    <hapifhir_version>7.6.1</hapifhir_version>
</properties>
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>
    <!-- Hapi classes -->
    <dependency>
        <groupId>ca.uhn.hapi.fhir</groupId>
        <artifactId>hapi-fhir-base</artifactId>
        <version>${hapifhir_version}</version>
    </dependency>
    <dependency>
        <groupId>ca.uhn.hapi.fhir</groupId>
        <artifactId>hapi-fhir-client</artifactId>
        <version>${hapifhir_version}</version>
    </dependency>
    <dependency>
        <groupId>ca.uhn.hapi.fhir</groupId>
        <artifactId>hapi-fhir-structures-r4</artifactId>
        <version>${hapifhir_version}</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
</dependencies>

 

Configuration du client HTTP FHIR avec HAPI

Par rapport à l’utilisation de base du client HAPI, nous spécifions un intercepteur afin d’ajouter le jeton d’accès (Authorization) ainsi que les 4 headers Ror-* requis par l’API du ROR (voir la page Consommation des API FHIR).

Voici un exemple de cas nominal :

// register the interceptor only one time:
var client = ctx.newRestfulGenericClient("{{BASE}}");
client.registerInterceptor(new IClientInterceptor() {
    @Override
    public void interceptRequest(IHttpRequest iHttpRequest) {
        iHttpRequest.addHeader("Authorization", "Bearer {{access_token}}");
        iHttpRequest.addHeader("Ror-Profil-Utilisateur-Code", "{{profil_code}}");
        iHttpRequest.addHeader("Ror-Profil-Utilisateur-System", "{{profil_system}}");
        iHttpRequest.addHeader("Ror-Role-Metier-Code", "{{role_code}}");
        iHttpRequest.addHeader("Ror-Role-Metier-System", "{{role_system}}");
    }
    @Override
    public void interceptResponse(IHttpResponse iHttpResponse) throws IOException {}
});
// and then use the client:
var conf = client
   .capabilities()
   .ofType(CapabilityStatement.class)
   .execute();

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 y trouver différents usages : Documentation Client HAPI


Utilisation de Python