Skip to content
APIsGuides d'intégrationAnalyse d'ordonnance

API d’analyse d’ordonnance

Introduction

Ces APIs permettent de détecter des problèmes liés aux médicaments pris par un patient et de proposer des traitements alternatifs.

Ce guide va vous permettre très rapidement de réaliser vos premiers appels !

L’information ci-dessous détaille l’intégration de l’application complète d’import et de validation de la prescription, pour intégrer directement par API, merci d’aller sur la documentation dédiée des interactions ou des contre-indications

Comment ça fonctionne ?

Autorisation

L’application demande un jeton d’identité à l’API d’authentification (voir Authentification par jeton d’identité)

Bon à savoir : La clé privée de compte de service est différente pour chaque environnement. Nous vous transmettrons la clé de production une fois les tests terminés.

Récupération d’identifiants de médicaments virtuels

Notre algorithme utilise comme paramètre principal des médicaments virtuels, c’est-à-dire une vision du médicament dénuée de noms de marque ou de laboratoire. L’ensemble des médicaments sur le marché sont présents sous cette forme dans notre base.

Les requêtes à nos algorithmes utilisent ces identifiants. Pour en récupérer, plusieurs possibilités :

  • Soit vous en disposez déjà suite à l’utilisation d’une autre API comme celle du Scan d’ordonnance
  • Soit vous utilisez déjà notre base et vous disposez de cette information dans votre application
  • Ou vous pouvez utiliser très facilement notre API d’Autocomplétion pour récupérer l’identifiant d’un médicament à partir d’un nom de médicament en toutes lettres.

Pour ce guide, nous utiliserons cette dernière façon de faire.

Appel de l’API d’analyse

Une fois muni des identifiants de médicament virtuel nécessaires, vous pouvez appeler notre API GraphQL d’analyse.

URL des appels d’API

L’url de base est https://api.{env}.posos.co{env} est l’environnement suivant : preprod pour la validation, production pour le live.

https://api.preprod.posos.co

Bon à savoir : La clé privée de compte de service est différente pour chaque environnement. Nous vous transmettrons la clé de production une fois les tests terminés.

Fonctionnement détaillé

Autorisation et appels d’API

Ce guide part du principe que vous avez lu et testé les pages Appels des APIs et Authentification par jeton d’identité. Dans la suite, le jeton d’identité récupéré sera simplement appelé jeton.

Récupération d’identifiants de médicaments virtuels

Comme évoqué, nous utilisons l’API d’Autocompletion pour obtenir les identifiants nécessaires. Suivez la documentation et réalisez un appel à l’API avec les paramètres d’URL suivants :

query: <le nom du médicament en toutes lettres>
entity_type: DRUG
k: 5
thresh: 0.4
drug_concept_levels: CLINICAL_DRUG
drug_concept_levels: BRANDED_DRUG
drug_concept_levels: INGREDIENT

Bon à savoir : Si vous cherchez juste le nom du médicament ou son nom associé à un dosage et/ou une forme, cela fonctionnera de la même manière.

L’identifiant de médicament virtuel (type = CLINICAL_DRUG) se trouve dans le champ code de l’objet posos de la liste de codings contenu dans le résultat. Le JSONPath pour l’obtenir est $.candidates[0].codings.posos[0].code.

L’identifiant recommandé pour les spécialités (type = BRANDED_DRUG) se trouve dans le champ code de l’objet CIS de la liste de codings contenu dans le résultat.

L’identifiant recommandé pour les ingrédients (type = INGREDIENT) se trouve dans le champ code de l’objet inn de la liste de codings contenu dans le résultat. Si l’objet inn est vide, utilisez l’objet SMS.

Exemples

On peut tester par exemple avec la simvastatine et la clarithromycine :

Requête

GET
/autocomplete-api/autocomplete
curl --request GET -s \
  --url "https://api.preprod.posos.co/autocomplete-api/autocomplete?query=simvastatine&entity_type=CLINICAL_DRUG&k=1&thresh=0.4&drug_concept_levels=CLINICAL_DRUG" \
  --header 'Authorization: Bearer <token>' \
  | jq -r '.candidates[0].codings.posos[0].code'

Vous devriez récupérer les identifiants MV00001165 et MV00000271.

Appel de l’API d’analyse

Utilisez votre client GraphQL préféré pour interroger nos APIs aux URLs suivantes :

💡 Note : Si vous ne savez pas quelle URL utiliser, cela dépend de la fonctionnalité que vous souhaitez exploiter. En cas de doute, n’hésitez pas à demander à notre équipe. Pensez également à inclure l’en-tête d’authentification dans vos requêtes !

Si vous n’êtes pas familier avec GraphQL, il n’est pas trop tard pour découvrir ce protocole très en vogue.

Voici la requête à faire en langage GQL :

Interactions

query GetInteractions($drugs: [DrugInput!]!) {
  getInteractions(drugs: $drugs) {
    interactions {
      designation
      type
      source {
        author
        url
      }
      left {
        clinicalDrug {
          code
          inn
          label
        }
      }
      right {
        clinicalDrug {
          code
          inn
          label
        }
      }
      warnings {
        guidelines
        modifiers
        risk
      }
    }
  }
}

Voici une version interactive :

Request

POST
/aort-api-v3/v1/graphql
curl --request POST -s \
  --url "https://api.preprod.posos.co/aort-api-v3/v1/graphql" \
  --data-raw $'{"query":"query getInteractions($drugs: DrugInput) {\n getInteractions(drugs: $drugs) {\n designation\n type\n source {\n author\n url\n }\n drugs {\n clinicalDrugs {\n code\n inn\n label\n }\n }\n warnings {\n risk\n guidelines\n modifiers\n }\n }\n}", variables:{{ "drugs": { "clinicalDrugs": [ "MV00001165", "MV00000271", ] } }}, "operationName:"getInteractions"}' \
  --header 'Authorization: Bearer <token>'

La réponse contient, pour chaque médicament passé en paramètre, les interactions détectées avec les autres médicaments de la requête. Ici, une contre-indication importante a été renvoyée !

Voici également un autre exemple qui permet de voir que le point d’accès getInteractions renvoie des interactions qui incluent la voie d’administration lorsque les médicaments sont pris par la même voie.

Interactions

query Interactions($drugs: [DrugInput!]!) {
  getInteractions(drugs: $drugs) {
    interactions {
      designation
      right {
        clinicalDrug {
          label
        }
      }
      left {
        clinicalDrug {
          label
        }
      }
      warnings {
        risk
      }
    }
  }
}