APIs
Référence API
Structuration & autocomplétion
Autocomplétion

Autocomplétion

Introduction

Cette api permet de récupérer une liste d'entités médicales correspondant à une requête. Les entités médicales peuvent être de différents types (principes actifs, spécialités, indications, des contre-indications, etc.) Pour toutes les entités, lorsqu'un attribut text_preprocessed est renvoyé pour un concept donné, c'est cet attribut ou une sous-partie de cet attribute qui correspond à la requête, pas nécessairement le nom. Cet attribut correspond alors à la valeur prétraitée d'un du concept ou d'un synonyme de ce concept (par exemple, tumeur du foie peut renvoyer tumeur hépatique car tumeur hépatique est un synonyme).

Point d'entrée

get/autocomplete-api/autocomplete

En-têtes HTTP

NomValeur
Content-Typeapplication/json
AuthorizationBearer <token>

Paramètres de requête

NomtypeDescription
querystringune chaine de caractère contenant le texte à analyser requis
entity_typestringType d'entité à compléter. DRUG par défaut. Peut être : ADVERSE_EFFECT BRANDED_DRUG CLINICAL_DRUG CLINICAL_INDICATION CONTRAINDICATION_TERRAIN DRUG INGREDIENT SPECIALTY.
knumberNombre de candidats à renvoyer par type d'entité. 10 par défaut
threshnumberSeuil de similarité des candidats. Supprime les candidats en dessous du seuil de similarité. 0.4 par défaut
must_containbooleanForce les candidats à contenir une sous-chaîne donnée (généralement issue d'un appel API précédent)
drug_concept_levelsList[string]Quand entity_type == "DRUG", permet de filtrer le niveau de concept de médicaments parmi BRANDED_DRUG, CLINICAL_DRUG, PACKAGED_DRUG, INGREDIENT et EXCIPIENT, par défaut, les cinq niveaux sont renvoyés. Pour requêter plusieurs types à la fois, ajouter plusieurs fois le paramètre, comme dans l'exemple ci-dessous.
is_inventedList[bool]Quand entity_type == "DRUG" et drug_concept_levels contient BRANDED_DRUG, permet de filtrer les médicaments avec un nom inventé et/ou non, par défaut, les deux sont renvoyés.
marketedList[bool]Quand entity_type == "DRUG", permet de filtrer les médicaments commercialisés et/ou non. Par defaut, seuls les médicaments commercialisés sont renvoyés.

Request

GET
/autocomplete-api/autocomplete
curl --request GET \
  --url "https://api.preprod.posos.co/autocomplete-api/autocomplete?query=doliprane&entity_type=DRUG&k=10&thresh=0.4&drug_concept_levels=BRANDED_DRUG&drug_concept_levels=CLINICAL_DRUG&marketed=True&marketed=False&is_invented=True" \
  --header 'Authorization: Bearer <token>'

Response

{
  "query": "doliprane",
  "entity_type": "DRUG",
  "candidates": [
    {
      "id": "64793681",
      "brand_name": "doliprane",
      "inn": "paracétamol",
      "is_invented": true,
      "marketed": true,
      "name": "DOLIPRANE 100 mg, poudre pour solution buvable en sachet-dose",
      "type": "BRANDED_DRUG",
      "similarity": 0.85,
      "form": {
        "label": "Poudre pour solution buvable",
        "code": "PDF-10110000",
        "terminology": "EDQM_form"
      },
      "text_preprocessed": "doliprane paracetamol 100 mg poudre",
      "ingredients": [
        {
          "designation": "paracétamol",
          "inn": "paracétamol"
        }
      ],
      "codings": {
        "cis": [
          {
            "code": "64793681",
            "label": "DOLIPRANE 100 mg, poudre pour solution buvable en sachet-dose",
            "terminology": "cis"
          }
        ],
        "ATC4": [
          {
            "code": "N02B",
            "label": "autres analgésiques et antipyrétiques",
            "terminology": "ATC4"
          }
        ],
        "ATC5": [
          {
            "code": "N02BE",
            "label": "anilides",
            "terminology": "ATC5"
          }
        ],
        "ATC7": [
          {
            "code": "N02BE01",
            "label": "paracétamol",
            "terminology": "ATC7"
          }
        ],
        "UCD13": [
          {
            "code": "3400892109282",
            "label": "DOLIPRANE 100MG PDR SACH",
            "terminology": "UCD13"
          }
        ],
        "UCD7": [
          {
            "code": "9210928",
            "label": "DOLIPRANE 100MG PDR SACH",
            "terminology": "UCD7"
          }
        ]
      },
      "strength": [
        {
          "unit": "mg",
          "code": "mg",
          "system": "https://ucum.org",
          "value": 100,
          "type": "STRENGTH"
        }
      ],
      "clinical_drug": {
        "code": "MV00001427",
        "designation": "paracétamol 100 mg poudre pour solution buvable en sachet"
      }
    }
    // ...
  ]
}

Format de la réponse

La réponse est un objet JSON contenant les attributs suivants :

NomTypeDescription
querystringLa requête initiale
entity_typestringLe type d'entité cherchée.
candidatesarrayUn tableau d'entités médicales correspondant à la requête. Voir la section Candidates

Candidates

Quelques attributs sont communs à tous les types d'entités :

NomtypeDescription
idstringIdentifiant unique de l'entité
namestringNom de l'entité
similaritynumberScore de similarité entre la requête et l'entité

Codings

Certains types renvoient un tableau de codings, comportant les attributs suivants :

NomTypeDescription
codestringCode du codage
labelstringNom du codage
terminologystringTerminologie du codage (snomed, meddra, cim10, ...)

L'ensemble des terminologies possibles est:

NomTypes d'entités associésDescriptionTerminologie externe
ATC4CLINICAL_DRUG, BRANDED_DRUGSous-groupe chimique
ATC5CLINICAL_DRUG, BRANDED_DRUGSous-groupe substance chimique
ATC7CLINICAL_DRUG, BRANDED_DRUGSous-groupe chimique
branded_drug_sourceCLINICAL_DRUGInformations d'une entité BRANDED_DRUG correspondante
cip7PACKAGED_DRUGCode Identifiant de Présentation à 7 chiffres
cip13PACKAGED_DRUGCode Identifiant de Présentation à 13 chiffres, contenant et remplaçant le code à 7 chiffres, le préfix 3400 pour les médicaments français, 9 pour les médicaments avec AMM et terminant par la clef de contrôle
cim10CLINICAL_INDICATION, CONTRAINDICATION_TERRAIN, ADVERSE_EFFECTClassification internationales de Maladies - Version 10
cisBRANDED_DRUGCode identifiant de spécialité
innINGREDIENTInternational Nonproprietary Names, identifie les substances pharmaceutiques ou les principes actifs pharmaceutiques de manière unique
medicabaseCLINICAL_DRUGRéférentiel des médicaments virtuels, ID défini par MV suivi du CIS
meddraCLINICAL_INDICATION, CONTRAINDICATION_TERRAIN, ADVERSE_EFFECTMedical Dictionary for Regulatory Activities
nvdCLINICAL_DRUGIdentifiant du médicament virtualisable, défini par NV suivi du CIS
pososCLINICAL_DRUGIdentifiant du médicament virtuel dans notre base. Correspond à l'id medicabase dans le cas d'un médicament virtuel, ou de NVD pour les médicaments non virtualisables
snomedCLINICAL_INDICATION, CONTRAINDICATION_TERRAIN, ADVERSE_EFFECT, INGREDIENT, EXCIPIENTSystematized Nomenclature of Medicine Clinical Terms
Substances ANSMINGREDIENTNom de l'ingrédient tel qu'écrit dans l'ANSM
ucd7BRANDED_DRUG, PACKAGED_DRUGUnité Commune de Dispensation à 7 caractères
ucd13BRANDED_DRUG, PACKAGED_DRUGUnité Commune de Dispensation à 13 caractères

Codings example

{
  "snomed": [
    {
      "code": "363346000",
      "label": "néoplasie maligne",
      "terminology": "snomed"
    }
  ],
  "cim10": [
    {
      "code": "C80",
      "label": "Tumeur maligne de siège non précisé",
      "terminology": "cim10"
    }
  ],
  "meddra": [
    { "code": "10028997", "label": "Tumeur maligne", "terminology": "meddra" }
  ]
}

Par type d'entité

Voici la liste des attributs spécifiques, renvoyés pour chaque type d'entité.

DRUG

Renvoie une liste de médicaments correspondant à la requête, peu importe si la recherche est faite en DCI ou en princeps (nom de marque).

Par défaut contient à la fois des entités de type BRANDED_DRUG, comportant le nom de la marque sous laquelle il est commercialisé, de type CLINICAL_DRUG, correspondant à un médicament virtuel, de type PACKAGED_DRUG correspondant à la présentation d'un médicament, de type INGREDIENT, correspondant à une DCI et de type EXCIPIENT.

Pour filtrer un ou plusieurs niveau de concept précis, ajouter une combinaisaon de paramètres drug_concept_levels=CLINICAL_DRUG, drug_concept_levels=BRANDED_DRUG, drug_concept_levels=PACKAGED_DRUG, drug_concept_levels=EXCIPIENT et drug_concept_levels=INGREDIENT, par exemple drug_concept_levels=CLINICAL_DRUG&drug_concept_levels=BRANDED_DRUG.

Les entités résultantes sont triées par type d'entité (10 entités par type par défaut) puis par ordre alphabétique, pour avoir les entités les plus proches de la requête, trier par similarity.

Exemple pour une requête avec xeplion 150 (nom de marque de la palipéridone) :

Response

{
  "query": "xeplion 150",
  "entity_type": "DRUG",
  "candidates": [
    {
      "id": "64760254",
      "brand_name": "xeplion",
      "inn": "palipéridone",
      "is_invented": true,
      "marketed": true,
      "name": "XEPLION 150 mg, suspension injectable à libération prolongée",
      "type": "BRANDED_DRUG",
      "similarity": 0.84,
      "form": {
        "label": "Suspension injectable à libération prolongée",
        "code": "PDF-11208500",
        "terminology": "EDQM_form"
      },
      "text_preprocessed": "xeplion 150 mg suspension injectable liberation prolongee",
      "ingredients": [
        {
          "designation": "palmitate de palipéridone",
          "inn": "palipéridone"
        }
      ],
      "codings": {
        "cis": [
          {
            "code": "64760254",
            "label": "XEPLION 150 mg, suspension injectable à libération prolongée",
            "terminology": "cis"
          }
        ],
        "ATC4": [
          {
            "code": "N05A",
            "label": "antipsychotiques",
            "terminology": "ATC4"
          }
        ],
        "ATC5": [
          {
            "code": "N05AX",
            "label": "autres antipsychotiques",
            "terminology": "ATC5"
          }
        ],
        "ATC7": [
          {
            "code": "N05AX13",
            "label": "palipéridone",
            "terminology": "ATC7"
          }
        ],
        "UCD13": [
          {
            "code": "3400893873830",
            "label": "XEPLION 150MG INJ LP SRG",
            "terminology": "UCD13"
          }
        ],
        "UCD7": [
          {
            "code": "9387383",
            "label": "XEPLION 150MG INJ LP SRG",
            "terminology": "UCD7"
          }
        ]
      },
      ,
      "strength": [
        {
          "unit": "mg",
          "code": "mg",
          "system": "https://ucum.org",
          "value": 150,
          "type": "STRENGTH"
        }
      ],
      "clinical_drug": {
        "code": "MV00003658",
        "designation": "palipéridone (palmitate) 150 mg suspension injectable à libération prolongée en seringue préremplie"
      },
      "availability_alert": null
    },
    {
      "id": "MV00003658",
      "brand_name": null,
      "inn": null,
      "is_invented": null,
      "marketed": true,
      "name": "palipéridone (palmitate) 150 mg suspension injectable à libération prolongée en seringue préremplie",
      "type": "CLINICAL_DRUG",
      "similarity": 0.89,
      "form": {
        "label": "Suspension injectable à libération prolongée",
        "code": "PDF-11208500",
        "terminology": "EDQM_form"
      },
      "text_preprocessed": "xeplion 150 mg suspension",
      "ingredients": [
        {
          "designation": "palmitate de palipéridone",
          "inn": "palipéridone"
        }
      ],
      "codings": {
        "medicabase": [
          {
            "code": "MV00003658",
            "label": "Palipéridone (palmitate) 150 mg suspension injectable à libération prolongée en seringue préremplie",
            "terminology": "medicabase"
          }
        ],
        "posos": [
          {
            "code": "MV00003658",
            "label": "Palipéridone (palmitate) 150 mg suspension injectable à libération prolongée en seringue préremplie",
            "terminology": "posos"
          }
        ],
        "ATC4": [
          {
            "code": "N05A",
            "label": "antipsychotiques",
            "terminology": "ATC4"
          }
        ],
        "ATC5": [
          {
            "code": "N05AX",
            "label": "autres antipsychotiques",
            "terminology": "ATC5"
          }
        ],
        "ATC7": [
          {
            "code": "N05AX13",
            "label": "palipéridone",
            "terminology": "ATC7"
          }
        ],
        "branded_drug_source": [
          {
            "code": "64760254",
            "label": "XEPLION 150 mg, suspension injectable à libération prolongée",
            "terminology": "branded_drug_source"
          }
        ]
      },
      "strength": [
        {
          "unit": "mg",
          "code": "mg",
          "system": "https://ucum.org",
          "value": 150,
          "type": "STRENGTH"
        }
      ]
    }
  ]
}
NomTypeDescription
brand_nameboolUniquement dans le cas de BRANDED_DRUG, nom de marque du médicament.
codingsCodingsCodages du médicament.
formobjectInformations de la forme galénique dans la terminologie EDQM: 'code', terminology et label. Absent pour INGREDIENT and EXCIPIENT.
idstringIdentifiant unique de l'entité.
innboolSubstance pharmaceutique ou les principe actif pharmaceutique.
is_inventedboolMédicament avec nom inventé ou non (générique).
ingredientsarrayListe des ingrédients du médicament, avec les attributs designation et inn (voir Codings).
marketedboolMédicament commercialisé ou non.
namestringNom du médicament.
similaritynumberScore de similarité entre la requête et l'entité.
strengthQuantityOrRateDose du médicament structurée.
text_preprocessedstringTexte prétraité pour matcher le médicament à la requête.
typestringType de médicament (BRANDED_DRUG, CLINICAL_DRUG ou INGREDIENT).
clinical_drugClinicalDrugInfoUniquement dans le cas de BRANDED_DRUG, nom et code du médicament virtuel correspondant.
availability_alertstringInformations des ruptures de stock, dans le cas de BRANDED_DRUG et PACKAGED_DRUG.
labelled_strengthstringDose du médicament.

ADVERSE_EFFECT

Renvoie une liste d'effets indésirables correspondant à la requête.

Response

{
  "query": "tremblement",
  "entity_type": "ADVERSE_EFFECT",
  "candidates": [
    {
      "id": "6a8f4208fc762a36785c9fd5ad6e5903c5f7fb51ba3e4e2d71cf7b2758c9afbd",
      "name": "tremblement",
      "type": "ADVERSE_EFFECT",
      "similarity": 1.0,
      "codings": {
        "snomed": [
          {
            "terminology": "snomed",
            "code": "26079004",
            "label": "tremblement"
          }
        ],
        "cim10": [
          {
            "terminology": "cim10",
            "code": "R251",
            "label": "Tremblement, sans précision"
          }
        ],
        "meddra": [
          {
            "terminology": "meddra",
            "code": "10044562",
            "label": "Tremblement"
          }
        ]
      }
    },
    {
      "id": "d0b42330cbefe2498dcfaa082d84160be32cc040254c34efaeebe7e6098317a1",
      "name": "tremblement des mains",
      "type": "ADVERSE_EFFECT",
      "similarity": 0.951,
      "codings": {
        "meddra": [
          {
            "terminology": "meddra",
            "code": "10044577",
            "label": "Tremblement des mains"
          }
        ],
        "snomed": [
          {
            "terminology": "snomed",
            "code": "26079004",
            "label": "tremblement"
          }
        ],
        "cim10": [
          {
            "terminology": "cim10",
            "code": "R251",
            "label": "Tremblement, sans précision"
          }
        ]
      }
    }
  ]
}

SPECIALTY

Cette entité est dépréciée et va être remplacée par DRUG avec drug_concept_levels=CLINICAL_DRUG

Renvoi une liste de spécialités médicamenteuses correspondant à la requête.

Response

{
  "query": "doliprane",
  "entity_type": "SPECIALTY",
  "candidates": [
    {
      "dci": ["paracétamol"],
      "id": "fd07dc89b0e39daad0affc90ed125567d5183a1c1f24299c15017280c773b187::drug",
      "name": "DOLIPRANE 150 mg, suppositoire",
      "similarity": 1,
      "text_preprocessed": "doliprane 150 mg , suppositoire",
      "dose": "150 mg",
      "form": "suppositoire",
      "atc": {
        "code": "N02BE01",
        "label": "paracétamol"
      },
      "atc_parent": {
        "code": "N02BE",
        "label": "anilides"
      },
      "clinical_drug_id": "MV00001654",
      "shortname": "doliprane"
    }
    // ...
  ]
}
NomTypeDescription
dciarrayListe des DCI du médicament.
dosestringDose du médicament.
formstringForme du médicament.
atcobjectCode ATC du médicament.
atc.codestringCode ATC du médicament.
atc.labelstringLibellé ATC du médicament.
atc_parentobjectCode ATC parent du médicament.
atc_parent.codestringCode ATC parent du médicament.
atc_parent.labelstringLibellé ATC parent du médicament.
clinical_drug_idstringIdentifiant du médicament virtuel dans la base de données medicabase.
shortnamestringNom du médicament.

CLINICAL_INDICATION

NomtypeDescription
namestringNom de l'indication
codingsCodingsCodages de l'indication

Response

{
  "query": "tumeur du foie",
  "entity_type": "CLINICAL_INDICATION",
  "candidates": [
    {
      "id": "a2bdf4507eaed9e9f4db734b18f0794ccbe08cb84993bac45372adbc73ac5efd",
      "type": "CLINICAL_INDICATION",
      "name": "cancer hépatocellulaire",
      "similarity": 0.944,
      "text_preprocessed": "cancer hepatocellulaire tumeur foie",
      "codings": {
        "meddra": [
          {
            "terminology": "meddra",
            "code": "10073071",
            "label": "Carcinome hépatocellulaire"
          }
        ],
        "snomed": [
          {
            "terminology": "snomed",
            "code": "126851005",
            "label": "tumeur du foie"
          }
        ],
        "cim10": [
          {
            "terminology": "cim10",
            "code": "C220",
            "label": "Carcinome hépatocellulaire"
          }
        ]
      }
    }
    // ...
  ]
}

CLINICAL_DRUG_INFO

NomtypeDescription
designationstringNom du médicament virtuel, comprenant molécule, dose et forme galénique
codestringCode du médicament virtuel

CONTRAINDICATION_TERRAIN

Hormis les attributs récurrents id, type, name, similarity et text_preprocessed, les résultats contiennent les attributs origin, codings et terminology.

NomtypeDescription
originstringOrigine du terrain : contraindication.condition.normalised_designation, contraindication.patient_criterion.adjunct_treatment.procedures, contraindication.patient_criterion.age_group, contraindication.patient_criterion.gender
terminologystringTerminologie du terrain : contra_indication, meddra_procedures, age_group, gender

Si vous souhaitez donc filtrer les terrains par type, vous devez utiliser l'attribut origin.

Exemple de requête avec le mot femme :

Response

{
  "query": "femme",
  "entity_type": "CONTRAINDICATION_TERRAIN",
  "candidates": [
    {
      "id": "Femme",
      "type": "CONTRAINDICATION_TERRAIN",
      "name": "Femme",
      "origin": "contraindication.patient_criterion.gender",
      "similarity": 1,
      "text_preprocessed": "femme",
      "terminology": "gender",
      "codings": {}
    },
    {
      "id": "5cb1f1937e6b686d5374097364c09323ad44bac43248e8d93e33fc59bffb9ad1",
      "type": "CONTRAINDICATION_TERRAIN",
      "name": "Femme nullipare",
      "origin": "contraindication.condition.normalised_designation",
      "similarity": 0.87,
      "text_preprocessed": "femme nullipare",
      "terminology": "contra_indications",
      "codings": {
        "snomed": [
          {
            "code": "10029827",
            "label": "Nullipare",
            "terminology": "meddra"
          },
          {
            "code": "102877006",
            "label": "épouse enceinte",
            "terminology": "snomed"
          }
        ]
      }
    }
    // ...
  ]
}

Codes de réponse

CodeDescription
200
400Un des paramètres passés dans la requête est invalide