rhapi-client

1.0.20 • Public • Published

rhapi-client

Un client RHAPI JavaScript

RHAPI is a RESTful Health API

NPM

Installation

npm install rhapi-client

Alternativement rhapi-client-browser.js (généré par browserify) est fourni pour être inséré directement dans une page html

<script type="text/javascript" src="rhapi-client-browser.js"></script>

Usage

Instancier un client sans authentification (tests et démos)

var Client = require("rhapi-client").Client;
var client = new Client("https://demo.rhapi.net/demo01");
// les groupes/méthodes RHAPI sont accessibles ici

Idem avec import (ES6, Babel) et gestion globale des erreurs

import { Client } from 'rhapi-client';
var client = new Client(
    "https://demo.rhapi.net/demo01"),
    (datas, response) => { // Gestion globale des erreurs
        console.log('Erreur :');
        console.log(datas); // le code erreur est retourné par datas.networkError
        console.log(response); // datas.networkError === response.statusCode
    }
);
// les groupes/méthodes RHAPI sont accessibles ici
// ex. lecture du patient d'id 5 
client.Patients.read(
    5,
    {},
    (patient) => {
        console.log('Résultat :');
        console log(patient);
    }
);

Instancier un client avec authentification et gestion (globale et unitaire) des erreurs

var Client = require("rhapi-client").Client;
function globalErrorHandler(datas, response) {
    console.log('Erreur (global) : ', datas.networkError); // eq response.statusCode
    if (response.statusCode === 404) {
        // ...
    }
    // else ...
}
var client = new Client(globalErrorHandler);
client.authorize(
    //   auth url                     app token            username    password
    "https://auth-dev.rhapi.net", "VGVzdEFwcDpUZXN0QXBw", "TestUser", "TestUser",
    function() { // success
        // auth ok
        // les groupes/méthodes RHAPI sont accessibles ici
        // ex. lecture du patient d'id 5 
        client.Patients.read(
            5,
            {},
            function(patient) {
                console.log('Patient 5 :');
                console log(patient);
            },
            // la fonction suivante peut être omise : seule la
            // fonction globalErrorHandler sera alors appelée
            function(datas, response) {
                // une erreur en lecture patient provoquera un appel
                // à cette fonction puis un appel à globalErrorHandler
                console.log('Erreur (patient) : ' + datas.networkError);
            }
        );
    },
    function(datas, response) {
        // une erreur d'authentification provoquera un appel
        // à cette fonction puis un appel à globalErrorHandler
        console.log(datas); // erreur d'authentification ?
        console.log(response);
        // erreur username/password ?
        // essayer à nouveau ?
    }
);

Appeler une méthode

On utilise la notation pointée pour appeler un groupe (CCAM, Patients...) puis une méthode (create, read, readAll...).

Les groupes, méthodes et paramètres utilisés par rhapi-client reprennent exactement les mêmes fonctionnalités et la même terminologie que l'API REST.

Pour plus d'informations, il conviendra donc de se référer à la documentation RHAPI : https://demo.rhapi.net/apidoc01/.

Utiliser un formulaire pour l'envoi de fichiers

Pour l'envoi de fichiers, un formulaire standard HTML peut être utilisé. Le content-type doit alors être multipart/form-data afin de permettre l'envoi simultané des valeurs d'autres champs.

Voici l'exemple minimaliste mais fonctionnel d'un formulaire d'envoi d'images (envoi simultané des identifiants patient et praticien).

<!-- 
    form-exemple.html
-->
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8"> 
  <title>Images RHAPI - Formulaire d'envoi</title>
  <style>
    body {
      margin: 20px;
      font-family: Helvetica,Arial;
      font-size: 24;
    }
    label {
      color: #404040;
    }
    td {
      padding: 10px;
      background: #e0e0e0;
    }
  </style>
  <script src="rhapi-client-browser.js"></script>
</head>
<body>
  <!-- utilisation d'un iframe masqué comme cible du formulaire -->
  <iframe name="result-frame" srcdoc="" onload="refresh(false);" style="display: none">
  </iframe>
  <form id="form-image" action="https://demo.rhapi.net/demo01/Images" method="post" target="result-frame" enctype="multipart/form-data">
    <input name="image" type="file"><br>
    <label>L'identifiant du praticien est fixé à 500</label>
    <input name="idPraticien" type="hidden" value=500><br>
    <label>Choisissez l'identifiant du patient : </label>
    <input name="idPatient" type="Number" min=1 max=1000 value=1><br>
    <input type="submit" value="Valider l'enregistrement de l'image">
  </form>
  <input type="button" value="Effacer toutes les images" onclick="refresh(true)">
  <table id="list"></table>
  <script type="text/javascript">
    let Client = require("rhapi-client").Client;
    let client = new Client("https://demo.rhapi.net/demo01");
    function refresh(removeAll) {
      client.Images.readAll(
        {
          _idPraticien: 500,
          limit: 1000,
          sort: "idPatient"
        },
        function(datas, response) {
          let l = datas.results.length;
          let list = "<th>Id Patient</th><th>Nom du fichier</th><th>Image</th>";
          for (let i = 0; i < l; i++) {
            let image = datas.results[i];
            if (removeAll) {
                client.Images.destroy(image.id, function() {}, function() {});
            }
            else {
                list += "<tr><td>" + image.idPatient + 
                        "</td><td>" + image.fileName + 
                        "</td><td><image src='" + image.image + "'>";
            }
          }
          document.getElementById("list").innerHTML = list;
        },
        function(datas, response) {
          console.log("error");
          console.log(datas);
        }
      );
    };
  </script>
</body>
</html>

Autre exemple (1) : création d'une fiche patient

var args = {
    nom: "Dupont",  
    prenom: "Martin"  
};

client.Patients.create(args, success, error);

function success(datas, response) { 
    console.log(datas); // toutes les données  
    console.log(datas.nom); // "Dupont"  
    console.log(datas.prenom); // "Martin"  
    // etc  
}

function error(datas, response) { 
    console.log(datas); // toutes les données  
    console.log(datas.httpError); // le code erreur 
    console.log(datas.internalMessage); // notice sur l'erreur.  
    // etc  
}

Autre exemple (2) : recherche du patient d'identifiant unique 65

var search = 65; 
var options = {
    // voir documentation RHAPI
};
client.Patients.read(search, options, success, error);

Autre exemple (3) : modification d'une fiche patient

var id = 65;
var options = {
    ville: "Paris"  
};  
client.Patients.update(id, options, success, error);

Autre exemple (4) : recherche des actes CCAM comportant le terme biopsie

var options = {
    texte: "biopsie"  
};
client.CCAM.readAll(options, success, error);

Readme

Keywords

none

Package Sidebar

Install

npm i rhapi-client

Weekly Downloads

2

Version

1.0.20

License

MIT

Unpacked Size

844 kB

Total Files

7

Last publish

Collaborators

  • lambdasoft