Skip to content
APIsRéférence API🔒 Structuration & autocomplétionStructuration de prescription (PREVIEW)

Structuration de prescription

Introduction

Cette API permet d’analyser une prescription médicale complète composée de plusieurs lignes. Elle identifie et regroupe les éléments prescrits (médicaments, dispositifs médicaux), extrait les posologies associées, et détecte les informations administratives et observations patient.

Point d’entrée

post/nerl/v3/prescription

En-têtes HTTP

NomValeur
Content-Typeapplication/json
AuthorizationBearer <token>

Paramètres de requête

NomTypeDescription
disable_cachebooleanSi true, désactive le cache. Par défaut false.

Corps de la requête

Le corps de la requête est un objet JSON contenant les attributs suivants :

NomTypeDescription
prescription_linesstring[] | PrescriptionLineInput[]Liste des lignes de prescription à analyser. Peut être une liste de chaînes de caractères ou une liste d’objets PrescriptionLineInput.
Requis
n_codesnumberNombre d’entités à renvoyer pour chaque type. 3 par défaut.
medical_databasestringBase de données médicale à utiliser. medical_db ou posos_medicaldb. Par défaut medical_db.
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.
verbosebooleanSi true, active la détection des commentaires. 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.
use_classifierbooleanSi true, utilise le classifieur pour déterminer si une ligne est médicale. Par défaut true.
only_realmbooleanSi true, ne renvoie que les médicaments du realm spécifié. Par défaut false.

PrescriptionLineInput

Lorsque vous utilisez des objets PrescriptionLineInput au lieu de simples chaînes de caractères, vous pouvez fournir des informations de position (bounding box) pour chaque ligne :

NomTypeDescription
textstringTexte de la ligne de prescription.
Requis
bounding_boxBoundingBoxPosition de la ligne dans le document d’origine (optionnel).

BoundingBox

NomTypeDescription
file_indexnumberIndex du fichier dans le cas de multi-fichiers.
page_indexnumberIndex de la page dans le document.
x1numberCoordonnée X du coin supérieur gauche.
y1numberCoordonnée Y du coin supérieur gauche.
x2numberCoordonnée X du coin supérieur droit.
y2numberCoordonnée Y du coin supérieur droit.
x3numberCoordonnée X du coin inférieur droit.
y3numberCoordonnée Y du coin inférieur droit.
x4numberCoordonnée X du coin inférieur gauche.
y4numberCoordonnée Y du coin inférieur gauche.

Request

POST
/nerl/v3/prescription
curl --request POST \
  --url "https://api.preprod.posos.co/nerl/v3/prescription" \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "prescription_lines": [
      "DOLIPRANE 1000mg",
      "1 comprimé 3 fois par jour pendant 5 jours",
      "AMOXICILLINE 500mg",
      "2 gélules matin et soir pendant 7 jours"
    ],
    "lang": "fr",
    "detect_frequency": true
  }'

Output

{
  "prescribed_elements": [
    {
      "prescribed_type": "medication",
      "detected_drug": {
        "bim_record": {
          "cis": "64793681",
          "name": "DOLIPRANE 1000 mg, comprimé",
          "inn": "paracétamol"
        },
        "branded_drug_entity": {
          "begin_offset": 0,
          "end_offset": 16,
          "designation": "DOLIPRANE 1000mg",
          "entity_type": "BRANDED_DRUG",
          "category": "MEDICATION",
          "codings": {
            "SHORTNAME": [
              {
                "code": "doliprane",
                "cosine_similarity": 0.95,
                "label": "DOLIPRANE",
                "terminology": "SHORTNAME"
              }
            ]
          }
        },
        "detected_parts": {
          "strength": true,
          "form": false
        }
      },
      "detected_posology": {
        "posology_string": "1 comprimé 3 fois par jour pendant 5 jours",
        "posology_display_string": "1 comprimé, 3 fois par jour, pendant 5 jours",
        "comments": [],
        "structured_posology": [
          {
            "begin_offset": 0,
            "end_offset": 10,
            "designation": "1 comprimé",
            "entity_type": "QUANTITY",
            "category": "FREQUENCY",
            "quantity_and_rate": {
              "value": 1,
              "unit": "comprimé",
              "type": "DOSE"
            }
          },
          {
            "begin_offset": 11,
            "end_offset": 27,
            "designation": "3 fois par jour",
            "entity_type": "FREQUENCY",
            "category": "FREQUENCY",
            "timing": {
              "frequency": 3,
              "period": 1,
              "period_unit": "d"
            }
          },
          {
            "begin_offset": 28,
            "end_offset": 44,
            "designation": "pendant 5 jours",
            "entity_type": "DURATION_INTAKE",
            "category": "FREQUENCY",
            "timing": {
              "bounds_duration": {
                "value": 5,
                "unit": "d"
              }
            }
          }
        ],
        "structuration_reliability": 0.95
      },
      "entities": [
        {
          "begin_offset": 0,
          "end_offset": 16,
          "designation": "DOLIPRANE 1000mg",
          "entity_type": "DRUG",
          "category": "MEDICATION"
        }
      ],
      "lines": [
        {
          "index": 0,
          "text": "DOLIPRANE 1000mg",
          "bounding_box": {
            "file_index": 0,
            "page_index": 0,
            "x1": 0,
            "y1": 0,
            "x2": 0,
            "y2": 0,
            "x3": 0,
            "y3": 0,
            "x4": 0,
            "y4": 0
          }
        },
        {
          "index": 1,
          "text": "1 comprimé 3 fois par jour pendant 5 jours",
          "bounding_box": {
            "file_index": 0,
            "page_index": 0,
            "x1": 0,
            "y1": 0,
            "x2": 0,
            "y2": 0,
            "x3": 0,
            "y3": 0,
            "x4": 0,
            "y4": 0
          }
        }
      ],
      "is_ald": false
    }
  ],
  "administrative": [],
  "observations": []
}

Format de la réponse

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

NomTypeDescription
prescribed_elementsarrayListe des éléments prescrits. Voir PrescribedElement.
administrativearrayListe des informations administratives extraites (requérant, date).
observationsarrayListe des observations patient extraites (âge, poids, taille).

PrescribedElement

Chaque élément prescrit peut être soit un médicament (PrescribedMedication) soit un dispositif médical (PrescribedMedicalDevice). Le champ prescribed_type permet de distinguer les deux types.

PrescribedMedication

NomTypeDescription
prescribed_type"medication"Type d’élément prescrit.
detected_drugDetectedBrandedDrugMédicament détecté et identifié (optionnel).
detected_posologyDetectedPosologyPosologie détectée et structurée (optionnel).
entitiesarrayListe des entités extraites. Voir NERLEntity.
linesarrayListe des lignes de prescription associées à cet élément.
is_aldbooleanIndique si l’élément est en rapport avec une ALD (Affection Longue Durée).
substitution_annotationSubstitutionAnnotationAnnotation de substitution (optionnel).

PrescribedMedicalDevice

NomTypeDescription
prescribed_type"medical_device"Type d’élément prescrit.
detected_deviceNERLEntityDispositif médical détecté.
entitiesarrayListe des entités extraites.
linesarrayListe des lignes de prescription associées à cet élément.
is_aldbooleanIndique si l’élément est en rapport avec une ALD.
substitution_annotationSubstitutionAnnotationAnnotation de substitution (optionnel).

DetectedBrandedDrug

NomTypeDescription
bim_recordobjectEnregistrement du médicament dans la base de données.
branded_drug_entityNERLEntityEntité du médicament de marque.
clinical_drug_entityNERLEntity | nullEntité du médicament virtuel associé (optionnel).
detected_partsDetectedBrandedDrugPartsParties du médicament détectées (dosage, forme).

DetectedBrandedDrugParts

NomTypeDescription
strengthbooleanIndique si le dosage a été détecté dans le texte.
formbooleanIndique si la forme galénique a été détectée.

DetectedPosology

NomTypeDescription
posology_stringstringChaîne de posologie extraite du texte.
posology_display_stringstringChaîne de posologie formatée pour l’affichage.
commentsarrayListe des commentaires associés à la posologie.
structured_posologyarrayListe des entités de posologie structurées (NERLEntity).
structuration_reliabilitynumberScore de fiabilité de la structuration (entre 0 et 1).

SubstitutionAnnotation

NomTypeDescription
allowedbooleanIndique si la substitution est autorisée.
reasonarrayListe des raisons de la substitution ou de son interdiction.

PrescribedLine

NomTypeDescription
indexnumberIndex de la ligne dans la liste d’entrée.
textstringTexte de la ligne.
bounding_boxBoundingBoxPosition de la ligne dans le document.

Administrative (Requester)

NomTypeDescription
requesterobjectInformations sur le prescripteur (identifiants).
authoredOnobjectDate de prescription (date et formatted_date).

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
422Erreur de validation du corps de la requête