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
Nom | Valeur |
---|---|
Content-Type | application/json |
Authorization | Bearer <token> |
Paramètres de requête
Nom | type | Description |
---|---|---|
query | string | une chaine de caractère contenant le texte à analyser requis |
entity_type | string | Type d’entité à compléter. DRUG par défaut. Peut être : ADVERSE_EFFECT BRANDED_DRUG CLINICAL_DRUG CLINICAL_INDICATION CONTRAINDICATION_TERRAIN DRUG INGREDIENT SPECIALTY . |
k | number | Nombre de candidats à renvoyer par type d’entité. 10 par défaut |
thresh | number | Seuil de similarité des candidats. Supprime les candidats en dessous du seuil de similarité. 0.4 par défaut |
must_contain | boolean | Force les candidats à contenir une sous-chaîne donnée (généralement issue d’un appel API précédent) |
drug_concept_levels | List[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_invented | List[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. |
marketed | List[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
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 :
Nom | Type | Description |
---|---|---|
query | string | La requête initiale |
entity_type | string | Le type d’entité cherchée. |
candidates | array | Un 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 :
Nom | type | Description |
---|---|---|
id | string | Identifiant unique de l’entité |
name | string | Nom de l’entité |
similarity | number | Score de similarité entre la requête et l’entité |
Codings
Certains types renvoient un tableau de codings
, comportant les attributs suivants :
Nom | Type | Description |
---|---|---|
code | string | Code du codage |
label | string | Nom du codage |
terminology | string | Terminologie du codage (snomed , meddra , cim10 , …) |
L’ensemble des terminologies possibles est:
Nom | Types d’entités associés | Description | Terminologie externe |
---|---|---|---|
ATC4 | CLINICAL_DRUG , BRANDED_DRUG | Sous-groupe chimique | ✓ |
ATC5 | CLINICAL_DRUG , BRANDED_DRUG | Sous-groupe substance chimique | ✓ |
ATC7 | CLINICAL_DRUG , BRANDED_DRUG | Sous-groupe chimique | ✓ |
branded_drug_source | CLINICAL_DRUG | Informations d’une entité BRANDED_DRUG correspondante | |
cip7 | PACKAGED_DRUG | Code Identifiant de Présentation à 7 chiffres | ✓ |
cip13 | PACKAGED_DRUG | Code 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 | ✓ |
cim10 | CLINICAL_INDICATION , CONTRAINDICATION_TERRAIN , ADVERSE_EFFECT | Classification internationales de Maladies - Version 10 | ✓ |
cis | BRANDED_DRUG | Code identifiant de spécialité | ✓ |
inn | INGREDIENT | International Nonproprietary Names, identifie les substances pharmaceutiques ou les principes actifs pharmaceutiques de manière unique | ✓ |
medicabase | CLINICAL_DRUG | Référentiel des médicaments virtuels, ID défini par MV suivi du CIS | ✓ |
meddra | CLINICAL_INDICATION , CONTRAINDICATION_TERRAIN , ADVERSE_EFFECT | Medical Dictionary for Regulatory Activities | ✓ |
nvd | CLINICAL_DRUG | Identifiant du médicament virtualisable, défini par NV suivi du CIS | |
posos | CLINICAL_DRUG | Identifiant 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 | ✓ |
snomed | CLINICAL_INDICATION , CONTRAINDICATION_TERRAIN , ADVERSE_EFFECT , INGREDIENT , EXCIPIENT | Systematized Nomenclature of Medicine Clinical Terms | ✓ |
Substances ANSM | INGREDIENT | Nom de l’ingrédient tel qu’écrit dans l’ANSM | ✓ |
ucd7 | BRANDED_DRUG , PACKAGED_DRUG | Unité Commune de Dispensation à 7 caractères | ✓ |
ucd13 | BRANDED_DRUG , PACKAGED_DRUG | Unité 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"
}
]
}
]
}
Nom | Type | Description |
---|---|---|
brand_name | bool | Uniquement dans le cas de BRANDED_DRUG , nom de marque du médicament. |
codings | Codings | Codages du médicament. |
form | object | Informations de la forme galénique dans la terminologie EDQM: ‘code’, terminology et label . Absent pour INGREDIENT and EXCIPIENT . |
id | string | Identifiant unique de l’entité. |
inn | bool | Substance pharmaceutique ou les principe actif pharmaceutique. |
is_invented | bool | Médicament avec nom inventé ou non (générique). |
ingredients | array | Liste des ingrédients du médicament, avec les attributs designation et inn (voir Codings ). |
marketed | bool | Médicament commercialisé ou non. |
name | string | Nom du médicament. |
similarity | number | Score de similarité entre la requête et l’entité. |
strength | QuantityOrRate | Dose du médicament structurée. |
text_preprocessed | string | Texte prétraité pour matcher le médicament à la requête. |
type | string | Type de médicament (BRANDED_DRUG , CLINICAL_DRUG ou INGREDIENT ). |
clinical_drug | ClinicalDrugInfo | Uniquement dans le cas de BRANDED_DRUG , nom et code du médicament virtuel correspondant. |
availability_alert | string | Informations des ruptures de stock, dans le cas de BRANDED_DRUG et PACKAGED_DRUG . |
labelled_strength | string | Dose 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"
}
// ...
]
}
Nom | Type | Description |
---|---|---|
dci | array | Liste des DCI du médicament. |
dose | string | Dose du médicament. |
form | string | Forme du médicament. |
atc | object | Code ATC du médicament. |
atc.code | string | Code ATC du médicament. |
atc.label | string | Libellé ATC du médicament. |
atc_parent | object | Code ATC parent du médicament. |
atc_parent.code | string | Code ATC parent du médicament. |
atc_parent.label | string | Libellé ATC parent du médicament. |
clinical_drug_id | string | Identifiant du médicament virtuel dans la base de données medicabase. |
shortname | string | Nom du médicament. |
CLINICAL_INDICATION
Nom | type | Description |
---|---|---|
name | string | Nom de l’indication |
codings | Codings | Codages 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
Nom | type | Description |
---|---|---|
designation | string | Nom du médicament virtuel, comprenant molécule, dose et forme galénique |
code | string | Code 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
.
Nom | type | Description |
---|---|---|
origin | string | Origine du terrain : contraindication.condition.normalised_designation , contraindication.patient_criterion.adjunct_treatment.procedures , contraindication.patient_criterion.age_group , contraindication.patient_criterion.gender |
terminology | string | Terminologie 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
Code | Description |
---|---|
200 | |
400 | Un des paramètres passés dans la requête est invalide |