Datamatrix

Générer un datamatrix INS avec la DevBox-Santé INSi et insérer un cartouche dans un PDF

Il est dorénavant possible (depuis la version 2.6) de générer un datamatrix conforme à la spécification de l’ANS.

Interface

Une interface Java a été mis à disposition :

package fr.devboxsante.insi.datamatrix;

import fr.devboxsante.insi.model.INS;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * Génère un Datamatrix conforme à la spécification "INS - Format Datamatrix" de
 * l'ANS
 *
 */
public interface InsDatamatrixGenerator {

    /**
     * Génére une image du datamatrix correspondant à l'INS passé en paramètre au
     * format défini dans info.format (jpeg par défaut) et à la taille défini dans info.sizeInPx
     * @param ins
     * @param info
     * @return l'image
     */
    public byte[] generateDatamatrix(INS ins, InsDatamatrixInfo info);

    /**
     * Insert le cartouche correspondant à l'INS passé en paramètre comme demandé
     * dans la spècification
     * @param ins l'Identité National de Santé
     * @param info les infos d'insertion dans le PDF
     * @param input le pdf en entrée
     * @param output le pdf en sortie.
     */
    public void insertInsCartoucheInPdf(INS ins, InsCartoucheInfo info, InputStream input, OutputStream output);
}

Son pendant en REST :

datamatrix_swagger

Générer le datamatrix

Pour celà, il suffit depuis un environnement java :

final InsDatamatrixGenerator insDatamatrixGenerator = new InsDatamatrixGeneratorImpl();
final INS ins = ... ;
byte[] datamatrix = insDatamatrixGenerator.generateDatamatrix(ins, InsDatamatrixInfo.builder().format("jpg").sizeInPx(200).build());
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("datamatrix200.jpg"));
out.write(datamatrix);
out.close();

Son pendant via l’API REST :

curl -X POST "http://127.0.0.1:8484/insi/v2/datamatrix/jpg?sizeInPx=200" -H "accept: */*" -H "Content-Type: application/json" -d "{ \"matriculeINS\": { \"valeur\": \"1010663220754\", \"cle\": \"60\", \"identifiantSysteme\": \"INS_NIR\" }, \"traitsIdentite\": { \"nomFamille\": \"D'ARTAGNAN DE L'HERAULT\", \"prenomUtilise\": null, \"prenomActeNaissance\": \"PIERRE-ALAIN GUNTHER\", \"sexeAdministratif\": \"M\", \"dateNaissance\": \"2001-06-17\", \"lieuNaissance\": \"63220\" } }"

Vous permet d’obtenir le datamatrix INS :  datamatrix

Insérer le cartouche INS dans le PDF

En plus de générer le datamatrix, il est possible d’insérer le cartouche spécifié par l’ANS dans le fichier PDF.

Ainsi le code suivant :

final INS ins = ...;
insDatamatrixGenerator.insertInsCartoucheInPdf(ins,
        InsCartoucheInfo.builder()
                .pageNumber(0)
                .startX(20)
                .startY(85)
                .height(80)
                .width(160)
                .unite(InsCartoucheInfo.Unite.MM)
                .build(),
        new FileInputStream("input.pdf"),
        new FileOutputStream("output.pdf"));

Son pendant en curl :

curl -X POST "http://127.0.0.1:8484/insi/v2/datamatrix/pdf/insertCartouche" -H "accept: */*" -H "Content-Type: multipart/form-data" -F "cartoucheContexte={ "info": { "height": 60, "pageNumber": 0, "startX": 20, "startY": 70, "unite": "MM", "width": 170 }, "ins": { "matriculeINS": { "valeur": "2770763220829", "cle": "10", "identifiantSysteme": "1.2.250.1.213.1.4.8" }, "traitsIdentite": { "nomFamille": "NESSI", "prenomUtilise": "RUTH", "prenomActeNaissance": "RUTH ISABELLE", "sexeAdministratif": "F", "dateNaissance": "1977-07-14", "lieuNaissance": "63220" } } }" -F "file=@1.pdf;type=application/pdf"

vous permet d’obtenir un nouveau fichier comportant le cartouche INS où vous vouliez l’insérer :

cartouche INS