Skip to content
APIsRéférence API🔒 Structuration & autocomplétionStructuration de ligne de prescription

NERL

Introduction

Cette API permet d’extraire et de lier des entités médicales à partir d’un texte, notamment des prescriptions médicales. Elle identifie les médicaments, posologies, indications, effets indésirables et d’autres entités médicales, puis les associe à des codes standardisés provenant de différentes terminologies médicales.

Point d’entrée

get/nerl/v2/nerl

En-têtes HTTP

NomValeur
Content-Typeapplication/json
AuthorizationBearer <token>

Paramètres de requête

NomTypeDescription
querystringTexte à analyser pour l’extraction d’entités.
Requis
n_codesnumberNombre d’entités à renvoyer pour chaque type. 3 par défaut.
medical_databasestringBase de données médicale à utiliser. medical_db renvoie des entités DRUG de terminologie SHORTNAME ou INGREDIENT. posos_medicaldb renvoie des entités DRUG de terminologie BRAND_DRUG ou INN.
realmstringDomaine d’application. Par défaut default.
countriesstringPays des médicaments à renvoyer. all ou france. Par défaut all.
langstringLangue de la requête. fr, de ou en. Par défaut fr.
detect_frequencybooleanSi true, recherche les fréquences connues de MEDDRA. Par défaut true.
detect_posologybooleanSi true, applique des règles pour extraire les entités de posologie. Par défaut false.
detect_administrativebooleanSi true, applique des règles manuelles pour extraire les entités administratives d’une prescription. Par défaut false.
detect_patient_infobooleanSi true, applique des règles manuelles pour extraire les informations patient (âge, poids, taille). Par défaut false.
detect_only_posologybooleanSi true, n’extrait que les entités de posologie. Par défaut false.
detect_medical_devicebooleanSi true, active la détection des dispositifs médicaux associés à un code. Par défaut false.
include_recently_unmarketedbooleanSi true, inclut les médicaments récemment retirés du marché. Par défaut false.
exclude_hospital_drugsbooleanSi true, exclut les médicaments réservés à l’usage hospitalier. Par défaut false.
drug_similarity_thresholdnumberSeuil de similarité cosinus pour filtrer les codages DRUG. Par défaut 0.
debugbooleanSi true, ajoute les attributs strengths et description aux résultats. Par défaut false.
reliabilitybooleanSi true, renvoie la fiabilité de la structuration de la posologie. Par défaut true.
disable_cachebooleanSi true, désactive le cache. Par défaut false.

Request

GET
/nerl/v2/nerl
curl --request GET \
  --url "https://api.preprod.posos.co/nerl/v2/nerl?query=doliprane%201000mg%201%20comprim%C3%A9%203%20fois%20par%20jour&n_codes=3&lang=fr&detect_posology=true" \
  --header 'Authorization: Bearer <token>'

Output

{
  "query": "doliprane 1000mg 1 comprimé 3 fois par jour",
  "preprocessed_query": "doliprane 1000mg 1 comprimé 3 fois par jour",
  "posology_string": "1 comprimé 3 fois par jour",
  "posology_display_string": "1 comprimé, 3 fois par jour",
  "entities": [
    {
      "begin_offset": 0,
      "end_offset": 16,
      "designation": "doliprane 1000mg",
      "entity_type": "DRUG",
      "category": "MEDICATION",
      "codings": {
        "SHORTNAME": [
          {
            "code": "doliprane",
            "cosine_similarity": 0.95,
            "label": "DOLIPRANE",
            "terminology": "SHORTNAME",
            "marketed": true,
            "ingredients": ["paracétamol"]
          }
        ],
        "INGREDIENT": [
          {
            "code": "paracetamol",
            "cosine_similarity": 0.92,
            "label": "paracétamol",
            "terminology": "INGREDIENT"
          }
        ]
      },
      "strength": [
        {
          "value": 1000,
          "unit": "mg",
          "code": "mg",
          "system": "https://ucum.org",
          "type": "STRENGTH"
        }
      ]
    },
    {
      "begin_offset": 17,
      "end_offset": 28,
      "designation": "1 comprimé",
      "entity_type": "QUANTITY",
      "category": "FREQUENCY",
      "quantity_and_rate": {
        "value": 1,
        "unit": "comprimé",
        "type": "DOSE"
      }
    },
    {
      "begin_offset": 29,
      "end_offset": 43,
      "designation": "3 fois par jour",
      "entity_type": "FREQUENCY",
      "category": "FREQUENCY",
      "timing": {
        "frequency": 3,
        "period": 1,
        "period_unit": "d"
      }
    }
  ],
  "structuration_reliability": 0.95
}

Format de la réponse

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

NomTypeDescription
querystringLa requête initiale.
preprocessed_querystringLa requête après prétraitement.
posology_stringstring | nullLa chaîne de posologie extraite.
posology_display_stringstring | nullLa chaîne de posologie formatée pour l’affichage.
entitiesarrayTableau d’entités extraites. Voir la section NERLEntity.
manual_entities_listarray | nullListe des entités manuellement définies.
age_groupsarray | nullGroupes d’âge détectés dans la requête.
administrativeobject | nullInformations administratives extraites (requérant, date).
observationsarray | nullObservations extraites (âge, poids, taille du patient).
structuration_reliabilitynumber | nullScore de fiabilité de la structuration de la posologie (entre 0 et 1).

NERLEntity

Chaque entité extraite contient les attributs suivants :

NomTypeDescription
begin_offsetnumberPosition de début de l’entité dans la requête.
end_offsetnumberPosition de fin de l’entité dans la requête.
designationstringTexte de l’entité dans la requête.
entity_typestringType de l’entité. Voir Types d’entités.
categorystringCatégorie de l’entité : CONDITION, FREQUENCY, MEDICATION, PATIENT_CRITERION, PATIENT_INFORMATION.
codingsobject | nullDictionnaire de codages par terminologie. Voir Codings.
quantity_and_rateQuantityOrRateQuantité ou taux associé à l’entité (pour les entités de type QUANTITY).
strengtharray | nullListe des dosages structurés (pour les entités de type DRUG).
timingNERLTimingInformations de fréquence structurées (pour les entités de type FREQUENCY).
as_neededobject | nullIndique si la prise est “si besoin” et pour quelle raison.
max_dose_per_periodobject | nullDose maximale par période.
observationobject | nullObservation patient (âge, poids, taille, IMC).
substitutionobject | nullInformations de substitution (autorisée ou non, raison).
marketing_authorization_holderobject | nullTitulaire de l’autorisation de mise sur le marché.

Types d’entités

TypeDescription
ADMINISTRATIVEEntité administrative (numéro de prescription, date, etc.)
BOUNDSBornes temporelles
BRANDED_DRUGMédicament de marque
BRANDED_CLINICAL_DRUGMédicament virtuel de marque
CLINICAL_DRUGMédicament virtuel
CODIFICATIONCodification
CONDITIONCondition médicale
CONTINUOUS_CRITERIONCritère continu patient
DOSE_UNITUnité de dose
DRUGMédicament
DURATION_INTAKEDurée de prise
FORMForme galénique
FREQUENCYFréquence de prise
LABLaboratoire
MAX_QUANTITYQuantité maximale
MEDICAL_DEVICEDispositif médical
CODED_MEDICAL_DEVICEDispositif médical codé
OBSERVATIONObservation patient
PATHWAYVoie d’administration
PERIODPériode
QUANTITYQuantité
REASONRaison
SUBSTITUTIONSubstitution
TIMINGTiming
WHENMoment de prise

Codings

Les codages associent les entités à des terminologies médicales standardisées. Chaque terminologie est une clé du dictionnaire codings, et la valeur est un tableau de candidats de type TerminologyCandidate.

NomTypeDescription
codestringCode du candidat dans la terminologie.
cosine_similaritynumberScore de similarité cosinus entre l’entité et le candidat.
labelstringLibellé du candidat.
terminologystringNom de la terminologie.
countriesarrayPays où le médicament est disponible (pour les terminologies DRUG).
marketedbooleanIndique si le médicament est commercialisé.
hospital_onlybooleanIndique si le médicament est réservé à l’usage hospitalier.
innstringDénomination commune internationale.
ingredientsarrayListe des ingrédients du médicament.
severitystringSévérité (pour les effets indésirables) : LIGHT, MODERATE, SEVERE.

Les terminologies disponibles incluent :

TerminologieDescription
SHORTNAMENom court du médicament
INGREDIENTPrincipe actif
BRANDED_DRUGMédicament de marque
CLINICAL_DRUGMédicament virtuel
INNDénomination commune internationale
INDICATIONIndication thérapeutique
SIDE_EFFECTEffet secondaire
ADVERSE_EFFECTEffet indésirable
CONTRAINDICATIONContre-indication
EXCIPIENTExcipient
FREQUENCYFréquence de prise
FORMForme galénique
MEDICAL_DEVICEDispositif médical

QuantityOrRate

NomTypeDescription
valuenumberValeur numérique de la quantité.
max_valuenumberValeur maximale (si plage).
unitstringUnité de mesure.
codestringCode de l’unité (UCUM).
systemstringSystème de codification de l’unité (https://ucum.org).
typestringType de quantité : DOSE, QUANTITY, STRENGTH.
rateobjectTaux (numérateur/dénominateur) pour les dosages complexes.

NERLTiming

NomTypeDescription
frequencynumberNombre de prises par période.
frequency_maxnumberNombre maximum de prises par période.
periodnumberDurée de la période.
period_maxnumberDurée maximale de la période.
period_unitstringUnité de la période (s, min, h, d, wk, mo, a).
countnumberNombre total de prises.
count_maxnumberNombre maximum total de prises.
durationnumberDurée de la prise.
duration_unitstringUnité de durée.
duration_maxnumberDurée maximale.
bounds_durationobjectDurée bornée de traitement.
bounds_periodobjectPériode bornée (date de début et fin).
number_repeats_allowednumberNombre de renouvellements autorisés.
time_of_dayarrayHeures de prise dans la journée.
day_of_weekarrayJours de prise dans la semaine.
sequencenumberNuméro de séquence pour les posologies alternées.
whenarrayMoments de prise : AC (avant repas), PC (après repas), etc.
offsetstringDécalage par rapport au moment de prise.

Codes de réponse

CodeDescription
200Succès
400Un des paramètres passés dans la requête est invalide
401Non autorisé - Token manquant ou invalide