NAV

Version : 3.0

Introduction

Synapse développe une solution d'aide à la prescription, incluant les fonctionnalités suivantes :

Ces fonctionnalités sont mises à disposition au travers d'APIs et/ou widgets pour être intégrés dans une application web.

Demo

Les différents widgets sont testables sur une interface de démo:
Page de démo

Authentification

Principe

L’authentification auprès du back-end Synapse se fait à l’aide de jetons JWT

Avant appel d’API ou initialisation d’un widget Synapse, le back-end du site client génère un jeton JWT signé. La génération se fait à partir d’un couple de clefs asymétriques RSA (R256) dont la clef publique est partagée avec le back-end de Synapse lors de la mise en place du service.

La durée de vie (TTL) de chaque token généré est limité à 1 heure de sorte à réduire l’exposition non souhaitée en dehors du contexte de l'application client.

Un token signé sera transmis à chaque appel de l’API de l’autocomplétion à travers l’en-tête : Authorization: Bearer

Un token signé sera transmis à la création de chaque instance de widget.

Procédure de mise en place du système d’authentification

Le back-end client génère un couple de clefs asymétriques RSA (R256) de 2048 bits.

Pour générer un couple de clefs asymétriques :

openssl genrsa -out private_key.pem 2048
openssl rsa -in private_key.pem -pubout -out public_key.pem

Le client envoie la clé publique (public_key.pem) au format PEM à Synapse.

Synapse transmet en retour une clé d’issuer (issuer_key) au client. Cette clé sera insérée dans les claims des jetons JWT.

Utilisation du système d’authentification

Pour générer un jeton JWT avec un back-end Node.js :

const fs = require('fs');
const jwt = require('jsonwebtoken');

// Chargement de la clef privée
const private_key = fs.readFileSync('private_key.pem');

// Définition des claims
const payload = {
  iss: <issuer_key>,
  exp: (new Date().getTime() / 1000) + 3600,
  user_id: <user_id>,
};

const options = {
  algorithm: 'RS256',
};

// Génération du token
const token = jwt.sign(payload, private_key, options);

Le back-end du client génère un token JWT à partir de la clef privée (private_key.pem) en utilisant l’algorithme R256.

Ce jeton doit inclure les claims suivants :

Claim Description
iss Clé d'issuer : identifiant du client auprès de Synapse
exp Expiration time : date d'expiration du token au format spécifié dans la RFC 7519.
La durée d'expiration doit être inférieure à 1 heure.
user_id Identifiant utilisateur : hash d'un identifiant de l'utilisateur de l'application client

Le token généré est utilisable pour appel aux APIs ou l'initialisation des widgets.

Dans le cas d’une session longue, le token d’un widget peut expirer en cours d’utilisation du widget.
La callback de widget onTokenExpiration est alors appelée. Elle permet de réaliser un nouvelle demande de token au back-end de l'application client.

APIs

Numéro de version de base de données Thériaque

Récupérer le numéro de version de la base Thériaque

const version = Synapse.TheriaqueVersion;

Les données des services Synapse sont en parties bassées sur la base de données Thériaque, sa version est disponible depuis le namespace Synapse. d

Autocompletion

En cherchant 2 molécules à partir de la chaîne de caractères “ibu” :

curl -X POST t(:apiBaseUrl)/prescription-autocomplete/v1/autocomplete \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <token>' \
  -d '{
    "text": "ibu",
    "type": "pharmaceutical-ingredient",
    "size": 2
}'

La réponse obtenue est :

[
  {
    "entity": {
      "label": "ibuprofene",
      "type": "pharmaceutical-ingredient",
      "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/a296a3f7964b5aa84e42b85549d60eb3b54cf858"
    },
    "score": 41.16
  },
  {
    "entity": {
      "label": "ibuprofene (lysinate d')",
      "type": "pharmaceutical-ingredient",
      "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/890232a27d7c4398ee1138205f17a87e25dc13fc"
    },
    "score": 36.33
  }
]

En cherchant 1 spécialité médicamenteuse contenant la molécule “ébastine” :

curl -X POST t(:apiBaseUrl)/prescription-autocomplete/v1/autocomplete \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <token>' \
  -d '{
    "text": "ébastine",
    "type": "branded-drug",
    "size": 1,
    "field": "moieties"
  }'

La réponse obtenue est :

[
  {
    "entity": {
      "label": "KESTINLYO 10 mg, lyophilisat oral",
      "cis": "64579019",
      "dci_label": "ébastine",
      "moieties": [
        {
          "label": "ébastine",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/69d8226331044441a0a3e378d1d6b36886fed6ee"
        }
      ],
      "type": "branded-drug",
      "uri": "http://frnorm.graph.synapse-medicine.com#BrandedDrug/64579019"
    },
    "score": 93.673416
  }
]

L’API d’autocomplétion permet la recherche d'entités médicamenteuses (spécialité, médicament virtuel, molécule, classe thérapeutique ou accessoire médical) à partir d’une chaîne de caractères. La recherche se fait sur le label de l'entité.

Dans le cas de spécialités médicamenteuses, la recherche peut également se faire sur les labels des substances actives du médicament.

Requête HTTP

POST https://api.synapse-medicine.com/prescription-autocomplete/v1/autocomplete

Body

Parametre Requis Type Description
text true string Chaîne de caractères à autocompléter
type true EntityType Type d’entités recherchées
size true int Nombre maximal d’entités à retourner
lang false Locale Base médicamenteuse de recherche
Default fr-FR
field false enum Champs à autocompléter. Les valeurs possibles sont :
- label (défaut) - moieties (pour type='branded-drug' uniquement)

Réponse

Liste d'objets au format suivant :

Champ Type Description
entity Entity Entité thérapeutique
score float Score de pertinence de l'entité thérapeutique

En cherchant les médicaments virtuels contenant l'ingrédient paracetamol

curl -X POST t(:apiBaseUrl)/prescription-autocomplete/v1/autocomplete \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <token>' \
  -d '{
    "text": "paracetamol",
    "type": "clinical-drug",
    "size": 1
}'

La réponse obtenue est :

[
  {
    "entity": {
      "uri": "http://bdpm.graph.synapse-medicine.com#ClinicalDrug/2837093fea7844a195c722ea493ab4bed5ec3a30",
      "type": "clinical-drug",
      "label": "paracétamol, caféine, 500 mg, comprimé",
      "form": ["comprimé"],
      "label_dose": "500 mg",
      "label_form": "comprimé",
      "administration_routes": ["orale"],
      "medicabase_id": ["MV00001060"],
      "ingredients": [
        {
          "label": "paracétamol",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/7fe0342fcdef507a3066831e939cccb6aee60e46",
          "dose": "500 mg"
        },
        {
          "label": "caféine",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/e145899caa2397319916163da67073029c8376f8",
          "dose": "50 mg"
        }
      ],
      "moieties": [
        {
          "label": "paracétamol",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/7fe0342fcdef507a3066831e939cccb6aee60e46",
          "dose": "500 mg"
        },
        {
          "label": "caféine",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/e145899caa2397319916163da67073029c8376f8",
          "dose": "50 mg"
        }
      ]
    },
    "score": 79.42602
  }
]

En cherchant les spécialités contenant doliprane

curl -X POST t(:apiBaseUrl)/prescription-autocomplete/v1/autocomplete \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <token>' \
  -d '{
    "text": "doliprane",
    "type": "branded-drug",
    "size": 1
}'

La réponse obtenue est :

[
  {
    "entity": {
      "label": "DOLIPRANE 1000 mg, comprimé",
      "uri": "http://frnorm.graph.synapse-medicine.com#BrandedDrug/60234100",
      "type": "branded-drug",
      "cis": "60234100",
      "drug_id": "60234100",
      "rcp_id": "60234100",
      "shortname": "DOLIPRANE",
      "brandname": "DOLIPRANE",
      "label_dose": "1000 mg",
      "label_form": "comprimé",
      "clinical_drug_label": "paracétamol 1000 mg, comprimé",
      "form": ["comprimé"],
      "is_originator": false,
      "is_generic": false,
      "is_atu": false,
      "amm_date": "09/07/2002",
      "amm_status": "Autorisation active",
      "appearance_frequency": "0.09028116",
      "administration_route": "orale",
      "administration_routes": ["orale"],
      "ingredients": [
        {
          "label": "paracétamol",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/7fe0342fcdef507a3066831e939cccb6aee60e46",
          "dose": "1 g"
        }
      ],
      "moieties": [
        {
          "label": "paracétamol",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/7fe0342fcdef507a3066831e939cccb6aee60e46",
          "dose": "1 g"
        }
      ],
      "moieties_label": "paracétamol",
      "num_ingredients": 1,
      "packagings": [
        {
          "label": "DOLIPRANE 1000 mg, comprimé, plaquette(s) thermoformée(s) PVC-aluminium de 8  comprimé(s)",
          "uri": "http://bdpm.graph.synapse-medicine.com#PackagedBrandedDrug/3400935955838",
          "cip13": "3400935955838"
        },
        {
          "label": "DOLIPRANE 1000 mg, comprimé, plaquette(s) thermoformée(s) PVC-aluminium de 100  comprimé(s)",
          "uri": "http://bdpm.graph.synapse-medicine.com#PackagedBrandedDrug/3400956369553",
          "cip13": "3400956369553"
        }
      ],
      "prescription_conditions": [],
      "atc": ["{\"code\": \"N02BE01\", \"label\": \"PARACETAMOL\"}"],
      "rcp_available": true,
      "laboratory": "OPELLA HEALTHCARE FRANCE",
      "fr_equivalent_drugs": [],
      "is_homeopathy": false,
      "is_originator_informal": true,
      "commercialization_status": "Commercialisée",
      "ucd": "3400892390918",
      "schema_constraints_respected": true
    },
    "score": 199.00273
  }
]

En cherchant les spécialités contenant akynzeo

curl -X POST t(:apiBaseUrl)/prescription-autocomplete/v1/autocomplete \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <token>' \
  -d '{
    "text": "akynzeo",
    "type": "branded-drug",
    "size": 1
}'

La réponse obtenue est :

[
  {
    "entity": {
      "label": "AKYNZEO 300 mg/0,5 mg, gélule",
      "uri": "http://frnorm.graph.synapse-medicine.com#BrandedDrug/67693946",
      "type": "branded-drug",
      "cis": "67693946",
      "drug_id": "67693946",
      "rcp_id": "67693946",
      "shortname": "AKYNZEO",
      "brandname": "AKYNZEO",
      "label_dose": "300 mg/0.5 mg",
      "label_form": "gélule",
      "clinical_drug_label": "palonosétron, nétupitant, 300 mg/0.5 mg, gélule",
      "form": ["gélule"],
      "is_originator": false,
      "is_generic": false,
      "is_atu": false,
      "amm_date": "27/05/2015",
      "amm_status": "Autorisation active",
      "administration_route": "orale",
      "administration_routes": ["orale"],
      "ingredients": [
        {
          "label": "palonosétron (chlorhydrate de)",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/93c8816e7ad20a95ed5c7b39877bc444bbe8c54b",
          "dose": "560 ug"
        },
        {
          "label": "nétupitant",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/f5e23a2fa0a01e095bca6a9d6db2617d19332f9a",
          "dose": "300 mg"
        }
      ],
      "moieties": [
        {
          "label": "palonosétron",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/1808b8b51d76ca8eeebd197fb64aebdf788fc4a9",
          "dose": "500 ug"
        },
        {
          "label": "nétupitant",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/f5e23a2fa0a01e095bca6a9d6db2617d19332f9a",
          "dose": "300 mg"
        }
      ],
      "moieties_label": "palonosétron / nétupitant",
      "num_ingredients": 2,
      "packagings": [
        {
          "label": "AKYNZEO 300 mg/0,5 mg, gélule, plaquette(s) aluminium de 1 gélule(s)",
          "uri": "http://frnorm.graph.synapse-medicine.com#PackagedBrandedDrug/3400930038628",
          "is_exceptional_drug": "true",
          "cip13": "3400930038628"
        }
      ],
      "prescription_conditions": [
        {
          "label": "liste I",
          "category": "PRESCRIPTION MEDICALE",
          "subcategory": "Médicaments soumis à prescription médicale, sur liste I"
        }
      ],
      "atc": ["{\"code\": \"A04AA55\", \"label\": \"PALONOSETRON EN ASSOCIATION\"}"],
      "rcp_available": true,
      "laboratory": "HELSINN BIREX PHARMACEUTICALS",
      "fr_equivalent_drugs": [],
      "is_originator_informal": true,
      "is_homeopathy": false,
      "ucd": "3400894239437",
      "commercialization_status": "Commercialisée",
      "schema_constraints_respected": true
    },
    "score": 167.90274
  }
]

En cherchant les spécialités contenant glimepiride

curl -X POST t(:apiBaseUrl)/prescription-autocomplete/v1/autocomplete \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <token>' \
  -d '{
    "text": "glimepiride",
    "type": "branded-drug",
    "size": 1
}'

La réponse obtenue est :

[
  {
    "entity": {
      "cis": "63475277",
      "drug_id": "63475277",
      "shortname": "GLIMEPIRIDE",
      "brandname": "GLIMEPIRIDE BGR",
      "label_dose": "4 mg",
      "label_form": "comprimé",
      "clinical_drug_label": "glimépiride 4 mg, comprimé",
      "form": ["comprimé"],
      "is_originator": false,
      "is_generic": true,
      "is_atu": false,
      "amm_date": "31/01/2006",
      "amm_status": "Autorisation active",
      "appearance_frequency": "4.516454E-4",
      "administration_route": "orale",
      "administration_routes": ["orale"],
      "ingredients": [
        {
          "label": "glimépiride",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/e48d5c4ca7709bb7896747d353faf303679e0361",
          "dose": "4 mg"
        }
      ],
      "moieties": [
        {
          "label": "glimépiride",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/e48d5c4ca7709bb7896747d353faf303679e0361",
          "dose": "4 mg"
        }
      ],
      "moieties_label": "glimépiride",
      "num_ingredients": 1,
      "packagings": [
        {
          "label": "GLIMEPIRIDE BGR 4 mg, comprimé, plaquette(s) PVC-Aluminium de 30 comprimé(s)",
          "uri": "http://bdpm.graph.synapse-medicine.com#PackagedBrandedDrug/3400937190688",
          "package_nb_units": "30",
          "cip13": "3400937190688",
          "is_exceptional_drug": "false",
          "reimbursement_rate": "0.65"
        },
        {
          "label": "GLIMEPIRIDE BGR 4 mg, comprimé, plaquette(s) PVC-Aluminium de 90 comprimé(s)",
          "uri": "http://bdpm.graph.synapse-medicine.com#PackagedBrandedDrug/3400937190978",
          "package_nb_units": "90",
          "cip13": "3400937190978",
          "is_exceptional_drug": "false",
          "reimbursement_rate": "0.65"
        }
      ],
      "prescription_conditions": [
        {
          "label": "liste I",
          "category": "PRESCRIPTION MEDICALE",
          "subcategory": "Médicaments soumis à prescription médicale, sur liste I"
        }
      ],
      "atc": ["{\"code\": \"A10BB12\", \"label\": \"GLIMEPIRIDE\"}"],
      "rcp_available": true,
      "laboratory": "BIOGARAN",
      "fr_equivalent_drugs": [],
      "label": "GLIMEPIRIDE BGR 4 mg, comprimé",
      "uri": "http://frnorm.graph.synapse-medicine.com#BrandedDrug/63475277",
      "type": "branded-drug",
      "is_reimbursed": true,
      "ucd": "3400892854878",
      "reimbursement_rate": 0.65,
      "rcp_id": "63475277",
      "commercialization_status": "Commercialisée",
      "is_originator_informal": false,
      "is_homeopathy": false,
      "schema_constraints_respected": true
    },
    "score": 118.82535
  }
]

En cherchant les spécialités contenant glimepiride

curl -X POST t(:apiBaseUrl)/prescription-autocomplete/v1/autocomplete \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <token>' \
  -d '{
    "text": "glimepiride",
    "type": "branded-drug",
    "size": 1
}'

La réponse obtenue est :

[
  {
    "entity": {
      "cis": "63475277",
      "drug_id": "63475277",
      "shortname": "GLIMEPIRIDE",
      "brandname": "GLIMEPIRIDE BGR",
      "label_dose": "4 mg",
      "label_form": "comprimé",
      "clinical_drug_label": "glimépiride 4 mg, comprimé",
      "form": ["comprimé"],
      "is_originator": false,
      "is_generic": true,
      "is_atu": false,
      "amm_date": "31/01/2006",
      "amm_status": "Autorisation active",
      "appearance_frequency": "4.516454E-4",
      "administration_route": "orale",
      "administration_routes": ["orale"],
      "ingredients": [
        {
          "label": "glimépiride",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/e48d5c4ca7709bb7896747d353faf303679e0361",
          "dose": "4 mg"
        }
      ],
      "moieties": [
        {
          "label": "glimépiride",
          "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/e48d5c4ca7709bb7896747d353faf303679e0361",
          "dose": "4 mg"
        }
      ],
      "moieties_label": "glimépiride",
      "num_ingredients": 1,
      "packagings": [
        {
          "label": "GLIMEPIRIDE BGR 4 mg, comprimé, plaquette(s) PVC-Aluminium de 30 comprimé(s)",
          "uri": "http://bdpm.graph.synapse-medicine.com#PackagedBrandedDrug/3400937190688",
          "package_nb_units": "30",
          "cip13": "3400937190688",
          "is_exceptional_drug": "false",
          "reimbursement_rate": "0.65"
        },
        {
          "label": "GLIMEPIRIDE BGR 4 mg, comprimé, plaquette(s) PVC-Aluminium de 90 comprimé(s)",
          "uri": "http://bdpm.graph.synapse-medicine.com#PackagedBrandedDrug/3400937190978",
          "package_nb_units": "90",
          "cip13": "3400937190978",
          "is_exceptional_drug": "false",
          "reimbursement_rate": "0.65"
        }
      ],
      "prescription_conditions": [
        {
          "label": "liste I",
          "category": "PRESCRIPTION MEDICALE",
          "subcategory": "Médicaments soumis à prescription médicale, sur liste I"
        }
      ],
      "atc": ["{\"code\": \"A10BB12\", \"label\": \"GLIMEPIRIDE\"}"],
      "rcp_available": true,
      "laboratory": "BIOGARAN",
      "fr_equivalent_drugs": [],
      "label": "GLIMEPIRIDE BGR 4 mg, comprimé",
      "uri": "http://frnorm.graph.synapse-medicine.com#BrandedDrug/63475277",
      "type": "branded-drug",
      "is_reimbursed": true,
      "ucd": "3400892854878",
      "reimbursement_rate": 0.65,
      "rcp_id": "63475277",
      "commercialization_status": "Commercialisée",
      "is_originator_informal": false,
      "is_homeopathy": false,
      "schema_constraints_respected": true
    },
    "score": 118.82535
  }
]

Information sur une spécialité médicamenteuse

Récupération de la spécialité médicamenteuse ayant pour code CIS 69309629 :

curl -X GET t(:apiBaseUrl)/drug-information/v2/branded-drug/fr/69309629 \
     -H 'Authorization: Bearer <token>'

La réponse obtenue est :

{
  "label": "DOLIPRANE 1000 mg, gélule",
  "cis": "69309629",
  "ingredients": [
    {
      "dose": "1000 mg",
      "label": "paracétamol",
      "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/7fe0342fcdef507a3066831e939cccb6aee60e46"
    }
  ],
  "moieties": [
    {
      "dose": "1000 mg",
      "label": "paracétamol",
      "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/7fe0342fcdef507a3066831e939cccb6aee60e46"
    }
  ],
  "type": "branded-drug",
  "uri": "http://frnorm.graph.synapse-medicine.com#BrandedDrug/69309629"
}

L'API d'information sur les spécialités médicamenteuses permet de récupérer une spécialité à partir de son code CIS.

Requête HTTP

GET https://api.synapse-medicine.com/drug-information/v2/branded-drug/fr/{cis}

Parametre Type Description
cis string Code CIS de la spécialité médicamenteuse souhaitée

Réponse

La réponse est un document de type Entity correspondant à la spécialité médicamenseuse demandée.

Widgets

Setup

Exemple de header pour chargement des widgets Synapse :

<head>
  <meta charset="UTF-8" />
  <script type="text/javascript" src="https://v3-0-widget.synapse-medicine.com/bundle.js"></script>
</head>

L'utilisation des widgets se fait par chargement d'une librairie Synapse depuis le navigateur sur le site web client :
<script type="text/javascript" src="https://v3-0-widget.synapse-medicine.com/bundle.js"></script>

Cette librairie donne accès au namespace Synapse, regroupant les classes suivantes :

Chaque widget est instancié côté client par : const widget = new Synapse.XxxWidget()

Certains widgets comme le profil patient ou l'autocompletion de médicaments permettent la récupération de données alimentant les autres widgets. La transmission de données entre widgets se fait au travers de callbacks.

Locale

La langue d'analyse des widgets se configure grâce à la fonction setLang du namespace Synapse.

Parametre Requis Type Description
locale Oui Locale Langue d'analyse et d'affichage des widgets (Exemple: 'fr-FR').

Définition de la langue

Synapse.setLang(local); // fr-FR | en-US | en-GB | es-ES | de-DE | it-IT

zIndex

Certains widgets affichent des éléments à la racine du DOM (dropdown, tooltips etc...), de manière à simplifier la gestion de la superposition. Dans le cas où il serait nécessaire de contrôler l'empilement de nos widget (par exemple si vous les affichez dans une modale), il est possible de leur transmettre une valeur de d'empilement z-index.

Parametre Requis Type Description
zIndex Non number Valeur numérique d'empilement (z-index css)

Définition de l'empilement

// zIndex can be set on init...
const widget = new Synapse.MyWidget(JWT);
widget.init(element, data, { zIndex });
// ...or updated later
widget.update(data, { zIndex });

Context

Le contexte des widgets se configure grâce aux fonctions initContext et endContext du namespace Synapse.

initContext(patientId, prescriptionId)

Fonction d'initialisation du contexte, s'il n'y a pas de prescriptionId renseigné en paramètre, alors cette fonction en génère un et le retourne.

Parametre Requis Type Description
patientId Non string Id unique pour un patient. Il faut que cette donnée soit chiffrée pour ne pas que ce soit une donnée sensible
prescriptionId Non string Id unique pour une prescription

endContext()

Fonction de finalisation du contexte, à positionner au moment de la 'validation' de la prescription.

Parametre Requis Type Description

Configuration du Contexte

Synapse.initContext({
  patientId: 'fakePatientId_1234567890'
  prescriptionId: 'fakePrescriptionId_1234567890' // optional
});

Synapse.endContext();

AutocompleteWidget

Widget embarquant une barre de recherche et l'api autocomplete.

Initialisation du widget dans un élément du DOM.

const JWT = 'insert your token here';
const autocompleteWidget = new Synapse.AutocompleteWidget(JWT);
const dataAutocomplete = {
  autocompleteApi: [
    Synapse.AutocompleteApi.TherapeuticEntityAutocomplete, //by default
    Synapse.AutocompleteApi.MedicalDeviceAutocomplete,
  ],
};

autocompleteWidget.init(document.getElementById('autocomplete-container'), dataAutocomplete);

Mise à jour du widget pour changer les suggestions proposées.

autocompleteWidget.update(dataAutocomplete);

Récupération des entités sélectionnées.

var entities = [];
autocompleteWidget.setCallback('onSelectEntity', (entity) => {
  entities.push(entity);
});

Mise à jour du jeton JWT :

autocompleteWidget.setCallback('onTokenExpiration', function (err, data) {
  const newToken = fetchNewToken();
  autocompleteWidget.setToken(newToken);
});

init(element, dataAutocomplete)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
dataAutocomplete Oui - Object Données d'initialisation
dataAutocomplete.autocompleteApi Non [Synapse.AutocompleteApi.TherapeuticEntityAutocomplete] AutocompleteApi[] Api à fournir au widget pour récupérer les entités des différentes bases de données.

update(dataAutocomplete)

Mise à jour du widget.

Parametre Requis Valeur par défaut Type Description
dataAutocomplete Oui - Object Données d'initialisation
dataAutocomplete.autocompleteApi Non [Synapse.AutocompleteApi.TherapeuticEntityAutocomplete] AutocompleteApi[] Api à fournir au widget pour récupérer les entités des différentes bases de données.

setCallback("onSelectEntity", callback)

Callback de récupération des entités sélectionnées.

Parametre Requis Type Description
callback Oui function Fonction à appeler prenant en paramètre entity de type Entity.

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

destroy()

Supprime le widget du DOM.

MedicalResourceAutocompleteWidget

Widget embarquant une barre de recherche et l'api autocomplete et pouvant etre paramétré.

Initialisation du widget dans un élément du DOM.

const JWT = 'insert your token here';
const medicalResourceAutocompleteWidget = new Synapse.MedicalResourceAutocompleteWidget(JWT);

const entityTypes = /* EntityTypes[] / ; const enableFavorite = / boolean / ; const favorites = / Entity[] */ ;

const dataAutocomplete = { entityTypes: [ Synapse.MedicalResourceEntityType.BRANDED_DRUGS, Synapse.MedicalResourceEntityType.CLINICAL_DRUGS, Synapse.MedicalResourceEntityType.MEDICAL_ACCESSORIES, ], enableFavorite, favorites };

medicalResourceAutocompleteWidget.init(document.getElementById('medical-resource-autocomplete-container'), dataAutocomplete);

Mise à jour du widget pour changer les suggestions proposées.

medicalResourceAutocompleteWidget.update(dataAutocomplete);

Évènement de clic sur le bouton de validation de la posologie :

var entities = [];
medicalResourceAutocompleteWidget.setCallback('onSelectEntity', (entity) => {
  if (entity) {
    // Save entity
  }
});

Évènements de clic sur le bouton de favoris :

medicalResourceAutocompleteWidget.setCallback('onAddFavorite', (favoriteEntity) => {
  if (favoriteEntity) {
    // Push favoriteEntity to favorites list
  }
});

medicalResourceAutocompleteWidget.setCallback('onDeleteFavorite', (favoriteEntityId) => { if (favoriteEntityId) { // Delete the favorite Entity from favorites list with a filter on uri } });

Mise à jour du jeton JWT :

medicalResourceAutocompleteWidget.setCallback('onTokenExpiration', function (err, data) {
  const newToken = fetchNewToken();
  medicalResourceAutocomplete.setToken(newToken);
});

init(element, dataAutocomplete)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
dataAutocomplete Oui - Object Données d'initialisation
dataAutocomplete.entityTypes Non [Synapse.MedicalResourceEntityType.BRANDED_DRUGS, Synapse.MedicalResourceEntityType.PHARMACEUTICAL_INGREDIENTS, Synapse.MedicalResourceEntityType.MEDICAL_ACCESSORIES] MedicalResourceEntityType[] Type d'entités à fournir au widget pour récupérer les entités des différentes bases de données
dataAutocomplete.enableFavorite Non false boolean Boolean spécifiant si l'option d'affichage et gestion des favoris est activée.
dataAutocomplete.favorites Non null Entity[] Tableau d'entités favorites.

update(dataAutocomplete)

Mise à jour du widget.

Parametre Requis Valeur par défaut Type Description
dataAutocomplete Oui - Object Données d'initialisation
dataAutocomplete.entityTypes Non [Synapse.MedicalResourceEntityType.BRANDED_DRUGS, Synapse.MedicalResourceEntityType.PHARMACEUTICAL_INGREDIENTS, Synapse.MedicalResourceEntityType.MEDICAL_ACCESSORIES] MedicalResourceEntityType[] Type d'entités à fournir au widget pour récupérer les entités des différentes bases de données
dataAutocomplete.enableFavorite Non false boolean Boolean spécifiant si l'option d'affichage et gestion des favoris est activée.
dataAutocomplete.favorites Non null Entity[] Tableau d'entités favorites.

setCallback("onSelectEntity", callback)

Callback de récupération des entités sélectionnées.

Parametre Requis Type Description
callback Oui function Définit la callback appelée lors de l'événement de clic sur l'entité, où : data.entity de type Entity est l’entité selectionnée.

setCallback("onAddFavorite", callback)

Callback d'ajout de favoris.

Parametre Requis Type Description
callback Oui function Définit la callback appelée lors de l'événement de clic sur le bouton de favoris (⭐) lorsque l’entité n’est pas déjà renseignée comme favoris. Elle renvoie en paramètre favoriteEntity de type Entity, qui est l’entité selectionnée comme favoris.

setCallback("onDeleteFavorite", callback)

Callback de suppression de favoris.

Parametre Requis Type Description
callback Oui function Définit la callback appelée lors de l'événement de clic sur le bouton de favoris (⭐) lorsque l’entité est déjà renseignée comme favoris. Elle renvoie en paramètre favoriteEntity de type Entity, qui est l’entité supprimée des favoris.

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

destroy()

Supprime le widget du DOM.

AllergyAutocompleteWidget

Widget embarquant une barre de recherche d'allergies. Attention ce widget ne prend en charge que les entités thérapeutique (Entity) de types : pharmaceutical-ingredient, therapeutic-class, excipient et brandname-drug.

Initialisation du widget dans un élément du DOM.

const JWT = 'insert your token here';

const allergyAutocomplete = new Synapse.AllergyAutocompleteWidget(JWT); allergyAutocomplete.init(document.getElementById('autocomplete-container'), { allergies: [ { label: "amoxicilline", type: "pharmaceutical-ingredient", uri: "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/27ca510d1b49ac3dc05fa7342008af76490df196" // ... other fields } ], disabled: false, // deprecated, please use disableInput disableInput: false, disableSelectedAllergies: false, enableBrandNameDrugs: false, });

Mise à jour du widget pour changer les suggestions proposées.

allergyAutocomplete.update({ 
  disabled: false, // deprecated, please use disableInput
  disableInput: false,
  disableSelectedAllergies: false,
  enableBrandNameDrugs: false,
});

Récupération des entités sélectionnées.

var yourAllergies = [];
allergyAutocomplete.setCallback('onSelectAllergy', (allergy) => {
  yourAllergies.push(allergy);
});

translation missing: fr_FR.autocompleteWidgetUpdateOnDeleteEntity

var yourAllergies = [{label: "amoxicilline", type: "pharmaceutical-ingredient", uri: "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/27ca510d1b49ac3dc05fa7342008af76490df196"}];
allergyAutocomplete.setCallback('onDeleteAllergy', (allergy) => {
  yourAllergies = yourAllergies.filter(currentAllergy => currentAllergy.uri !== allergy.uri);
});

Mise à jour du jeton JWT :

allergyAutocomplete.setCallback('onTokenExpiration', function (err, data) {
  const newToken = fetchNewToken();
  allergyAutocomplete.setToken(newToken);
});

init(element)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
data Oui - object Données d'initialisation
data.allergies Non [] array Liste des allergies définies à l'initialisation. Tableau de Entity
data.disabled Non false boolean Activer ou désactiver l'input (déprécié, merci d'utiliser disableInput).
data.disableInput Non false boolean Activer ou désactiver l'input.
data.disableSelectedAllergies Non false boolean Activer ou désactiver la liste des allergies sélectionnées.
data.enableBrandNameDrugs Non false boolean Activer ou désactiver la recherche d'alleries par médicament.

update(data)

Mise à jour du widget.

Parametre Requis Valeur par défaut Type Description
data Oui - Object Données d'initialisation
data.allergies Non [] array Liste des allergies définies à l'initialisation. Tableau de Entity
data.disabled Non false boolean Activer ou désactiver l'input (déprécié, merci d'utiliser disableInput).
data.disableInput Non false boolean Activer ou désactiver l'input.
data.disableSelectedAllergies Non false boolean Activer ou désactiver la liste des allergies sélectionnées.
data.enableBrandNameDrugs Non false boolean Activer ou désactiver la recherche d'alleries par médicament.

setCallback("onSelectAllergy", callback)

Callback de récupération des allergies sélectionnées.

Parametre Requis Type Description
callback Non function Fonction (callback) appelée lorsque une allergie est sélectionnée. Elle retourne un paramètre allergy de type Entity.

setCallback("onDeleteAllergy", callback)

Callback de récupération des allergies retirées.

Parametre Requis Type Description
callback Non function Fonction (callback) appelée lorsque une allergie est retirée de la liste. Elle retourne un paramètre allergy de type Entity. Nécessite de désactiver le paramètre disableSelectedAllergies.

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

destroy()

Supprime le widget du DOM.

PathologyAutocompleteWidget DEPRECATED

Widget embarquant une barre de recherche de pathologie.

Initialisation du widget dans un élément du DOM.

const JWT = 'insert your token here';

const pathologyAutocomplete = new Synapse.PathologyAutocompleteWidget(JWT); pathologyAutocomplete.init(document.getElementById('autocomplete-container'), { disabled: false, });

Mise à jour du widget pour changer les suggestions proposées.

pathologyAutocomplete.update({
  disabled: false,
});

Récupération des entités sélectionnées.

var pathologies = [];
pathologyAutocomplete.setCallback('onSelectPathology', function (pathology) {
  pathologies.push(pathology);
});

Mise à jour du jeton JWT :

pathologyAutocomplete.setCallback('onTokenExpiration', function (err, data) {
  const newToken = fetchNewToken();
  pathologyAutocomplete.setToken(newToken);
});

init(element)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
data Oui - object Données d'initialisation
data.disabled Non false boolean Activer ou désactiver l'input

update(data)

Mise à jour du widget.

Parametre Requis Valeur par défaut Type Description
data Oui - Object Données d'initialisation
data.disabled Non false boolean Activer ou désactiver l'input

setCallback("onSelectPathology", callback)

Callback de récupération des entités sélectionnées.

Parametre Requis Type Description
callback Oui function Fonction à appeler prenant en paramètre pathology de type Pathology.

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

destroy()

Supprime le widget du DOM.

PathologyAutocompleteWidgetV2

Widget de recherche de pathologie (version 2). Ce widget contient :

Initialisation du widget dans un élément du DOM.

const JWT = 'insert your token here';

let pathologies = [
  { identifier: { code: 'A692', display: 'Maladie de Lyme', system: 'cim-10' } },
  { identifier: { code: 'D73', display: 'Maladies de la rate', system: 'cim-10' } },
];

let terminologies = [
  { terminology: Synapse.PathologyAutocompleteWidgetV2.Terminology.ICD10, active: true, available: true },
  { terminology: Synapse.PathologyAutocompleteWidgetV2.Terminology.CISP, active: true, available: true },
  { terminology: Synapse.PathologyAutocompleteWidgetV2.Terminology.DRC, active: false, available: true },
];

const pathologyAutocomplete = new Synapse.PathologyAutocompleteWidget(JWT);

pathologyAutocomplete.init(document.getElementById('autocomplete-container'), {
  pathologies,
  terminologies,
  disabled: false,
  disableSelectedPathologies: false,
});

Mise à jour du widget pour changer les paramètres du widget, masquer la liste des pathologies et ajouter des favoris.

let favorites = [{ identifier: { code: 'J65', display: 'Asthme', system: 'cim-10' } }];

pathologyAutocomplete.update({
  pathologies,
  favorites,
  terminologies,
  enableFavorite: true,
  disableSelectedPathologies: true,
});

Récupération d'une pathologie sélectionnée.

pathologyAutocomplete.setCallback('onSelectPathology', function (pathology) {
  pathologies.push(pathology);
});

Récupération d'une pathologie supprimée.

pathologyAutocomplete.setCallback('onDeletePathology', function (identifier) {
  pathologies = pathologies.filter((pathology) => JSON.stringify(pathology.identifier) !== JSON.stringify(identifier));
});

Récupération d'une pathologie ajoutée en favoris.

pathologyAutocomplete.setCallback('onAddFavorite', function (pathology) {
  favorites.push(pathology);
});

Récupération d'une pathologie supprimée des favoris.

pathologyAutocomplete.setCallback('onDeleteFavorite', function (identifier) {
  favorites = favorites.filter((favorite) => JSON.stringify(favorite.identifier) !== JSON.stringify(identifier));
});

Récupération des terminologies lors d'un changement.

// Option 1: Update the status of a specific terminology when it is switched
pathologyAutocomplete.setCallback('onUpdateTerminologies', function (terminology, active) {
  terminologies = terminologies.map((terminologyObject) =>
    terminologyObject.terminology === terminology ? { ...terminologyObject, active } : terminologyObject
  );
});

// Option 2: Update the status of all terminologies with new values
pathologyAutocomplete.setCallback('onUpdateTerminologies', function (terminology, active, terminologies) {
  terminologies = terminologies;
});

Mise à jour du jeton JWT :

pathologyAutocomplete.setCallback('onTokenExpiration', function (err, data) {
  const newToken = fetchNewToken();
  pathologyAutocomplete.setToken(newToken);
});

init(element)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
data Oui - object Données d'initialisation
data.disabled Non false boolean Activer ou désactiver l'input
data.pathologies Non [] PathologyV2[] Pathologies affichées par le widget si le paramètre disableSelectedPathologies n'est pas activé.
data.favorites Non [] PathologyV2[] Pathologies a présenter comme favorites par le widget si le paramètre enableFavorite est activé.
data.terminologies Non [ { terminology: Synapse.PathologyAutocompleteWidgetV2.Terminology.ICD10, active: true, available: true }, { terminology: Synapse.PathologyAutocompleteWidgetV2.Terminology.CISP, active: true, available: true }, { terminology: Synapse.PathologyAutocompleteWidgetV2.Terminology.DRC, active: false, available: true } ] TerminologyOption[] Terminologies utilisées pour rechercher la maladie, par défaut toutes les terminologies sont disponibles et actives.
data.enableFavorite Non false boolean Activer ou désactiver la fonctionnalité de favoris
data.disableSelectedPathologies Non false boolean Activer ou désactiver l'affichage des pathologies sélectionnées

update(data)

Fonction de mise à jour du widget pour changer les paramètres du widget, modification des suggestions proposées, ajout de favoris, ajout de pathologies enregistrées, paramètres d'affichages ...

Parametre Requis Valeur par défaut Type Description
data Oui - object Données d'initialisation
data.disabled Non false boolean Activer ou désactiver l'input
data.pathologies Non [] PathologyV2[] Pathologies affichées par le widget si le paramètre disableSelectedPathologies n'est pas activé.
data.favorites Non [] PathologyV2[] Pathologies a présenter comme favorites par le widget si le paramètre enableFavorite est activé.
data.terminologies Non [{ terminology: Synapse.PathologyAutocompleteWidgetV2.Terminology.ICD10, active: true, available: true }, { terminology: Synapse.PathologyAutocompleteWidgetV2.Terminology.CISP, active: true, available: true }, { terminology: Synapse.PathologyAutocompleteWidgetV2.Terminology.DRC, active: false, available: true }] TerminologyOption[] Terminologies utilisées pour rechercher la maladie, par défaut toutes les terminologies sont disponibles et actives.
data.enableFavorite Non false boolean Activer ou désactiver la fonctionnalité de favoris
data.disableSelectedPathologies Non false boolean Activer ou désactiver l'affichage des pathologies sélectionnées

setCallback("onSelectPathology", callback)

Callback de Récupération des pathologies sélectionnées.

Parametre Requis Type Description
callback Oui function Fonction à appeler prenant en paramètre pathology de type Pathology.

setCallback("onDeletePathology", callback)

Callback de Récupération des pathologies supprimées.

Parametre Requis Type Description
callback Oui function Fonction de rappel à appeler en utilisant le paramètre identifier, type Identifier

setCallback("onAddFavorite", callback)

Callback de Récupération des pathologies ajoutées en favoris.

Parametre Requis Type Description
callback Oui function Fonction de rappel à appeler en utilisant le paramètre pathology, type Pathology

setCallback("onDeleteFavorite", callback)

Callback de Récupération des pathologies supprimées des favoris.

Parametre Requis Type Description
callback Oui function Fonction de rappel à appeler en utilisant le paramètre identifier, type Identifier

setCallback("onUpdateTerminologies", callback)

Callback de Récupération des terminologies lors d'un changement.

Parametre Requis Type Description
callback Oui function Fonction de rappel à appeler en utilisant les paramètres terminology, active, terminologies de type TerminologyOption, string, [TerminologyOption]

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

destroy()

Supprime le widget du DOM.

PrescriptionSummaryWidget

Ce widget n'a pas de fonctionnalité propre, il agrège et synthétise les alertes remontées par les widgets connectés : GroundsWidget, InteractionWidget, StartStoppWidget et PosologyCheckerWidget.Il permet de visualiser les alertes par niveaux de criticité et d'accéder aux widgets concernés.

INFO
La diffusion des alertes se fait au sein des widgets connectés, seuls ces widgets initialisés pourront communiquer avec le PrescriptionSummaryWidget. Tout le long d'une analyse, vous devez maintenir la synchronisation entre les widgets connectés et le PrescriptionSummaryWidget, à l'aide de la méthode update propre à chaque widget.

L'initialisation de PrescriptionSummaryWidget ne requière pas forcément la présence des widgets connectés, en leur absence, totale ou partielle, il ne pourra simplement pas afficher d'alertes. En d'autres termes, il n’affichera que les alertes des widgets effectivement présents à ses côtés.

Initialisation du widget :

const JWT = "insert your token here";
const prescriptionSummaryWidget = new Synapse.PrescriptionSummaryWidget(JWT);
const entities = [/* list of drugs */];
const profileData= /* data returned by patient profile widget */ ;

const data = {
  "entities": entities,
  "profile": profileData.profile,
 };

prescriptionSummaryWidget.init(document.getElementById("prescription-summary-container"), data);

Mise à jour du widget lors de l'ajout de nouveaux médicaments :

const otherEntities = [
  /* another list of drugs */
];

data.entities = otherEntities;
prescriptionSummaryWidget.update(data);

Mise à jour du widget à partir de nouvelles données d'ordonnance ou de profil.

data.profile.pregnant = true;
prescriptionSummaryWidget.update(data);

Ouvrir l'analyse

prescriptionSummaryWidget.setCallback('onOpenAnalysis', function (module) {
  console.log('Open module: ', module);
});

Mise à jour du jeton JWT :

prescriptionSummaryWidget.setCallback('onTokenExpiration', function (err, data) {
  const newToken = fetchNewToken();
  prescriptionSummaryWidget.setToken(newToken);
});

init(element, data)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
data Oui - Object Données d'initialisation
data.entities Oui - Entity[] Liste des médicaments de l'ordonnance à analyser
data.profile Non { grounds: { kidneyFailure: "none", hepaticFailure: "none", cardiacFailure: "none", allergies: [], pathologies: [], doping: true, driving: true, procreation: false }, height: 0, heightUnit: "CM", weight: 0, weightUnit: "KG", creatinine: { value: 0, unit: "µmol/L" }, pregnant: false, nursing: false, sex: "" } Profile Valeur initiale du profil patient
data.hidePotentialRisks Non false boolean Masquer les risques potentiels
data.isMobile Non false boolean Permet au widget de bénéficier d'un affichage favorisant les petits écrans.
data.displayOpenAnalysisButton Non true boolean Permet d'afficher ou non le bouton Ouvrir les Analyses. Valeur par défaut true

update(data)

Mise à jour du widget à partir de nouvelles données d'ordonnance ou de profil.

Parametre Requis Valeur par défaut Type Description
data Oui - Object Données d'initialisation
data.entities Oui - Entity[] Liste des médicaments de l'ordonnance à analyser
data.profile Non { grounds: { kidneyFailure: "none", hepaticFailure: "none", cardiacFailure: "none", allergies: [], pathologies: [], doping: true, driving: true, procreation: false }, height: 0, heightUnit: "CM", weight: 0, weightUnit: "KG", creatinine: { value: 0, unit: "µmol/L" }, pregnant: false, nursing: false, sex: "" } Profile Profil clinique du patient
data.hidePotentialRisks Non false boolean Masquer les risques potentiels
data.isMobile Non false boolean Permet au widget de bénéficier d'un affichage favorisant les petits écrans.
data.displayOpenAnalysisButton Non true boolean Permet d'afficher ou non le bouton Ouvrir les Analyses. Valeur par défaut true

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

setCallback("onOpenAnalysis", callback)

Définit la callback appelée lors de l'ouverture d'une analyse

Parametre Requis Type Description
callback Oui function Définit la callback appelée lors de l'ouverture d'une analyse

setCallback("onTokenExpiration", callback)

Spécification d'une callback à appeler lors de l'expiration du jeton JWT. Cette callback est mutualisée entre tous les widgets.

Parametre Requis Type Description
callback Oui function Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

destroy()

Supprime le widget du DOM.

AdverseEffectWidget

Ce widget extrait l'ensemble des effets indésirables d'une ordonnance par fréquence. Il permet la recherche d'un effet indésirable specifique.

Initialisation du widget à partir de premiers résultats d'autocomplétion :

const JWT = 'insert your token here';
const entities = [
  /* list of drugs */
];

const adverseEffectWidget = new Synapse.AdverseEffectWidget(JWT);

const dataAdverseEffect = { entities: entities }; adverseEffectWidget.init(document.getElementById('adverse-effet-container'), dataAdverseEffect);

Mise à jour du widget lors de l'ajout de nouveaux médicaments :

const otherEntities = [
  /* another list of drugs */
];
dataAdverseEffect.entities = otherEntities;
adverseEffectWidget.update(dataAdverseEffect);

Remontée de l'information de la présence de résultats et du niveau maximal d'alerte

adverseEffectWidget.setCallback('hasResults', function (hasResults) {
  console.log(hasResults);
});

Mise à jour du jeton JWT :

adverseEffectWidget.setCallback('onTokenExpiration', function (err, data) {
  const newToken = fetchNewToken();
  adverseEffectWidget.setToken(newToken);
});

init(element, dataAdverseEffect)

Initialisation du widget dans un élément du DOM.

Parametre Requis Type Description
element Oui Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
dataAdverseEffect Oui Object Données d'initialisation
dataAdverseEffect.entities Oui Entity[] Liste des médicaments de l'ordonnance à analyser

update(dataAdverseEffect)

Mise à jour du widget à partir de nouvelles données d’ordonnance.

Parametre Requis Type Description
dataAdverseEffect Oui Object Données d'initialisation
dataAdverseEffect.entities Oui Entity[] Liste des médicaments de l'ordonnance à analyser

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

setCallback("hasResults", callback)

Permet au widget de remonter l'information de la présence de résultat (retours des requêtes faites par le widget au service Synapse).

Parametre Requis Type Description
callback Oui function Fonction prenant 1 paramètre de type boolean (true|false). Elle sera appelée quand la requête du widget aura aboutie.

setCallback("onTokenExpiration", callback)

Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

Parametre Requis Type Description
callback Oui function Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

destroy()

Supprime le widget du DOM.

GroundsWidget

Ce widget remonte des alertes de vigilance ou de contre-indication sur l'ordonnance liées au profil clinique du patient.

Initialisation du widget :

const JWT = 'insert your token here';
const groundsWidget = new Synapse.GroundsWidget(JWT);
const entities = [
  /* list of drugs /
];
const dataProfile = {}; / data returned by patient profile widget */

const groundsSamAlertsToHide = [ { code: "2022_0472", version: 1 } ]; let groundsFilter = { [Synapse.GroundsWidget.GroundsFilter.DOPING]: { available: true, active: false }, [Synapse.GroundsWidget.GroundsFilter.DRIVING]: { available: true, active: false }, [Synapse.GroundsWidget.GroundsFilter.SAM_ALERT]: { available: true, active: true }, }

const dataGrounds = { entities: entities, profile: dataProfile.profile, filter: groundsFilter samAlertsToHide: groundsSamAlertsToHide };

groundsWidget.init(document.getElementById('grounds-container'), dataGrounds);

Mise à jour du widget lorsque les propriétés changent:

const otherEntities = [
  /* another list of drugs */
];
const otherGroundsSamAlertsToHide = [
    { code: "2022_0472", version: 1 }
    { code: "2022_0471", version: 1 },
];
const otherGroundsFilter =  {
  [Synapse.GroundsWidget.GroundsFilter.DOPING]: { available: true, active: true },
  [Synapse.GroundsWidget.GroundsFilter.DRIVING]: { available: true, active: true },
  [Synapse.GroundsWidget.GroundsFilter.SAM_ALERT]: { available: true, active: true },
}
dataGrounds.entities = otherEntities;
dataGrounds.samAlertsToHide = otherGroundsSamAlertsToHide;
dataGrounds.filter = otherGroundsFilter
groundsWidget.update(dataGrounds);

Mise à jour du widget à partir de nouvelles données d'ordonnance ou de profil.

dataGrounds.profile.pregnant = true;
groundsWidget.update(dataGrounds);

Ajout d'une alerte à la liste lorsque l'utilisateur masque une alerte

groundsWidget.setCallback('onHideSamAlert', (samAlert) => {
  groundsSamAlertsToHide.push(obj);
});

Mise à jour des paramètres de filtre lorsque l'utilisateur les modifie

grounds.setCallback('onUpdateFilter', (updatedFilter) => {
  groundsFilter = updatedFilter;
});

Vidage du tableau lorsque l'utilisateur réinitialise toutes les alertes masquées

grounds.setCallback('onResetHiddenSamAlerts', () => {
  groundsSamAlertsToHide = [];
});

Remontée de l'information de la présence de résultats et du niveau maximal d'alerte

groundsWidget.setCallback('hasResults', function (hasResults, maxLevel) {
  console.log(hasResults);
  console.log(maxLevel);
});

Récupération de l'erreur et de son type.

groundsWidget.setCallback('hasError', function (errorMessage, errorType) {
  console.log(errorMessage);
  console.log(errorType);
});

Mise à jour du jeton JWT :

groundsWidget.setCallback('onTokenExpiration', function (err, data) {
  const newToken = fetchNewToken();
  groundsWidget.setToken(newToken);
});

init(element, dataGrounds)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
dataGrounds Oui - Object Données d'initialisation
dataGrounds.entities Oui - Entity[] Liste des médicaments de l'ordonnance à analyser
dataGrounds.profile Non { grounds: { kidneyFailure: "none", hepaticFailure: "none", cardiacFailure: "none", allergies: [], pathologies: [], doping: true, driving: true, procreation: false }, height: 0, heightUnit: "CM", weight: 0, weightUnit: "KG", creatinine: { value: 0, unit: "µmol/L" }, pregnant: false, nursing: false, sex: "" } Profile Valeur initiale du profil patient
dataGrounds.filter Non { [Synapse.GroundsWidget.GroundsFilter.DOPING]: {available: true, active: false}, [Synapse.GroundsWidget.GroundsFilter.DRIVING]: {available: true, active: false}, [Synapse.GroundsWidget.GroundsFilter.SAM_ALERT]: {available: true, active: true}, } Object Valeur initiale du filtre
dataGrounds.samAlertsToHide Non [] SamAlert[] Valeur initiale des alertes SAM à masquer
dataGrounds.isMobile Non false boolean Permet au widget de bénéficier d'un affichage favorisant les petits écrans.

update(dataGrounds)

Mise à jour du widget à partir de nouvelles données d'ordonnance ou de profil.

Parametre Requis Valeur par défaut Type Description
dataGrounds Oui - Object Données d'initialisation
dataGrounds.entities Oui - Entity[] Liste des médicaments de l'ordonnance à analyser
dataGrounds.profile Non { grounds: { kidneyFailure: "none", hepaticFailure: "none", cardiacFailure: "none", allergies: [], pathologies: [], doping: true, driving: true, procreation: false }, height: 0, heightUnit: "CM", weight: 0, weightUnit: "KG", creatinine: { value: 0, unit: "µmol/L" }, pregnant: false, nursing: false, sex: "" } Profile Valeur mise à jour du profil patient
dataGrounds.filter Non { [Synapse.GroundsWidget.GroundsFilter.DOPING]: {available: true, active: false}, [Synapse.GroundsWidget.GroundsFilter.DRIVING]: {available: true, active: false}, [Synapse.GroundsWidget.GroundsFilter.SAM_ALERT]: {available: true, active: true}, } Object Valeur mise à jour du filtre (si la valeur n'est pas renseignée la valeur locale du composant est utilisée)
dataGrounds.samAlertsToHide Non [] SamAlert[] Valeur mise à jour des alertes SAM à masquer (si la valeur n'est pas renseignée la valeur locale du composant est utilisée)
dataGrounds.isMobile Non false boolean Permet au widget de bénéficier d'un affichage favorisant les petits écrans.

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

setCallback("onHideSamAlert", callback)

Parametre Requis Type Description
callback false function Fonction à appeler lorsque l'utilisateur masque une alerte

setCallback("onUpdateFilter", callback)

Parametre Requis Type Description
callback false function Fonction à appeler lorsque l'utilisateur modifie le filtre

setCallback("onResetHiddenSamAlerts", callback)

Parametre Requis Type Description
callback false function Fonction à appeler lorsque l'utilisateur réinitialise toutes les alertes masquées

setCallback("hasResults", callback)

Permet au widget de remonter l'information de la présence de résultat (retours des requêtes faites par le widget au service Synapse).

Parametre Requis Type Description
callback Oui function Fonction prenant 2 paramètres. Le premier de type boolean (true|false) et le second de type texte (CONTRAINDICATION / PROVEN_RISK / POTENTIAL_RISK / NONE ). Elle sera appelée quand la requête du widget aura aboutie.

setCallback("onResult", callback)

Callback non disponible pour cette locale
Définition d'une callback prenant en entrée les allergies médicamenteuses detectées.

Parametre Requis Type Description
callback true function Fonction appelée suite à une analyse du widget et prenant en paramètre un objet contenant la liste des allergies médicamenteuses detectées.

setCallback("hasError", callback)

Permet au widget de remonter la présence d'une erreur.

Parametre Requis Type Description
callback true function Fonction prenant 2 paramètres de type string: errorMessage et errorType.

setCallback("onTokenExpiration", callback)

Spécification d'une callback à appeler lors de l'expiration du jeton JWT. Cette callback est mutualisée entre tous les widgets.

Parametre Requis Type Description
callback Oui function Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

destroy()

Supprime le widget du DOM.

InteractionWidget

Ce widget analyse les interactions médicamenteuses d'une ordonnance et les restitue sous la forme d'un diagramme de synthèse. Différentes sources sont disponibles : le Thésaurus des interactions médicamenteuses de l'ANSM, le Thésaurus de Liverpool et DDI Predictor.

Initialisation du widget à partir de premiers résultats d'autocomplétion :

const JWT = "insert your token here";
const interactionWidget = new Synapse.InteractionWidget(JWT);
const entities = [/* list of drugs /];
const dataProfile = / data returned by patient profile widget */ ;

const dataInteraction = {"entities": entities, "profile": dataProfile.profile }; interactionWidget.init(document.getElementById("interaction-container"), dataInteraction);

Mise à jour du widget lors de l'ajout de nouveaux médicaments :

const otherEntities = [
  /* another list of drugs */
];
dataInteraction.entities = otherEntities;
interactionWidget.update(dataInteraction);

Remontée de l'information de la présence de résultats et du niveau maximal d'alerte

interactionWidget.setCallback('hasResults', function (hasResults, maxLevel) {
  console.log(hasResults);
  console.log(maxLevel);
});

Récupération de l'erreur et de son type.

interactionWidget.setCallback('hasError', function (errorMessage, errorType) {
  console.log(errorMessage);
  console.log(errorType);
});

Mise à jour du jeton JWT :

interactionWidget.setCallback('onTokenExpiration', function (err, data) {
  const newToken = fetchNewToken();
  interactionWidget.setToken(newToken);
});

init(element, dataInteraction)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
dataInteraction Oui - Object Données d'initialisation
dataInteraction.entities Oui - Entity[] Liste des médicaments de l'ordonnance à analyser
dataInteraction.profile Oui - Profile Profil clinique du patient. Seul le profil hépatique est pris en compte dans l'analyse.
dataInteraction.isMobile Non false boolean Permet au widget de bénéficier d'un affichage favorisant les petits écrans.

update(dataInteraction)

Mise à jour du widget à partir de nouvelles données d’ordonnance.

Parametre Requis Valeur par défaut Type Description
dataInteraction Oui - Object Données d'initialisation
dataInteraction.entities Oui - Entity[] Liste des médicaments de l'ordonnance à analyser
dataInteraction.profile Oui - Profile Profil clinique du patient. Seul le profil hépatique est pris en compte dans l'analyse.
dataInteraction.isMobile Non false boolean Permet au widget de bénéficier d'un affichage favorisant les petits écrans.

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

setCallback("hasResults", callback)

Permet au widget de remonter l'information de la présence de résultat (retours des requêtes faites par le widget au service Synapse).

Parametre Requis Type Description
callback Oui function Fonction prenant 1 paramètre de type boolean (true|false). Elle sera appelée quand la requête du widget aura aboutie.

setCallback("onResult", callback)

Callback non disponible pour cette locale
Définition d'une callback prenant en entrée les interactions détectées.

Parametre Requis Type Description
callback Oui function Fonction appelée suite à une analyse du widget et prenant en paramètre un objet contenant la liste des interactions détectées.

setCallback("hasError", callback)

Permet au widget de remonter la présence d'une erreur.

Parametre Requis Type Description
callback true function Fonction prenant 2 paramètres de type string: errorMessage et errorType.

setCallback("onTokenExpiration", callback)

Spécification d'une callback à appeler lors de l'expiration du jeton JWT. Cette callback est mutualisée entre tous les widgets.

Parametre Requis Type Description
callback Oui function Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

destroy()

Supprime le widget du DOM.

PosologyFormWidget

Ce widget permet la saisie et l'édition d'une posologie.

Initialisation du widget à partir de premiers résultats d'autocomplétion :

const JWT = "insert your token here";
const posologyFormWidget = new Synapse.PosologyFormWidget(JWT);

const entity = /* Entity object of type branded-drug / ; const detailedPosology = / DetailedPosology object */ ;

const dataPosology { entity, detailedPosology, }; posologyFormWidget.init(document.getElementById("posology-form-container"), dataPosology);

Évènement de clic sur le bouton de validation de la posologie :

posologyFormWidget.setCallback('onValidate', function (err, data) {
  // Do something
});

Mise à jour du jeton JWT :

posologyFormWidget.setCallback('onTokenExpiration', function (err, data) {
  const newToken = fetchNewToken();
  posologyFormWidget.setToken(newToken);
});

init(element, dataPosology)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
dataPosology Oui - Object Données d'initialisation
dataPosology.entity Oui - Entity Entité thérapeutique
dataPosology.detailedPosology Oui - DetailedPosology[] Posologie à éditer (deprecated, la posologie sera automatiquement convertie en EntityPrescription)
dataPosology.isChronicEnabled Oui - boolean Spécifie si le champ "Chronique" est affiché.
dataPosology.entityLabelEnabled Non true boolean Spécifie si le label de l'entité thérapeutique est affiché.
dataPosology.indicationEnabled Non true boolean Spécifie si le champ "Indication" est affiché.
dataPosology.startDateEnabled Non true boolean Spécifie si le champ "Date de début" est affiché.
dataPosology.typeEnabled Non true boolean Spécifie si les champs "Prescription / Automédication" sont affichés. Remplacé par “options.enableAutomedication”
dataPosology.multiplePosologiesEnabled Non true boolean Spécifie si les boutons d'ajout et de suppresion de posologie sont affichés.
dataPosology.commentEnabled Non true boolean Spécifie si le champ "Commentaire" est affiché.
dataPosology.posologyAnalysisEnabled Non false boolean Spécifie si l'analyse de posologie résumée est activée. Remplacé par dataPosology.options.enablePosologyChecker
dataPosology.commentLabel Non "Commentaire de prescription" string Spécifie le label du champ "Commentaire".
dataPosology.showAdministrationRoute Non false boolean Spécifie si le champ "Voie d'administration" est affiché.

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

setCallback("onValidate", callback)

Définit la callback appelée lors de l'événement de clic sur le bouton de validation, utilisant les paramètres (err, data)data.posology de type DetailedPosology est la posologie saisie.

Parametre Requis Type Description
callback Oui function Définit la callback appelée lors de l'événement de clic sur le bouton de validation, utilisant les paramètres (err, data)data.posology de type DetailedPosology est la posologie saisie.

setCallback("onViewDrugInfo", callback)

Callback appelé lorsque l'utilisateur clique sur l'étiquette d'un médicament, avec comme paramètres (err, data).

Parametre Requis Type Description
callback Oui function Callback appelé lorsque l'utilisateur clique sur l'étiquette d'un médicament, avec comme paramètres (err, data).

setCallback("onTokenExpiration", callback)

Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

Parametre Requis Type Description
callback Oui function Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

triggerValidation()

Déclenche la validation de la posologie.

destroy()

Supprime le widget du DOM.

NextPosologyFormWidget (Future version de PosologyFormWidget)

Ce widget permet la saisie et l'édition d'une posologie.

Initialisation du widget à partir de premiers résultats d'autocomplétion :

const JWT = "insert your token here";
const posologyFormWidget = new Synapse.NextPosologyFormWidget(JWT);

const entity = /* Entity object of type branded-drug */ ;

const entityPrescription = /* EntityPrescription object */ ;

const options = /* Options object */ ;

const dataPosology = { entity, entityPrescription, options }; posologyFormWidget.init(document.getElementById("posology-form-container"), dataPosology);

Évènement de clic sur le bouton de validation de la posologie :

posologyFormWidget.setCallback('onValidate', function (err, data) {
  if (err) {
    console.log(err.message);
  }
  if (data) {
    if (data.saveAsModel) {
      // Save as model
    }
    // Save data.entityPrescription
  }
});

posologyFormWidget.setCallback('onViewDrugInfo', function (err, data) { // Do something with data.drugId });

posologyFormWidget.setCallback('onCancel', function (err, data) { // Do something on cancel });

Mise à jour du jeton JWT :

posologyFormWidget.setCallback('onTokenExpiration', function (err, data) {
  const newToken = fetchNewToken();
  posologyFormWidget.setToken(newToken);
});

init(element, dataPosology)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
dataPosology Oui - Object Données d'initialisation
dataPosology.entity Oui - Entity Entité thérapeutique
dataPosology.entityPrescription Non - EntityPrescription Prescription à éditer
dataPosology.options Non - Object Options du widget
dataPosology.options.enableAutomedication Non true boolean Spécifie si la case à cocher “Automédication” est affichée
dataPosology.options.enableSaveAsModel Non true boolean Spécifie si le bouton "Enregistrer comme modèle" est affiché
dataPosology.options.enablePosologyChecker Non true boolean Spécifie si l'analyse de posologie résumée est activée
dataPosology.options.enablePrevention Non true boolean Spécifie si la case à cocher "Prévention" est affichée
dataPosology.options.enableAntibioticProtocol Non true boolean Spécifie si la case à cocher "Protocole antibiotique" est affichée
dataPosology.options.enableOffLabel Non true boolean Spécifie si la case à cocher "Hors AMM" est affichée
dataPosology.options.enableTemporaryUseAuthorization Non true boolean Spécifie si la case à cocher "RTU" est affichée
dataPosology.options.enableOccupationalDisease Non true boolean Spécifie si la case à cocher "Maladie professionnelle" est affichée
dataPosology.options.enableWorkAccident Non true boolean Spécifie si la case à cocher "Accident du travail" est affichée
dataPosology.options.enableNotForGenericSubstitution Non true boolean Spécifie si la case à cocher "Non substituable" est affichée
dataPosology.options.disableMonography Non false boolean Spécifie si le bouton “Monographie” est masqué
dataPosology.options.hideValidateAndCancelButtons Non false boolean Spécifie si les boutons “Annuler” et "Valider" sont masqués
dataPosology.options.enableFreeInputMode Non false boolean Spécifie si la saisie en texte libre est disponible ou non (false par défaut)
dataPosology.options.disableRent Non false boolean Spécifie si l'option “Achat“ est masquée pour les Accessoires médicaux
dataPosology.options.disablePurchase Non false boolean Spécifie si l'option “Location“ est masquée pour les Accessoires médicaux
dataPosology.detailedPosology Non - DetailedPosology[] ¹ Posologie à éditer (deprecated, la posologie sera automatiquement convertie en EntityPrescription)
dataPosology.entityLabelEnabled Non - boolean ² Spécifie si le label de l'entité thérapeutique est affiché.
dataPosology.indicationEnabled Non - boolean ² Spécifie si le champ "Indication" est affiché.
dataPosology.startDateEnabled Non - boolean ² Spécifie si le champ "Date de début" est affiché.
dataPosology.typeEnabled Non - boolean ² Spécifie si les champs "Prescription / Automédication" sont affichés. Remplacé par “options.enableAutomedication”
dataPosology.multiplePosologiesEnabled Non - boolean ² Spécifie si les boutons d'ajout et de suppresion de posologie sont affichés.
dataPosology.commentEnabled Non - boolean ² Spécifie si le champ "Commentaire" est affiché.
dataPosology.isChronicEnabled Non - boolean ² Spécifie si le champ "Chronique" est affiché.
dataPosology.posologyAnalysisEnabled Non - boolean ¹ Spécifie si l'analyse de posologie résumée est activée. Remplacé par dataPosology.options.enablePosologyChecker
dataPosology.commentLabel Non - string ² Spécifie le label du champ "Commentaire".
dataPosology.showAdministrationRoute Non - boolean ² Spécifie si le champ "Voie d'administration" est affiché.

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

setCallback("onValidate", callback)

Définit la callback appelée lors de l'événement de clic sur le bouton de validation, utilisant les paramètres (err, data)data.entityPrescription de type EntityPrescription est la posologie saisie, data.saveAsModel de type Bool défini si la posologie saisie doit être enregistrée en tant que modèle et err est une erreur sous la forme d'un objet { type: Synapse.PosologyFormErrorType, message: string } si la validation a échouée.

Parametre Requis Type Description
callback Oui function Définit la callback appelée lors de l'événement de clic sur le bouton de validation, utilisant les paramètres (err, data)data.entityPrescription de type EntityPrescription est la posologie saisie, data.saveAsModel de type Bool défini si la posologie saisie doit être enregistrée en tant que modèle et err est une erreur sous la forme d'un objet { type: Synapse.PosologyFormErrorType, message: string } si la validation a échouée.

setCallback("onViewDrugInfo", callback)

Définit la callback appelée lors de l'événement de clic par l'utilisateur sur le bouton Monographie, utilisant les paramètres (err, data)data.drugId est l'id du médicament.

Parametre Requis Type Description
callback Oui function Définit la callback appelée lors de l'événement de clic par l'utilisateur sur le bouton Monographie, utilisant les paramètres (err, data)data.drugId est l'id du médicament.

setCallback("onCancel", callback)

Définit la callback appelée lors de l'événement de clic sur le bouton d'annulation, sans paramètres à passer

Parametre Requis Type Description
callback Oui function Définit la callback appelée lors de l'événement de clic sur le bouton d'annulation, sans paramètres à passer

setCallback("onTokenExpiration", callback)

Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

Parametre Requis Type Description
callback Oui function Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

triggerValidation()

Déclenche la validation de la posologie.

destroy()

Supprime le widget du DOM.

PosologyCheckerWidget

Ce widget analyse les posologies saisies pour les spécialités d'une ordonnance et les durées de prescription et lève des alertes en cas de dépassement de posologie ou de durée maximum.

Initialisation du widget à partir de premiers résultats d'autocomplétion :

const JWT = "insert your token here";
const posologyCheckerWidget = new Synapse.PosologyCheckerWidget(JWT);

const entity = /* Entity object of type branded-drug */; const posology = { "type": Synapse.DetailedPosologyType.Type.PRESCRIPTION, "indication": "Diabète", "startDate": new Date("2021-03-21"), "posologies": [{ "_id": "1", "duration": 1, "durationUnit": Synapse.StructuredPosologyType.DurationUnit.WEEK, "isChronic": false, "frequency": 1, "frequencyUnit": Synapse.StructuredPosologyType.FrequencyUnit.DAILY, "doseUnit": "mg", "dosage": { "morning": 100, "noon": 0, "evening": 0, "night": 0 } }], "comment": "Ceci est un commentaire" }; entity.posologies.push(posology);

const profile = { "weight": 65 }

const dataPosologyChecker = { "entities": [entity], "profile": profile, "hideRedundancies": false }; posologyCheckerWidget.init(document.getElementById("posology-container"), dataPosologyChecker);

Mise à jour du widget lors d'une modification de la posologie :

const secondPosology = {
  id: 'posology-2',
  frequencyUnit: '/année',
  dosageType: Synapse.PosologyType.Dosage.DEFAULT,
  durationUnit: 'jour',
  dosage: {
    doseUnit: 'mg/prise',
    quantity: 12,
    frequency: 3,
  },
};
dataPosologyChecker.entities[0].posologies.push(secondPosology);
posologyCheckerWidget.update(dataPosologyChecker);

Mise à jour du widget lors de l'ajout de nouveaux médicaments :

new_entity.posologies = [];
dataPosologyChecker.entities.push(new_entity);
posologyCheckerWidget.update(dataPosologyChecker);

Evenement de clic sur un label de médicament

posologyCheckerWidget.setCallback('onViewDrugInfo', function (err, data) {
  var bdpmUrl = 'https://base-donnees-publique.medicaments.gouv.fr/extrait.php';
  window.open('</span><span class="p">${</span><span class="nx">bdpmUrl</span><span class="p">}</span><span class="s2">?specid=</span><span class="p">${</span><span class="nx">data</span><span class="p">.</span><span class="nx">cis</span><span class="p">}</span><span class="s2">');
});

Evenement lors du changement de visibilité des alertes de redondance

posologyCheckerWidget.setCallback('onChangeRedundanciesVisibility', function (visibility) {
  console.log('Redundancies alerts visibility changed to: ', visibility);
});

Remontée de l'information de la présence de résultats et du niveau maximal d'alerte

posologyCheckerWidget.setCallback('hasResults', function (hasResults) {
  // hasResults = true|false
  console.log(hasResults);
});

Récupération de l'erreur et de son type.

posologyCheckerWidget.setCallback('hasError', function (errorMessage, errorType) {
  console.log(errorMessage);
  console.log(errorType);
});

Mise à jour du jeton JWT :

posologyCheckerWidget.setCallback('onTokenExpiration', function (err, data) {
  var newToken = fetchNewToken();
  posologyCheckerWidget.setToken(newToken);
});

init(element, dataPosologyChecker)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
dataPosologyChecker Oui - Object Données d'initialisation
dataPosologyChecker.entities Oui - Entity[] Liste des médicaments de l'ordonnance à analyser (ne fonctionne qu'avec les spécialités médicamenteuses)
dataPosologyChecker.profile Non { grounds: { kidneyFailure: "none", hepaticFailure: "none", cardiacFailure: "none", allergies: [], pathologies: [], doping: true, driving: true, procreation: false }, height: 0, heightUnit: "CM", weight: 0, weightUnit: "KG", creatinine: { value: 0, unit: "µmol/L" }, pregnant: false, nursing: false, sex: "" } Profile Profil clinique du patient. Seul le poids est utilisé.
hideRedundancies Non false boolean Spécifie si les redondances sont cachées

update(dataPosologyChecker)

Mise à jour du widget à partir de nouvelles données d’ordonnance.

Parametre Requis Valeur par défaut Type Description
dataPosologyChecker Oui - Object Données d'initialisation
dataPosologyChecker.entities Oui - Entity[] Liste des médicaments de l'ordonnance à analyser (ne fonctionne qu'avec les spécialités médicamenteuses)
dataPosologyChecker.profile Non { grounds: { kidneyFailure: "none", hepaticFailure: "none", cardiacFailure: "none", allergies: [], pathologies: [], doping: true, driving: true, procreation: false }, height: 0, heightUnit: "CM", weight: 0, weightUnit: "KG", creatinine: { value: 0, unit: "µmol/L" }, pregnant: false, nursing: false, sex: "" } Profile Profil clinique du patient. Seul le poids est utilisé.
hideRedundancies Non false boolean Spécifie si les redondances sont cachées

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

setCallback("hasResults", callback)

Permet au widget de remonter l'information de la présence de résultat (retours des requêtes faites par le widget au service Synapse).

Parametre Requis Type Description
callback Oui function Fonction prenant 2 paramètres. Le premier de type boolean (true|false) et le second de type texte (NONE, DUPLICATE_WARNING, POSOLOGY_WARNING, DUPLICATE_AND_POSOLOGY_WARNING). Elle sera appelée quand la requête du widget aura aboutie.

setCallback("hasError", callback)

Permet au widget de remonter la présence d'une erreur.

Parametre Requis Type Description
callback true function Fonction prenant 2 paramètres de type string: errorMessage et errorType.

setCallback("onViewDrugInfo", callback)

Callback appelé lorsque l'utilisateur clique sur l'étiquette d'un médicament, avec comme paramètres (err, data).

Parametre Requis Type Description
callback Oui function Callback appelé lorsque l'utilisateur clique sur l'étiquette d'un médicament, avec comme paramètres (err, data).

setCallback("onChangeRedundanciesVisibility", callback)

Définit la callback appelée lorsque l'utilisateur change la visibilité des alertes de redondance

Parametre Requis Type Description
callback Oui function Définit la callback appelée lorsque l'utilisateur change la visibilité des alertes de redondance

setCallback("onTokenExpiration", callback)

Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

Parametre Requis Type Description
callback Oui function Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

destroy()

Supprime le widget du DOM.

PatientProfileWidget

Ce widget permet la saisie par l'utilisateur d'un profil patient. Les éléments de profil paramétrables sont sexe, date de naissance,taille, poids, grossesse, allaitement, date des dernières règles,insuffisance hépatique, insuffisance rénale, insuffisance cardiaque,autres pathologies et allergies.

Initialisation du widget :

const JWT = /* ... your token */;
const profileWidget = new Synapse.PatientProfileWidget(JWT);

const initialProfile = { grounds: { cardiacFailure: Synapse.ProfileType.CardiacProfile.MODERATE, kidneyFailure: Synapse.ProfileType.KidneyProfile.LIGHT, }, age: 23, height: 185, heightUnit: 'CM', weight: 75, weightUnit: 'KG', sex: Synapse.ProfileType.Sex.FEMALE, pregnant: true, lmp: new Date('2020-09-12'), };

const data = { profile: initialProfile }; profileWidget.init(document.getElementById('profilePlaceholder'), data);

Récupération du profil lors d'une modification de l'utilisateur :

profileWidget.setCallback('onProfileUpdate', function (err, data) {
  const updatedProfile = data.profile;
  saveProfile(updatedProfile);
  groundsWidget.update({ profile: updatedProfile });
});

init(element, data)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
data Oui - Object Données d'initialisation
data.profile Non { grounds: { kidneyFailure: "none", hepaticFailure: "none", cardiacFailure: "none", allergies: [], pathologies: [], doping: true, driving: true, procreation: false }, height: 0, heightUnit: "CM", weight: 0, weightUnit: "KG", creatinine: { value: 0, unit: "µmol/L" }, pregnant: false, nursing: false, sex: "" } Profile Valeur initiale du profil patient
data.isMobile Non false boolean Permet au widget de bénéficier d'un affichage favorisant les petits écrans.
data.disabledHeadings Non [] ProfileHeadings Liste des blocs à ne pas afficher.

update(data)

Mise à jour du widget à partir de nouvelles données d'ordonnance ou de profil.

Parametre Requis Valeur par défaut Type Description
data Oui Object Données d'initialisation
data.isMobile Non false boolean Permet au widget de bénéficier d'un affichage favorisant les petits écrans.

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

setCallback("onProfileUpdate", callback)

Spécification d'une callback à appeler lors de la modification du profil patient par l'utilisateur.

Parametre Requis Type Description
callback Oui function Fonction à appeler prenant en paramètres (err, data)data.profile de type Profile est le profil mis à jour

setCallback("onTokenExpiration", callback)

Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

Parametre Requis Type Description
callback Oui function Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

destroy()

Supprime le widget du DOM.

StartStoppWidget

Ce widget recherche les critères STOPP (Dalleur et al.) associés à une ordonnance.

Initialisation du widget dans un élément du DOM.

const JWT = 'insert your token here';
const startStoppWidget = new Synapse.StartStoppWidget(JWT);

const entities = [
  /* list of drugs */
];
const dataStartStopp = {
  entities: entities,
  profile: { age: 67 },
};
startStoppWidget.init(document.getElementById('start-stopp-container'), dataStartStopp);

Mise à jour du widget à partir de nouvelles données d’ordonnance.

const otherEntities = [
  /* another list of drugs */
];
dataStartStopp.entities = otherEntities;
dataStartStopp.profile.age = 23;
startStoppWidget.update(dataStartStopp);

Remontée de l'information de la présence de résultats et du niveau maximal d'alerte

startStoppWidget.setCallback('hasResults', function (hasResults, maxLevel) {
  console.log(hasResults);
  console.log(maxLevel);
});

Récupération de l'erreur et de son type.

startStoppWidget.setCallback('hasError', function (errorMessage, errorType) {
  console.log(errorMessage);
  console.log(errorType);
});

Mise à jour du jeton JWT :

startStoppWidget.setCallback('onTokenExpiration', function (err, data) {
  const newToken = fetchNewToken();
  startStoppWidget.setToken(newToken);
});

init(element, dataStartStopp)

Initialisation du widget dans un élément du DOM.

Parametre Requis Type Description
element Oui Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
dataStartStopp Oui Object Données d'initialisation
dataStartStopp.entities Oui Entity[] Liste des médicaments de l'ordonnance à analyser
dataStartStopp.profile Oui Profile Profile clinique du patient. Seul l'âge est pris en compte

update(dataStartStopp)

Mise à jour du widget à partir de nouvelles données d’ordonnance.

Parametre Requis Type Description
dataStartStopp Oui Object Données d'initialisation
dataStartStopp.entities Oui Entity[] Liste des médicaments de l'ordonnance à analyser
dataStartStopp.profile Non Profile Profile clinique du patient. Seul l'âge est pris en compte

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

setCallback("hasResults", callback)

Permet au widget de remonter l'information de la présence de résultat (retours des requêtes faites par le widget au service Synapse).

Parametre Requis Type Description
callback Oui function Fonction prenant 1 paramètre de type boolean (true|false). Elle sera appelée quand la requête du widget aura aboutie.

setCallback("hasError", callback)

Permet au widget de remonter la présence d'une erreur.

Parametre Requis Type Description
callback true function Fonction prenant 2 paramètres de type string: errorMessage et errorType.

setCallback("onTokenExpiration", callback)

Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

Parametre Requis Type Description
callback Oui function Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

destroy()

Supprime le widget du DOM.

PrescriptionWidget

Widget permettant de saisir une ordonnance

Initialisation du widget :


const JWT = "insert your token here";
const prescriptionWidget = new Synapse.PrescriptionWidget(JWT);

/* Options */ const options = { hideValidationButton: true, showSynapseLogo: true, ... };

/* patientAdministrativeInformation */ const patientAdministrativeInformation = { chronicDiseases: [ { code: "ALD.14.01", system: "ameli:cim10-ald", display: "ASTHME", version: "2023-06-29" } ], ... };

const prescriptionData { patientInformations: { ... }, /* Patient profile */ options, patientAdministrativeInformation };

prescriptionWidget.init(document.getElementById("prescription-container"), prescriptionData);

/* Click event on prescription validation button : */ prescriptionWidget.setCallback("onValidate", (data) => { const { prescription } = data;

console.log(prescription); });

/* Posology model saving */ prescriptionWidget.setCallback("onSavePosologyAsModel", (data) => { const { entityId, posologyModel } = data;

savePosologyModel(entityId, posologyModel) /* Save posology for entity with URI equals to entityId */ });

/*Update posology models */ prescriptionWidget.setCallback("onEntityPosologyModelsRequest", (data) => { const { entityIds } = data; const posologyModels = {};

entityIds.forEach((entityId: string) => { posologyModels[entityId] = retrievePosologyModelsFor(entityId) /* Retrieve posology models array for thie entityId (Entity URI) */ });

prescriptionWidget.updateEntityPosologyModels(posologyModels) });

/* Update JWT token */ prescriptionWidget.setCallback("onTokenExpiration", (err, data) => { const newToken = fetchNewToken(); prescriptionWidget.setToken(newToken); });

init(element, prescriptionData)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
prescriptionData Oui - Object Données d'initialisation
prescriptionData.prescription Non {} Prescription Ordonnance
prescriptionData.prescriptionModels Non [] Prescription[] Modèles d’ordonnance
prescriptionData.posologyModels Non {} Record Modèles de posologies associés a l’URI de l’entité à laquelle ils correspondent
prescriptionData.favoriteProducts Non [] Entity[] Produits favoris
prescriptionData.favoriteCompoundedMedications Non [] PrescriptionLine[] Préparations magistrales favorites
prescriptionData.favoriteAdvices Non [] PrescriptionLine[] Conseils favoris
prescriptionData.patientInformations Oui { grounds: { kidneyFailure: "none", hepaticFailure: "none", cardiacFailure: "none", allergies: [], pathologies: [], doping: true, driving: true, procreation: false }, height: 0, heightUnit: "CM", weight: 0, weightUnit: "KG", creatinine: { value: 0, unit: "µmol/L" }, pregnant: false, nursing: false, sex: "" } Profile Profil patient
prescriptionData.patientAdministrativeInformation.chronicDiseases Non false Identifier[] Les Affection longue durée (ALDs) du patient
prescriptionData.options Non - Object Options du widget
prescriptionData.options.hideSearchField Non false Boolean Masquer l’autocomplete
prescriptionData.options.hideFavoritePrescriptionsButtons Non false Boolean Masquer les boutons relatifs aux prescriptions favorites
prescriptionData.options.hideFavoriteCompoundedMedicationsButtons Non false Boolean Masquer les boutons relatifs aux préparations magistrales favorites
prescriptionData.options.hideFavoriteAdvicesButtons Non false Boolean Masquer les boutons relatifs aux conseils favoris
prescriptionData.options.hidePrescriptionDateField Non false Boolean Masquer le champs de date de la prescription
prescriptionData.options.hideCompoundedMedicationButton Non false Boolean Masquer le bouton préparation magistrale
prescriptionData.options.hideAdviceButton Non false Boolean Masquer le bouton conseil
prescriptionData.options.hideCommentButton Non false Boolean Masquer le bouton commentaire
prescriptionData.options.hidePrescriptionDurationFields Non false Boolean Masquer les champs de durée de prescription
prescriptionData.options.hidePrescriptionRenewalFields Non false Boolean Masquer le champ renouvellement de la prescription
prescriptionData.options.hideMoreInfosButton Non false Boolean Masquer le pictogramme permettant d’ajouter plus d’infos (3 points verticaux)
prescriptionData.options.hideValidationButton Non false Boolean Masquer le bouton de validation
prescriptionData.options.showSynapseLogo Non false Boolean Afficher le logo Synapse
prescriptionData.options.showPosologyChecker Non false Boolean Afficher le Posology Checker dans la saisie de posologie intégrée
prescriptionData.options.enableFreePosologyInputMode Non false Boolean Activer le mode de saisie libre de posologie
prescriptionData.options.enableFavoriteProducts Non false Boolean Activer la gestion des produits favoris

update(prescriptionData)

Mise à jour du widget à partir de nouvelles données d’ordonnance.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
prescriptionData Oui - Object Données d'initialisation
prescriptionData.prescription Non {} Prescription Ordonnance
prescriptionData.prescriptionModels Non [] Prescription[] Modèles d’ordonnance
prescriptionData.posologyModels Non {} Record Modèles de posologies associés a l’URI de l’entité à laquelle ils correspondent
prescriptionData.favoriteProducts Non [] Entity[] Produits favoris
prescriptionData.favoriteCompoundedMedications Non [] PrescriptionLine[] Préparations magistrales favorites
prescriptionData.favoriteAdvices Non [] PrescriptionLine[] Conseils favoris
prescriptionData.patientInformations Oui { grounds: { kidneyFailure: "none", hepaticFailure: "none", cardiacFailure: "none", allergies: [], pathologies: [], doping: true, driving: true, procreation: false }, height: 0, heightUnit: "CM", weight: 0, weightUnit: "KG", creatinine: { value: 0, unit: "µmol/L" }, pregnant: false, nursing: false, sex: "" } Profile Profil patient
prescriptionData.patientAdministrativeInformation.chronicDiseases Non false Identifier[] Les Affection longue durée (ALDs) du patient
prescriptionData.options Non - Object Options du widget
prescriptionData.options.hideSearchField Non false Boolean Masquer l’autocomplete
prescriptionData.options.hideFavoritePrescriptionsButtons Non false Boolean Masquer les boutons relatifs aux prescriptions favorites
prescriptionData.options.hideFavoriteCompoundedMedicationsButtons Non false Boolean Masquer les boutons relatifs aux préparations magistrales favorites
prescriptionData.options.hideFavoriteAdvicesButtons Non false Boolean Masquer les boutons relatifs aux conseils favoris
prescriptionData.options.hidePrescriptionDateField Non false Boolean Masquer le champs de date de la prescription
prescriptionData.options.hideCompoundedMedicationButton Non false Boolean Masquer le bouton préparation magistrale
prescriptionData.options.hideAdviceButton Non false Boolean Masquer le bouton conseil
prescriptionData.options.hideCommentButton Non false Boolean Masquer le bouton commentaire
prescriptionData.options.hidePrescriptionDurationFields Non false Boolean Masquer les champs de durée de prescription
prescriptionData.options.hidePrescriptionRenewalFields Non false Boolean Masquer le champ renouvellement de la prescription
prescriptionData.options.hideMoreInfosButton Non false Boolean Masquer le pictogramme permettant d’ajouter plus d’infos (3 points verticaux)
prescriptionData.options.hideValidationButton Non false Boolean Masquer le bouton de validation
prescriptionData.options.showSynapseLogo Non false Boolean Afficher le logo Synapse
prescriptionData.options.enableFreePosologyInputMode Non false Boolean Activer le mode de saisie libre de posologie
prescriptionData.options.enableFavoriteProducts Non false Boolean Activer la gestion des produits favoris

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui String Jeton JWT à utiliser par le widget

triggerValidation()

Déclenche la validation de l’ordonnance de manière programmatique.

addPrescriptionLines(prescriptionLines)

Permets d’ajouter des lignes à l’ordonnance de manière programmatique.

Parametre Requis Type Description
prescriptionLines Oui PrescriptionLine[] Lignes à ajouter à l’ordonnance

updateEntityPosologyModels(posologyModels)

Mise à jour des modèles de posologies

Parametre Requis Type Description
posologyModels Oui Record Modèles de posologies associés a l’URI de l’entité à laquelle ils correspondent

destroy()

Supprime le widget du DOM.

setCallback("onValidate", callback)

Définit la callback appelée lors de l'événement de clic sur le bouton de validation

Parametre Type Description
data Object Données de la callback
data.prescription Prescription Ordonnance

setCallback("onUpdate", callback)

Définit la callback appelée lors d’un événement de modification de l’ordonnance

Parametre Type Description
data Object Données de la callback
data.prescription Prescription Ordonnance

setCallback("onViewDrugInfo", callback)

Définit la callback appelée lors du clic sur le bouton monographie

Parametre Type Description
data Object Données de la callback
data.drugId String Code CIS de l’entité

setCallback("onEntityPosologyModelsRequest", callback)

À l’ajout d’une entité dans l’ordonnance, le widget demande la liste des posologies favorites associées en passant la liste des URI des entités concernées En réponse, l’intégrateur met à jour les posologies favorites via la méthode UpdateEntityPosologyModels

Parametre Type Description
data Object Données de la callback
data.entityIds String[] Tableau des URIs des entités dont on souhaite récupérer les posologies favorites

setCallback("onSavePosologyAsModel", callback)

Définit la callback appelée lors de la sauvegarde d’un modèle de posologie dans la saisie de posologie intégrée

Parametre Type Description
data Object Données de la callback
data.entityId String URI de l’entité à laquelle correspond le modèle de posologie
data.posologyModel EntityPrescription Modèle de posologie

setCallback("onDeletePosologyModel", callback)

Définit la callback appelée lors de la suppression d’un modèle de posologie

Parametre Type Description
data Object Données de la callback
data.posologyModelId String Id du modèle de posologie supprimé

setCallback("onSavePrescriptionAsModel", callback)

Définit la callback appelée lors de la sauvegarde d’un modèle de prescription

Parametre Type Description
data Object Données de la callback
data.prescriptionModel Prescription Modèle de prescription sauvegardé

setCallback("onDeletePrescriptionModel", callback)

Définit la callback appelée lors de la suppression d’un modèle de prescription

Parametre Type Description
data Object Données de la callback
data.prescriptionModelId String Id du modèle de prescription supprimé

setCallback("onAddFavoriteProduct", callback)

Définit la callback appelée lors de la sauvegarde d’un produit favori

Parametre Type Description
data Object Données de la callback
data.product Entity Produit sauvegardé comme favori

setCallback("onDeleteFavoriteProduct", callback)

Définit la callback appelée lors de la suppression d’un produit favori

Parametre Type Description
data Object Données de la callback
data.product Entity Produit favori supprimé

setCallback("onAddFavoriteAdvice", callback)

Définit la callback appelée lors de la sauvegarde d’un conseil favori

Parametre Type Description
data Object Données de la callback
data.advice PrescriptionLine Conseil sauvegardé comme favori

setCallback("onDeleteFavoriteAdvice", callback)

Définit la callback appelée lors de la suppression d’un conseil favori

Parametre Type Description
data Object Données de la callback
data.adviceId String Id du conseil favori supprimé

setCallback("onAddFavoriteCompoundedMedication", callback)

Définit la callback appelée lors de la sauvegarde d’une préparation magistrale favorite

Parametre Type Description
data Object Données de la callback
data.advice PrescriptionLine Préparation magistrale sauvegardée comme favorite

setCallback("onDeleteFavoriteCompoundedMedication", callback)

Définit la callback appelée lors de la suppression d’une préparation magistrale favorite

Parametre Type Description
data Object Données de la callback
data.adviceId String Id de la préparation magistrale favorite supprimée

setCallback("onSelectPrescriptionLine", callback)

Définit la callback appelée lors de la sélection d’une ligne de prescription

Parametre Type Description
data Object Données de la callback
data.selectedLine PrescriptionLine Ligne sélectionnée

setCallback("onTokenExpiration", callback)

Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

Parametre Type Description
callback function Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

MonographWidget

Widget permettant d'afficher la monographie d'un médicament

Initialisation du widget dans un élément du DOM.

  const JWT = "insert your token here";
  const entity = /* Entity object of type branded-drug */;

const dataMonograph = { researchEnabled: false, brandedDrug: entity } const monographWidget = new Synapse.MonographWidget(JWT); monographWidget.init(document.getElementById("monograph-container"), dataMonograph)

Mise à jour du composant monographie

const otherEntity = /* another Entity object of type branded-drug */;
dataMonograph.brandedDrug = otherEntity;
monographWidget.update(dataMonograph);

Mise à jour du jeton JWT :

monographWidget.setCallback('onTokenExpiration', function (err, data) {
  const token = fetchNewToken();
  monographWidget.setToken(token);
});

init(element, dataMonograph)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
dataMonograph Oui - Object Données d'initialisation
dataMonograph.drugId Non¹ - string Identifiant unique de l'entité médicamenteuse en fonction du pays
dataMonograph.brandedDrug Non¹ - Entity ² Entité médicamenteuse de type branded-drug uniquement
dataMonograph.researchEnabled Non false Boolean Spécifie si une barre d'autocomplétion de spécialité médicamenteuse est affiché.

update(dataMonograph)

Mise à jour du composant monographie

Parametre Requis Valeur par défaut Type Description
dataMonograph Oui - Object Données d'initialisation
dataMonograph.drugId Non¹ - string Identifiant unique de l'entité médicamenteuse en fonction du pays
dataMonograph.brandedDrug Non¹ - Entity Entité médicamenteuse de type branded-drug uniquement
dataMonograph.researchEnabled Non false Boolean Spécifie si une barre d'autocomplétion de spécialité médicamenteuse est affiché.

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis (t:type) Description
jwtToken Oui string Jeton JWT à utiliser par le widget

destroy()

Supprime le widget du DOM.

QuickExtractWidget

Widget permettant d'importer des traitements à partir d'une ordonnance

const JWT = "insert your token here";
const quickExtractWidget = new Synapse.QuickExtractWidget(JWT);

const dataQuickExtract = { providers: [ Synapse.QuickExtractWidget.Providers.CAMERA, Synapse.QuickExtractWidget.Providers.FILE_SYSTEM, Synapse.QuickExtractWidget.Providers.FORM, ] withPosologies : false; }

quickExtractWidget.init(document.getElementById("quick-extract"), dataQuickExtract);

init(element, dataQuickExtract)

Initialisation du widget dans un élément du DOM.

Parametre Requis Valeur par défaut Type Description
element Oui - Element Objet spécifiant l’élément du DOM dans lequel sera inséré le widget
dataQuickExtract Non - Object Données d'initialisation
dataQuickExtract.providers Non [Synapse.QuickExtractWidget.Providers.CAMERA, Synapse.QuickExtractWidget.Providers.FILE_SYSTEM, Synapse.QuickExtractWidget.Providers.FORM] QuickExtractProvider[] Liste des méthodes d'import à utiliser
withPosologies Non true boolean Active ou desactive l'affichage et l'utilisation du formulaire de posologies

setToken(jwtToken)

Jeton JWT à utiliser par le widget

Parametre Requis Type Description
jwtToken Oui string Jeton JWT à utiliser par le widget

setCallback("onImportTreatments", callback)

Spécification d'une callback à appeler lors de l'import de la liste des traitements validés.

Parametre Requis Type Description
callback Oui function Définit la callback appelée lors de l'événement de clic par l'utilisateur sur le bouton d'import de la liste des traitements validés, utilisant les paramètres (err, data) où data.treatments est un tableau d'objets contenant une Entity et une DetailedPosology et data.file est le fichier (ordonnance) utilisé pour extraire les entités.

setCallback("onTokenExpiration", callback)

Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

Parametre Requis Type Description
callback Oui function Spécification d'une callback à appeler lors de l'expiration du jeton JWT.

destroy()

Supprime le widget du DOM.

Format de données

AutocompleteApi (enum)

Exemple d'api d'autocomplete

var therapeuticEntityAutocomplete = Synapse.AutocompleteApi.TherapeuticEntityAutocomplete;
var medicalDeviceAutocomplete = Synapse.AutocompleteApi.MedicalDeviceAutocomplete;

Api disponible à fournir au widget AutocompleteWidget

Namespace Synapse.AutocompleteApi

Valeur Requis Description
TherapeuticEntityAutocomplete Oui Api d'autocompletion de Synapse permettant d'avoir des entités de type Entity.
MedicalDeviceAutocomplete Non Api d'autocompletion permettant de récupérer des entités de la base Exhausmed, de type MedicalDevice.

MedicalResourceEntityType (enum)

Exemple de types d'entités

var brandedDrugType = Synapse.MedicalResourceEntityType.BRANDED_DRUGS;
var clinicalDrugType = Synapse.MedicalResourceEntityType.CLINICAL_DRUGS;

Type d'entités pouvant être séléctionné via l'autocomplete MedicalResourceAutocompleteWidget

Namespace Synapse.MedicalResourceEntityType

Valeur Requis Description
BRANDED_DRUGS Oui¹ Spécialités
CLINICAL_DRUGS Oui¹ Médicaments virtuels
MEDICAL_ACCESSORIES Oui¹ Accessoires médicaux

Entity (object)

Exemple de spécialité médicamenteuse :

{
  "brandname": "IBUPROFENE MYLAN CONSEIL",
  "cis": "64594722",
  "ingredients": [
    {
      "dose": "684 mg",
      "label": "ibuprofène (lysinate d')",
      "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/890232a27d7c4398ee1138205f17a87e25dc13fc"
    }
  ],
  "label": "IBUPROFENE MYLAN CONSEIL 400 mg, comprimé pelliculé",
  "moieties": [
    {
      "dose": "0,4 g",
      "label": "ibuprofene",
      "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/a296a3f7964b5aa84e42b85549d60eb3b54cf858"
    }
  ],
  "shortname": "IBUPROFENE",
  "type": "branded-drug",
  "uri": "http://frnorm.graph.synapse-medicine.com#BrandedDrug/64594722",
  "detailedPosology": {
    "type": "PRESCRIPTION",
    "indication": "Diabète",
    "startDate": "2021-10-01T00:00:00.000Z",
    "posologies": [
      {
        "_id": "1",
        "duration": 1,
        "durationUnit": "WEEK",
        "isChronic": false,
        "frequency": 1,
        "frequencyUnit": "DAILY",
        "doseUnit": "mg",
        "dosage": {
          "morning": 100,
          "noon": 0,
          "evening": 0,
          "night": 0
        }
      }
    ],
    "comment": "Ceci est un commentaire"
  },
  "comment": "À renouveler si besoin."
}

Exemple de molécule active :

{
  "label": "paracétamol",
  "type": "pharmaceutical-ingredient",
  "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/7fe0342fcdef507a3066831e939cccb6aee60e46"
}

Exemple d'allergie via un médicament

{
  "label": "paracétamol",
  "uri": "http://frnorm.graph.synapse-medicine.com#PharmaceuticalIngredient/7fe0342fcdef507a3066831e939cccb6aee60e46",
  "type": "pharmaceutical-ingredient",
  "brandNameDrugs": [
    {
      "uri": "http://theriaque.graph.synapse-medicine.com#BrandName/f8d5bb6984663120576108605e06e18c7a925532",
      "type": "brandname-drug",
      "label": "DOLIPRANE"
    }
  ]
}

Entité thérapeutique définie par les champs suivants :

Champ Requis Type Description
label Oui string Nom de l'entité
uri Non string Identifiant Synapse unique de l'entité
type Non EntityType Type d'entité thérapeutique
cis Non string Code CIS
(pour les spécialités uniquement)
shortname Oui string Nom court de spécialité
(pour les spécialités uniquement)
brandname Non string Nom de marque de spécialité
(pour les spécialités uniquement)
ingredients Non Entity[] Liste des substances actives de la spécialité
(pour les spécialités uniquement)
moieties Non Entity[] Liste des fractions thérapeutiques de la spécialité
(pour les spécialités uniquement)
entityPrescription Non EntityPrescription Prescription de l'entité thérapeutique
detailedPosology Non DetailedPosolgy ¹ Posologies du médicament (ancien format)
comment Non string Commentaire
medicabase_id Non string Code Medicabase disponible pour les médicaments virtuels uniquement
brandNameDrugs Non Entity[] Liste de médicaments rattachés à l'allergie sélectionnée (uniquement pour les allergies sélectionnées via une entité therapeutique de type brandname-drug).

Pathology (object) DEPRECATED

Exemple de pathologies retournées par le widget PathologyAutocompleteWidget :

{
  "code": "P940",
  "label": "Myasthénie transitoire néonatale (P940)",
  "labels_theriaque": [],
  "theriaque_link": 0,
  "code_ALD": "",
  "label_ALD": ""
}

Les pathologies sont définies par les champs suivants :

ATTENTION ce format des données est obsolète, veuillez migrer vers le widget PathologyAutocompleteWidgetV2 pour utiliser le type PathologyV2.

Champ Requis Type Description
code Oui string Code identifiant la pathologie
label Oui string Nom de la pathologie
labels_theriaque Oui string[] Terrains Thériaque associés
theriaque_link Oui number Nombre indiquant si la pathologies est associés à des terrains Thériaque. Champ obligatoire, nécessaire pour les analyses du widget terrain
code_ALD Oui string Code d'affection longue durée associé à la pathologie
label_ALD Oui string Label du code d'affection longue durée

PathologyV2 (object)

Exemple de pathologies retournées par le widget PathologyAutocompleteWidgetV2 :

{
  "identifier": {
    "code": "D73",
    "display": "Maladies de la rate",
    "system": "cim-10"
  }
}

Les pathologies sont définies par les champs suivants :

Champ Requis Type Description
identifier Oui Identifier Objet identifiant de la pathologie

Identifier (object)

Format d'objet identifiant de la pathologie

Champ Requis Type Description
code Oui string Code identifiant la pathologie dans la terminologie correspondante
display Oui string Nom de la pathologie
system Oui string Système correspondant à la terminologie de la pathologie
version Non string Version de la terminologie de la pathologie

Terminology (enum)

Terminologies a utiliser dans l'objet TerminologyOption, paramètre du widget PathologyAutocompleteWidgetV2 :

const pathologyAutocompleteTerminologies = {
  CIM10: Synapse.PathologyAutocompleteWidgetV2.Terminology.ICD10,
  CISP: Synapse.PathologyAutocompleteWidgetV2.Terminology.CISP,
  DRC: Synapse.PathologyAutocompleteWidgetV2.Terminology.DRC,
};

Terminology est une enum disponible depuis la classe Synapse.PathologyAutocompleteWidgetV2.

Valeur Description
ICD10 Classification internationale des maladies 10eme révision (CIM-10)
CISP Classification internationale des soins primaires
DRC Dictionnaire des résultats de consultation

TerminologyOption (object)

Exemple d'option de terminologie (à passer en paramètre du widget PathologyAutocompleteWidgetV2) :

// Using const define in Terminology section
const terminologiesOptions = [
  { terminology: pathologyAutocompleteTerminologies.ICD10, active: true, available: true },
  { terminology: pathologyAutocompleteTerminologies.CISP, active: true, available: true },
  { terminology: pathologyAutocompleteTerminologies.DRC, active: true, available: true },
];

// Using static enum in PathologyAutocompleteWidgetV2 class
const terminologiesOptions = [
  { terminology: Synapse.PathologyAutocompleteWidgetV2.Terminology.ICD10, active: true, available: true },
  { terminology: Synapse.PathologyAutocompleteWidgetV2.Terminology.CISP, active: true, available: true },
  { terminology: Synapse.PathologyAutocompleteWidgetV2.Terminology.DRC, active: false, available: true },
];

Objet de type TerminologyOption :

Champ Requis Type Description
terminology Oui Terminology Terminologie à utiliser pour la recherche de pathologies
active Oui boolean Indique si la terminologie est active ou non pour la recherche de pathologies
available Oui boolean Indique si la terminologie est disponible ou non dans les options de recherche

MedicalDevice (object)

Exemple d'entité de la base Exhausmed

{
  "exhauscode": "01/00015/335060",
  "reference": "335060",
  "name": "PANS. HYDROFB. FIBER 15X15 CM",
  "brand": "BIATAIN",
  "laboratory": "COLOPLAST",
  "productLink": "http://espace.exhausmed.fr/Search/Details/2017604?securekey=InDH0eHAmZzE3sHFhXuIpQ==&light=1",
  "normativeLabels": ["PANSEMENT HYDROFIBRE PLAQUE"]
}

Les entités de la base Exhausmed sont définies par les champs suivants :

Champ Requis Type Description
exhauscode Oui string Id de l'entité dans la base Exhausmed
reference Non Référence commerciale du dispositif médical
name Non Nom de l'entité
brand Non Marque de l'entité
laboratory Non Laboratoire ayant fabriqué le dispositif médical
productLink Non Lien vers la page produit exhausmed
normativeLabels Non Labels normatifs exhausmed du dispositif médical

MedicalAccessory (object)

Exemple d'entité de la base Medipim

{
  "acl13": "3401543911384",
  "cip_or_acl7": "4391138",
  "is_reimbursed": false,
  "lppr_code": "",
  "medipim_id": "MAE6A5BB28",
  "type": "medical-accessory",
  "label": "2faces Nuit Blanche Comprime 45"
}

Les entités de la base Medipim sont définies par les champs suivants :

Champ Requis Type Description
acl13 Non string Code à 13 chiffres des accessoires médicaux
cip_or_acl7 Non string Code identifiant des accessoires médicaux
is_reimbursed Non boolean Boolean indiquant le remboursement des accessoires médicaux
lppr_code Non string Codification du remboursement des accessoires médicaux
medipim_id Non string Code identifiant des accessoires médicaux
label Non string Label de l'entité

EntityType (string)

Type d'entité thérapeutique

Valeur Requis Description
'branded-drug' Oui¹ Spécialité médicamenteuse
ex: DOLIPRANE 500mg, comprimé
'pharmaceutical-ingredient' Oui¹ Molécule active (DCI)
ex: paracetamol
'therapeutic-class' Oui¹ Classe thérapeutique
ex: hyperkaliémiants
'clinical-drug' Oui¹ Médicament virtuel
ex: ibuprofène 400mg comprimé
'medical-accessory' Oui¹ Accessoire Médical (dispositif médical ou parapharmacie) Uniquement disponible pour la France
ex: 2faces Nuit Blanche Comprime 45

Locale (string)

Identifiant de langue et pays parmi :

Valeur Requis Description
'de-DE' Oui¹ allemand (Allemagne)
'en-GB' Oui¹ anglais (Grande-Bretagne)
'en-US' Oui¹ americain (Etats unis d'Amérique)
'es-ES' Oui¹ espagnol (Espagne)
'fr-FR' Oui¹ français (France)
'it-IT' Oui¹ italien (Italie)

DetailedPosology (object)

Exemple de posologie détaillée :

{
  "type": Synapse.DetailedPosologyType.Type.PRESCRIPTION,
  "indication": "Diabète",
  "startDate": new Date("2021-03-21"),
  "posologies": [{
    "_id": "1",
    "duration": 1,
    "durationUnit": Synapse.StructuredPosologyType.DurationUnit.WEEK,
    "isChronic": false,
    "frequency": 1,
    "frequencyUnit": Synapse.StructuredPosologyType.FrequencyUnit.DAILY,
    "doseUnit": "mg",
    "dosage": {
      "morning": 100,
      "noon": 0,
      "evening": 0,
      "night": 0
    }
  }],
  "comment": "Ceci est un commentaire"
}

Posologie détaillée :

Champ Requis Type Description
type Oui DetailedPosologyType Type de prise
indication Non string Indication de prise
startDate Non Date Date de debut de prise
posologies Oui StructuredPosology[] Posologies structurées
comment Non string Commentaire de prescription

DetailedPosologyType (enum)

Exemples de types de posologie

var prescriptionType = Synapse.DetailedPosologyType.Type.PRESCRIPTION;
var selfMedicationType = Synapse.DetailedPosologyType.Type.SELF_MEDICATION;

Type de posologie

Namespace Synapse. DetailedPosologyType.Type

Valeur Requis Description
PRESCRIPTION Oui¹ Prescription
SELF_MEDICATION Oui¹ Automédication

StructuredPosology (object)

Exemple de posologie structurée :

{
  "_id": "1",
  "duration": 1,
  "durationUnit": Synapse.StructuredPosologyType.DurationUnit.WEEK,
  "isChronic": false,
  "frequency": 1,
  "frequencyUnit": Synapse.StructuredPosologyType.FrequencyUnit.DAILY,
  "doseUnit": "mg",
  "dosage": {
    "morning": "100",
    "noon": "0",
    "evening": "0",
    "night": "0"
  }
}

Posologie structurée :

Champ Requis Type Description
_id Oui string Identifiant unique de posologie
duration Non number Durée de prise
durationUnit Non StructuredPosologyDurationUnit Unité de durée de prise
isChronic Non bool Vrai si la prise est chronique
frequency Oui number Fréquence de prise
frequencyUnit Oui StructuredPosologyFrequencyUnit Unité de fréquence de prise
doseUnit Oui string Unité de dose
dosage Oui StructuredPosologyDefaultDosage, StructuredPosologyDailyDosage or StructuredPosologyWeeklyDosage Dosage de la posologie

StructuredPosologyDurationUnit (enum)

Exemples de types de dose

var dayDurationUnit = Synapse.StructuredPosologyType.DurationUnit.DAY;
var hourDurationUnit = Synapse.StructuredPosologyType.DurationUnit.HOUR;
var weekDurationUnit = Synapse.StructuredPosologyType.DurationUnit.WEEK;
var monthDurationUnit = Synapse.StructuredPosologyType.DurationUnit.MONTH;
var yearDurationUnit = Synapse.StructuredPosologyType.DurationUnit.YEAR;

Type de durée

Namespace Synapse.StructuredPosologyType.DurationUnit

Valeur Requis Description
DAY Oui¹ Jour(s)
HOUR Oui¹ Heure(s)
WEEK Oui¹ Semaine(s)
MONTH Oui¹ Mois
YEAR Oui¹ An(s)

StructuredPosologyFrequencyUnit (enum)

Exemples de types de fréquence

var uponRequestFrequencyUnit = Synapse.StructuredPosologyType.FrequencyUnit.UPON_REQUEST;
var allDaysFrequencyUnit = Synapse.StructuredPosologyType.FrequencyUnit.ALL_DAYS;
var monthlyFrequencyUnit = Synapse.StructuredPosologyType.FrequencyUnit.MONTHLY;
var weeklyFrequencyUnit = Synapse.StructuredPosologyType.FrequencyUnit.WEEKLY;
var dailyFrequencyUnit = Synapse.StructuredPosologyType.FrequencyUnit.DAILY;
var hourlyFrequencyUnit = Synapse.StructuredPosologyType.FrequencyUnit.HOURLY;
var minutlyFrequencyUnit = Synapse.StructuredPosologyType.FrequencyUnit.MINUTLY;

Type de fréquence

Namespace Synapse.StructuredPosologyType.FrequencyUnit

Valeur Requis Description
UPON_REQUEST Oui¹ Si besoin
ALL_DAYS Oui¹ Tous les jours
MONTHLY Oui¹ Tous les (x) mois
WEEKLY Oui¹ Toutes les (x) semaines
DAILY Oui¹ Tous les (x) jours (autre que tous les jours)
HOURLY Oui¹ Toutes les (x) heures
MINUTLY Oui¹ Toutes les (x) minutes

StructuredPosologyDefaultDosage (object)

Exemple de dosage par défaut

{
  "dose": "2 comprimés",
}

Dosage par défaut

Champ Requis Type Description
dose Oui string Dose

StructuredPosologyDailyDosage (object)

Exemple de dosage journalier

{
  "morning": "3",
  "noon": "",
  "evening": "2",
  "night": ""
}

Dosage journalier

Champ Requis Type Description
morning Non string Dose prise le matin
noon Non string Dose prise à midi
evening Non string Dose prise le soir
night Non string Dose prise au couché

StructuredPosologyWeeklyDosage (object)

Exemple de dosage hebdomadaire

{
  "monday": "1",
  "tuesday": "",
  "wednesday": "1",
  "thursday": "",
  "friday": "1",
  "saturday": "",
  "sunday": ""
}

Dosage hebdomadaire

Champ Requis Type Description
monday Non string Dose prise le lundi
tuesday Non string Dose prise le mardi
wednesday Non string Dose prise le mercredi
thursday Non string Dose prise le jeudi
friday Non string Dose prise le vendredi
saturday Non string Dose prise le samedi
sunday Non string Dose prise le dimanche

PosologyFormErrorType (enum)

Exemples de Type d’erreur de saisie

var incompleteInput = Synapse.PosologyFormErrorType.INCOMPLETE_INPUT;

Type d’erreur de saisie Namespace Synapse.PosologyFormErrorType.INCOMPLETE_INPUT

Valeur Description
INCOMPLETE_INPUT Saisie incomplete

EntityPrescription (object)

Exemple de la prescription d’une entité

{
  "id": "0000000",
  "version": "3",
  "posologies": Posology[],
  "type": EntityPrescriptionTypes,
  "comment": "here a comment",
  "uponRequest": true,
  "uponRequestDetails": "here uponRequest details",
  "additionalInfos": AdditionalEntityPrescriptionInfo,
  "transcription": "here a transcription",
  "packaging": Packaging,
  "unstructuredPosology": UnstructuredPosology,
}

Prescription à éditer

Champ Requis Type Description
id Oui string Identifiant unique (auto généré)
version Oui string Version du format de prescription
posologies Oui Posology Posologies
type Oui EntityPrescriptionType Type de prescription (prescription ou automédication)
indication Non string Indication (deprecated)
comment Non string Commentaire
uponRequest Non boolean Spécifie si la prise se fait “si besoin”
uponRequestDetails Non string Détail de la prise “si besoin”
additionalInfos Non AdditionalEntityPrescriptionInfo Informations complémentaires
transcription Non string Retranscription de la posologie sous forme de phrase
packaging Non Packaging Conditionnement de l'entité de la prescription
unstructuredPosology Non UnstructuredPosology Posologie non structurée

Posology (object)

Exemple de Posologie

{
  "id": "00000",
  "version": "here the version",
  "posologyInstructions": PosologyInstruction[],
  "duration": 23,
  "durationUnit": DurationUnit
}

Posologie

Champ Requis Type Description
id Oui string Identifiant unique (auto généré)
version Oui string Version du format de posologie
posologyInstructions Oui PosologyInstruction Instructions de posologie
duration Non number Durée
durationUnit Non DurationUnit Unité de durée

PosologyInstructions (object)

Exemple d’instructions de posologie

{
  "id": "0000",
  "dose": 23,
  "doseUnit": "here dose unit",
  "frequency": Frequency,
  "additionalFrequency": Frequency
}

Instructions de posologie

Champ Requis Type Description
id Oui string Identifiant unique (auto généré)
dose Oui number Dose
doseUnit Oui string Unité de dose
frequency Oui Frequency Fréquence
additionalFrequency Non Frequency Fréquence complémentaire

DurationUnit (enum)

Exemples de Type d’unité de durée

var dayDurationUnit = Synapse.Posology.DurationUnit.DAY;
var hourDurationUnit = Synapse.Posology.DurationUnit.HOUR;
var weekDurationUnit = Synapse.Posology.DurationUnit.WEEK;
var monthDurationUnit = Synapse.Posology.DurationUnit.MONTH;
var yearDurationUnit = Synapse.Posology.DurationUnit.YEAR;

Type d’unité de durée

Namespace Synapse.Posology.DurationUnit

Valeur Description
DAY Jour(s)
WEEK Semaine(s)
MONTH Mois
YEAR An(s)
HOUR Heure(s)
MINUTE Minute(s)

Frequency (object)

Exemple de fréquence

{
  "type": FrequencyType.DAYMOMENT
  "details": { morning: true, noon: false, evening: false, night: true}
}

Fréquence

Champ Type Type Description
type Oui FrequencyType Type de fréquence
details Oui DayMomentFrequencyDetails || WeekMomentFrequencyDetails || HourFrequencyDetails || CustomFrequencyDetails Details de la fréquence, dépendant du type de fréquence

FrequencyType (enum)

Exemples de Type de fréquence

var prescriptionType = Synapse.FrequencyType.DAILY;

Type de fréquence

Namespace Synapse.FrequencyType

Valeur Description
DAILY Par jour
DAYMOMENT Par moment de la journée
WEEKLY Par semaine
WEEKMOMENT Par jour de la semaine
HOUR Par heure
CUSTOM Autre

DayMomentFrequencyDetails (object)

Exemple de détails d’une fréquence par moment de la journée

{
  "morning": true,
  "noon": false,
  "evening": true,
  "night": true
}

Détails d’une fréquence par moment de la journée

Valeur Requis Type Description
morning Non boolean Matin
noon Non boolean Midi
evening Non boolean Soir
night Non boolean Coucher

WeekMomentFrequencyDetails (object)

Exemple de détails d’une fréquence par jour de la semaine

{
  "monday": true,
  "tuesday": false,
  "wednesday": true,
  "thursday": true,
  "friday": true,
  "saturday": false,
  "sunday": false
}

Détails d’une fréquence par jour de la semaine

Valeur Requis Type Description
monday Non boolean Lundi
tuesday Non boolean Mardi
wednesday Non boolean Mercredi
thursday Non boolean Jeudi
friday Non boolean Vendredi
saturday Non boolean Samedi
sunday Non boolean Dimanche

HourFrequencyDetails (object)

Exemple de détails d’une fréquence par heure

{
  "hours:": [2, 4, 6]
}

Détails d’une fréquence par heure

Valeur Requis Type Description
hours Oui number[] Liste des heures

CustomFrequencyDetails (object)

Exemple d'une fréquence custom

{
  "occurences:": 2,
  "unit:": DurationUnit,
  "base:": 3,
}

Détails d’une fréquence custom

Valeur Requis Type Description
occurences Non number Ocurrences
unit Oui DurationUnit Unité
base Non number Base

EntityPrescriptionType (enum)

Exemple de type de prescription

var prescriptionType = Synapse.EntityPrescriptionType.PRESCRIPTION;
var selfMedicationType = Synapse.EntityPrescriptionType.SELF_MEDICATION;

Type de prescription

Namespace Synapse.EntityPrescriptionType

Valeur Description
PRESCRIPTION Prescription
SELF_MEDICATION Type de medication

AdditionalEntityPrescriptionInfo (object)

Exemple d'informations additionnelles sur la prescription

{
  "quantity": true,
  "quantityDetails": QuantityDetails,
  "toRenew": false,
  "renewalDetails": RenewalDetails,
  "ald": true,
  "longTerm": false,
  "administrationRoute": "Here an administration route",
  "meal": Meal,
  "reason": "Here a reason",
  "additionalInfosOptions": AdditionalInfosOptions
}

Information additionnelles sur la prescription

Champ Requis Type Description
quantity Non boolean Spécifie si le conditionnement est spécifié
quantityDetails Non QuantityDetails Détail du conditionnement
toRenew Non boolean Spécifie si la prescription est “à renouveler”
renewalDetails Non RenewalDetails Détails du renouvellement
ald Non boolean Spécifie si la prescription concerne une ALD (Affection Longue Durée)
longTerm Non boolean Spécifie si la prescription est au long cours
administrationRoute Non string Voie d’administration
meal Non Meal Spécifie la prise par rapport au repas
reason Non string Motif de la prescription
additionalInfosOptions Non AdditionalInfosOptions Informations complémentaires

QuantityDetails (object)

Exemple de détail d’une quantité

{
  "value": 2223,
  "unit": "Here a unit"
}

Détail d’une quantité

Champ Requis Type Description
value Non number Quantité
unit Non string Type de conditionnement

RenewalDetails (object)

Exemple de détail d’un renouvellement

{
  "renewalTimes": 2223
}

Détails du renouvellement

Champ Requis Type Description
renewalTimes Non number Nombre de renouvellements

Meal (enum)

Exemple de valeur de prise lors des repas

var AEPrescriptionInfoMealNone = Synapse.AdditionalEntityPrescriptionInfo.Meal.NONE;
var AEPrescriptionInfoMealBefore = Synapse.AdditionalEntityPrescriptionInfo.Meal.BEFORE;
var AEPrescriptionInfoMealDuring = Synapse.AdditionalEntityPrescriptionInfo.Meal.DURING;
var AEPrescriptionInfoMealAfter = Synapse.AdditionalEntityPrescriptionInfo.Meal.AFTER;

Valeur de prise lors des repas

Namespace Synapse.AdditionalEntityPrescriptionInfo.Meal

Valeur Description
NONE Non précise
BEFORE Avant le repas
DURING Pendant le repas
AFTER Après le repas

AdditionalInfosOptions (object)

Exemple d’informations complémentaires

{
  "startDate": new Date("2021-03-21"),
  "endDate": new Date("2021-03-21"),
  "prevention": false,
  "offLabel": false,
  "occupationalDisease": false,
  "antibioticProtocol": false,
  "temporaryUseAuthorization": false,
  "workAccident": false,
  "notForGenericSubstitution": false,
  "notForGenericSubstitutionReason": ""
}

Informations complémentaires

Champ Requis Type Description
startDate Non Date Date de début de prise
endDate Non Date Date de fin de prise
prevention Non boolean Spécifie si la prescription est en lien avec la prévention
offLabel Non boolean Spécifie si la prescription est hors AMM (Autorisation de Mise sur le Marché)
occupationalDisease Non boolean Spécifie si la prescription est en lien avec une maladie professionnelle
antibioticProtocol Non boolean Spécifie si la prescription est en lien avec un protocole antibiotique
temporaryUseAuthorization Non boolean Spécifie si la prescription est en lien avec une recommandation temporaire d’utilisation
workAccident Non boolean Spécifie si la prescription est en lien avec un accident du travail
notForGenericSubstitution Non boolean Spécifie si la prescription est non substituable
notForGenericSubstitutionReason Oui si notForGenericSubstitution is True string Raison pour laquelle la prescription est non substituable

Packaging (object)

Exemple de Conditionnement

{
  "label": "DOLIPRANE 500 mg, gélule, plaquette(s) thermoformée(s) PVC aluminium de 16 gélule(s)",
  "uri": "http://bdpm.graph.synapse-medicine.com#PackagedBrandedDrug/3400934507786",
  "conditioning": "plaquette(s) thermoformée(s) PVC aluminium de 16 gélule(s)",
  "is_exceptional_drug": false,
  "package_nb_units": "16",
  "cip13": "3400934507786",
  "reimbursement_rate": "0.65"
}

Conditionnement de l'entité de la prescription

Champ Requis Type Description
uri Oui number Uri d'un conditionnement
conditioning Oui string Nom d'un conditionnement
label Non string Label d'un conditionnement
cip13 Oui string Code cip (13) d'un conditionnement
is_exceptional_drug Non boolean Conditionnement concernant une entité d'exception
package_nb_units Non string Nombre d'unités de ce conditionnement
reimbursement_rate Non string Taux de remboursement de ce conditionnement

UnstructuredPosology (object)

Exemple de Posologie non structurée

{
  "duration": 23,
  "durationUnit": DurationUnit,
  "posologyText": "posology Text",
}

Posologie

Champ Requis Type Description
duration Non number Durée
durationUnit Non DurationUnit Unité de durée
posologyText Oui string texte de la posologie non structurée

PosologySummary (object)

Exemple de synthèse de posologie :

{
  "posologyId": "posology-1",
  "structuredPosology":
  {
    "id": "posology-1",
    "frequencyUnit": "/jour",
    "dosageType": Synapse.PosologyType.Dosage.DAILY,
    "durationUnit": "jour",
    "dosage": {
        "doseUnit": "mg/prise",
        "quantities": {
          "morning": 3000,
          "noon": 1000,
          "evening": 2000,
          "night": 10
        },
        "uponRequest": true
    }
  },
  "summary": "6010mg/prise",
  "hasWarnings": false,
}

Synthèse de posologie :

Champ Requis Type Description
posologyId Oui string Identifiant unique de posologie
structuredPosology Oui StructuredPosology Détail de la posologie structurée
summary Oui string Résumé de la posologie
hasWarnings Oui boolean Spécifie si la posologie a généré un avertissement.

PosologyDosageType (enum)

Exemples de types de dose

var defaultDosageType = Synapse.PosologyType.Dosage.DEFAULT;
var dailyDosageType = Synapse.PosologyType.Dosage.DAILY;
var weeklyDosageType = Synapse.PosologyType.Dosage.WEEKLY;

Profile (object)

Exemple de profil clinique patient :

var profile = {
  grounds: {
    kidneyFailure: Synapse.ProfileType.KidneyProfile.LIGHT,
    hepaticFailure: Synapse.ProfileType.HepaticProfile.MODERATE,
    cardiacFailure: Synapse.ProfileType.CardiacProfile.HEAVY,
    allergies: [],
    comorbidities: [],
  },
  age: 23,
  height: 185,
  heightUnit: 'CM',
  weight: 75,
  weightUnit: 'KG',
  creatinine: {
    value: 83,
    unit: Synapse.ProfileType.CreatinineUnit.UMOL_L,
  },
  medicalHistory: [''],
  sex: Synapse.ProfileType.Sex.FEMALE,
  pregnant: true,
  pregnancyStartDate: new Date('2021-09-12'), // must be within the last nine months
  nursing: false,
  birthDate: new Date('2022-09-12'),
  lmp: new Date('2022-01-11'),
};

Profil clinique du patient

Champ Requis Type Description
grounds Non Object Terrains cliniques du patient
grounds.kidneyFailure Non kidneyProfileType Profil rénal du patient
grounds.hepaticFailure Non HepaticProfileType Profil hépatique du patient
grounds.cardiacFailure Non CardiacProfileType Profil cardiaque du patient
grounds.allergies Non Entity[] Liste des allergies médicamenteuses du patient. Les éléments de la liste (de type Entity) sont fournis via l'autocomplete d'allergie dans la saisie du profil patient.
grounds.comorbidities Non Pathology[] ¹ Deprecated, ce champ a été remplacé par le champ grounds.pathologies.
grounds.pathologies Non PathologyV2[] Liste des pathologies du patient. Les élements de la liste sont fournis via l'autocomplete de pathologies dans la saisie du profil patient.
age Non float Age du patient en années. Il est possible de transmettre des valeurs non entières.
height Non number Taille du patient (en centimètres)
heightUnit Non string Unité de mesure de la taille
weight Non number Poids du patient (en kilogrammes)
weightUnit Non string Unité de mesure du poids
creatinine Non Object Créatinémie du patient (si insuffisance rénale non renseignée)
creatinine.value Non number Valeur de la créatinémie
creatinine.unit Non CreatinineUnit Unité utilisée pour la créatinémie
medicalHistory Non string[] Antécédents médicaux du patient. Les éléments de la liste sont du texte libre.
sex Oui PatientSex Sexe du patient
pregnant Non boolean Spécifie si la patiente est enceinte
pregnancyStartDate Non Date Date des dernières règles de la patiente
nursing Non boolean Spécifie si la patiente allaite
birthDate Non Date Date de naissance
lmp Non Date Dernier jour des règles

KidneyProfileType (enum)

Exemple de profils d'insuffisance rénale :

var renalNone = Synapse.ProfileType.KidneyProfile.NONE;
var renalTerminal = Synapse.ProfileType.KidneyProfile.TERMINAL;

Type de profil d'insuffisance rénale

Namespace Synapse.ProfileType.KidneyProfile

Valeur Requis Description
NONE Oui¹ Profil inconnu ou pas de problème rénal
LIGHT Oui¹ Insuffisance rénale légère
MODERATE Oui¹ Insuffisance rénale modérée
HEAVY Oui¹ Insuffisance rénale importante
TERMINAL Oui¹ Insuffisance rénale terminale

HepaticProfileType (enum)

Exemple de profils hépatiques :

var hepaticLight = Synapse.ProfileType.HepaticProfile.LIGHT;
var hepaticHeavy = Synapse.ProfileType.HepaticProfile.HEAVY;

Type de profil hépatique

Namespace Synapse.ProfileType.HepaticProfile

Valeur Requis Description
NONE Oui¹ Profil inconnu ou pas de problème hépatique
LIGHT Oui¹ Insuffisance hépatique légère
MODERATE Oui¹ Insuffisance hépatique modérée
HEAVY Oui¹ Insuffisance hépatique importante

CardiacProfileType (enum)

Exemple de profils cardiaques :

var cardiacLight = Synapse.ProfileType.CardiacProfile.LIGHT;
var cardiacHeavy = Synapse.ProfileType.CardiacProfile.HEAVY;

Type de profil cardiaque

Namespace Synapse.ProfileType.CardiacProfile

Valeur Requis Description
NONE Oui¹ Profil inconnu ou pas de problème cardiaque
LIGHT Oui¹ Insuffisance cardiaque légère
MODERATE Oui¹ Insuffisance cardiaque modérée
HEAVY Oui¹ Insuffisance cardiaque importante

CreatinineUnit (enum)

Exemple d'unité de créatinémie :

var creatinineUnit = Synapse.ProfileType.CreatinineUnit.UMOL_L;
var creatinineUnit = Synapse.ProfileType.CreatinineUnit.MG_L;

Unité de la valeur de créatinémie renseignée

Namespace Synapse.ProfileType.CreatinineUnit

Valeur Requis Description
UMOL_L Oui¹ Micromole par litre
MG_L Oui¹ Milligramme par litre
MG_DL Oui¹ Milligramme par décilitre

PatientSex (enum)

Exemple de sexe du patient

var patientSex = Synapse.ProfileType.Sex.FEMALE;

Sexe du patient

Namespace Synapse.ProfileType.Sex

Valeur Requis Description
FEMALE Oui¹ Femme
MALE Oui¹ Homme

ProfileHeadings (enum)

Exemple de blocs profile à ne pas afficher

var headingKidneyDamage = Synapse.ProfileType.HeadingsTheriaque.KIDNEY_DAMAGE;

Liste des blocs à ne pas afficher.

Namespace Synapse.Synapse.ProfileType.HeadingsTheriaque

Valeur Requis Description
AGE_SEX Non Bloc sexe, date de naissance, poids et taille
PREGNANCY_NURSING Non Bloc situation : grossesse et allaitement
KIDNEY_INSUFFICIENCY Non Bloc insuffisance rénale
KIDNEY_INSUFFICIENCY_CREATINEMIA Non Input de la créatinine
HEPATIC_INSUFFICIENCY Non Bloc insuffisance hépatique
CARDIAC_INSUFFICIENCY Non Bloc insuffisance cardiaque
ALLERGIES Non Bloc allergies
PATHOLOGIES Non Bloc pathologies

QuickExtractProviders (enum)

Exemple de providers :

var providerForm = Synapse.QuickExtractWidget.Providers.FORM;
var providerFileSystem = Synapse.QuickExtractWidget.Providers.FILE_SYSTEM;
var providerCamera = Synapse.QuickExtractWidget.Providers.CAMERA;

Permet de choisir quelle méthode d'import est activée afin d'extraire des traitements

Namespace Synapse.QuickExtractWidget.Providers

Valeur Requis Description
FORM Oui¹ Import d'ordonnance par saisie de texte libre
CAMERA Oui¹ Import d'ordonnance par caméra
FILE_SYSTEM Oui¹ Import d'ordonnance par upload de fichier

PrescriptionType (enum)

Valeur Description
HEALTH_PRODUCT Produit de santé
BIOLOGY Biologie
IMAGING Imagerie
NURSING_CARE Soins infirmiers
PHYSIOTHERAPY Kinésithérapie
PODIATRY Pédicurie
SPEECH_THERAPY Orthophonie
ORTHOPTICS Orthoptie
OTHER Autre

SortMode (enum)

Valeur Description
AS_ENTERED Trié par ordre de saisie
BY_ALD ALD en premier
CUSTOM Tri personnalisé

PrescriptionDurationUnit (enum)

Valeur Description
DAY Jour(s)
WEEK Semaine(s)
MONTH Mois

DurationUnit (enum)

Valeur Description
DAY Jour(s)
WEEK Semaine(s)
MONTH Mois

RenewalMode (enum)

Valeur Description
times Renouveller un certain nombre de fois
frequency Renouveller à une certaine fréquence

PrescriptionLineType (enum)

Valeur Description
BRANDED_DRUG Spécialité médicamenteuse
CLINICAL_DRUG Médicament virtuel
MEDICAL_DEVICE Dispositif médical
PARAPHARMACY Parapharmacie
COMPOUNDED_MEDICATION Préparation magistrale
COMMENT Commentaire
ADVICE Conseil

Prescription (object)

Champ Requis Type Description
id Oui String Identifiant unique (auto généré)
type Oui PrescriptionType Type de l’ordonnance
title Non String Titre de l’ordonnance
category Non String Catégorie de l’ordonnance
date Oui Date Date de début de l’ordonnance
duration Non Number Durée de l’ordonnance en mois
durationUnit Non PrescriptionDurationUnits Unité de durée de l’ordonnance
hasToBeRenewed Non boolean Ordonnance à renouveler
timesToRenew Non Number Nombre de renouvellement de l’ordonnance
cost Non Number Coût de l’ordonnance
createdAt Oui Date Date de création de l’ordonnance
updateAt Non Date Date de dernière mise à jour de l’ordonnance
sortMode Oui SortMode Mode de tri des lignes de l'ordonnance
prescriptionLines Oui PrescriptionLine[] Lignes de l’ordonnance
additionalInfos Oui PrescriptionAdditionalInfos Informations additionnelles de l’ordonnance

PrescriptionAdditionalInfos (object)

Champ Requis Type Description
workAccident Non Boolean Accident du travail
occupationDisease Non Boolean Maladie professionnelle
atHome Non String À domicile
emergency Non Boolean Urgence
prevention Non Boolean Prévention

PrescriptionLine (object)

Champ Requis Type Description
id Oui String Identifiant unique (auto généré)
title Non String Titre de la ligne, utilisé pour les favoris
order Oui Number Position de la ligne dans l’ordonnance
type Oui PrescriptionLineType Type de ligne
entity Non Entity Entité à laquelle correspond cette ligne
entityPrescription Non EntityPrescription Posologie associée à cette ligne
isConvertedClinicalDrug Non Boolean Définit s’il s’agit d’un médicament convertit en DCI
freeText Non String Utilisé pour les lignes n’ayant pas de posologie structurée (Conseil, Commentaire, …)
isReimbursableCompoundedMedication Non Boolean Définit s’il s’agit d’une préparation magistrale remboursée
additionalInfos Oui PrescriptionLineAdditionalInfos | NonMedicatedPrecriptionLineAdditionnalInfos Informations additionnelles de la ligne de prescription

PrescriptionLineAdditionalInfos (object)

Champ Requis Type Description
exception Non Boolean Médicament d’exception
stup Non Boolean Médicament stupéfiant
biosimilar Non Boolean Médicament biosimilaire
availableAsGeneric Non Boolean Médicament disponible en générique
aldReimbursed Non Boolean Médicament remboursé dans le cadre d'une ALD
maxDuration Non String Durée maximale de prescription
pR Non Boolean Médicament à prescription restreinte
prDetails Non String Détails de la prescription restreinte
refundable Non Boolean Médicament remboursable
refundDetails Non String Détails du remboursement

NonMedicatedPrecriptionLineAdditionnalInfos (object)

Champ Requis Type Description
medicalInfo Non String Informations médicales
ald Non Boolean Spécifie si la prescription concerne une ALD (Affection Longue Durée)
workAccident Non Boolean Spécifie si la prescription est en lien avec un accident du travail
occupationalDisease Non Boolean Spécifie si la prescription est en lien avec une maladie professionnelle
emptyStomach Non Boolean Spécifie si la prise doit être à jeun
notRefundable Non Boolean Spécifie si la prescription n’est pas remboursable
nonListed Non Boolean Spécifie si la prescription est hors nomenclature
toRenew Non Boolean Spécifie si la prescription est renouvelable
toRenewDetails Non Object Détails du renouvellement
toRenewDetails.selected Oui RenewalMode Mode de renouvellement
toRenewDetails.times Oui Number Nombre de renouvellements
toRenewDetails.frequency Oui Number Fréquence de renouvellement
toRenewDetails.frequencyUnit Oui DurationUnit Unité de fréquence de renouvellement

SamAlert

Exemple d'alerte SAM

{
  "code": "2022_0471",
  "version": 1
}

Objet représentant une alerte SAM (Systèmes d'aide à la décision indexée par médicaments)

Champ Requis Type Description
code Oui string Code de l'alerte SAM
version Oui number Version de l'alerte SAM

Personnalisation

L’ensemble des éléments (hors icônes) constituant l’apparence des widgets Synapse est paramétrable à travers plusieurs variables CSS définies.

Polices

Texte de base

De manière générale la police du texte des outils Synapse est déterminée par l’intermédiaire des trois variables suivantes:

--font-family-primary: 'Inter-regular'; // Détermine la police de base utilisée notamment par les corps de texte
--font-family-secondary: 'Inter-regular'; // Police secondaire, utilisée pour les éléments à mettre en valeur 
--font-family-tertiary: 'Aeonik-regular'; // Police tertiaire, notamment utilisée pour les gros titres

Titres

Il est également possible de venir préciser une police pour chacune des tailles de titres existantes (h1, h2, h3, h4, et h5) à travers le paramétrage de 5 variables:

--h1-family: var(--font-family-tertiary); // Police des h1
--h2-family: var(--font-family-tertiary); // Police des h2
--h3-family: var(--font-family-tertiary); // Police des h3
--h4-family: var(--font-family-tertiary); // Police des h4
--h5-family: var(--font-family-tertiary); // Police des h5

Exemple

Ainsi il est possible de changer la police principale utilisée par un widget monté dans une div disposant de la classe CSS .mount-point de la manière suivante:

.mount-point {
    --font-family-primary: "Comic Sans MS", "Comic Sans", cursive;
}

Taille du texte

Par défaut les tailles de texte dans les outils Synapse sont définis en rem, ce qui permet de facilement modifier la taille du texte de manière cohérente sur l’ensemble des vues. Les tailles de textes existantes sont définies à travers les variables CSS suivantes:

--text-25: 0.5rem; // Plus petite taille de texte disponible
--text-50: 0.75rem;
--text-75: 0.9rem;
--text-100: 1rem; // Taille du texte de base
--text-125: 1.14rem;
--text-150: 1.2rem;
--text-175: 1.7rem;
--text-200: 2.28rem; // Plus grande taille de texte disponible

Titres

Dans le cas des titres, les tailles de police sont définies à travers les variables suivantes:

--h1-size: var(--text-200); // Taille des titres h1
--h2-size: var(--text-175); // Taille des titres h2
--h3-size: var(--text-150); // Taille des titres h3
--h4-size: var(--text-125); // Taille des titres h4
--h5-size: var(--text-125); // Taille des titres h5

Exemple

De fait il est possible de modifier la taille de police des produits Synapse de deux manières:

- En modifiant la taille de base du texte de la page, ce qui impacte de manière équivalente l’ensemble des tailles de texte utilisées au sein de la page

:root {
    font-size: 16px; // Modifie la taille de base (1rem) à 16px
}

- En modifiant une à une chacune des variables déterminant les tailles de texte. Ainsi dans le cadre d’un widget monté sur la classe CSS .mount-point

.mount-point {
    --text-50: 10px;
    --text-75: 1.3rem;
    --h5-size: 4rem;
}

Couleurs

Les couleurs Synapse sont déterminée par trois grands ensembles de variables CSS. Afin de faire correspondre les widgets Synapse à votre marque, il peut notamment être intéressant de chercher à modifier les couleurs de marque présentées ci-dessous.

Les gris

L’ensemble des “gris” regroupe toutes les couleurs du noir au blanc, que l’on peut retrouver au sein de Synapse.

--grey-0: white; // Du "gris" le plus clair
--grey-25: #F2F3F4;
--grey-50: #E5E5E5;
--grey-75: #767676;
--grey-100: #171717; // Au "gris" le plus foncé

Les couleurs de marque

Les couleurs de marques rassemblent les teintes représentant la marque Synapse. Il existe 4 couleurs de marque principales, elles-mêmes découpées en 4 teintes distinctes.

// Couleur de marque principale
--brand-primary: #003753;
--brand-primary-light: #E8F0F5;
--brand-primary-medium: #00547E;
--brand-primary-dark: #002031;
// Couleur de marque secondaire
--brand-secondary: #97EDDD;
--brand-secondary-light: #EFFCFA;
--brand-secondary-medium: #9ff8e8;
--brand-secondary-dark: #50CDB7;
// Couleur de marque tertiaire
--brand-tertiary: #A954EB;
--brand-tertiary-light: #F5EAFF;
--brand-tertiary-medium: #a954eb;
--brand-tertiary-dark: #9749d3;
// Couleur de marque quaternaire
--brand-quaternary: #2FB5E8;
--brand-quaternary-light: #EEF9FD;
--brand-quaternary-medium: #30bbf1;
--brand-quaternary-dark: #2691bb;

Exemple

Ainsi, pour modifier la couleur de marque primaire, et la passer du “Bleu Synapse” à un violet profond, il est possible de procéder comme suit dans le cadre d’un widget monté au sein d’une div .mount-point

.mount-point {
    --brand-primary: #6f4573;
    --brand-primary-light: #B973BF;
  --brand-primary-medium: #7B4D80;
    --brand-primary-dark: #563659;
}