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
| Nom | Valeur |
|---|---|
Content-Type | application/json |
Authorization | Bearer <token> |
Paramètres de requête
| Nom | Type | Description |
|---|---|---|
disable_cache | boolean | Si 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 :
| Nom | Type | Description |
|---|---|---|
prescription_lines | string[] | 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_codes | number | Nombre d’entités à renvoyer pour chaque type. 3 par défaut. |
medical_database | string | Base de données médicale à utiliser. medical_db ou posos_medicaldb. Par défaut medical_db. |
realm | string | Domaine d’application. Par défaut default. |
countries | string | Pays des médicaments à renvoyer. all ou france. Par défaut all. |
lang | string | Langue de la requête. fr, de ou en. Par défaut fr. |
verbose | boolean | Si true, active la détection des commentaires. Par défaut false. |
detect_medical_device | boolean | Si true, active la détection des dispositifs médicaux associés à un code. Par défaut false. |
include_recently_unmarketed | boolean | Si true, inclut les médicaments récemment retirés du marché. Par défaut false. |
exclude_hospital_drugs | boolean | Si true, exclut les médicaments réservés à l’usage hospitalier. Par défaut false. |
drug_similarity_threshold | number | Seuil de similarité cosinus pour filtrer les codages DRUG. Par défaut 0. |
debug | boolean | Si true, ajoute les attributs strengths et description aux résultats. Par défaut false. |
reliability | boolean | Si true, renvoie la fiabilité de la structuration de la posologie. Par défaut true. |
use_classifier | boolean | Si true, utilise le classifieur pour déterminer si une ligne est médicale. Par défaut true. |
only_realm | boolean | Si 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 :
| Nom | Type | Description |
|---|---|---|
text | string | Texte de la ligne de prescription. Requis |
bounding_box | BoundingBox | Position de la ligne dans le document d’origine (optionnel). |
BoundingBox
| Nom | Type | Description |
|---|---|---|
file_index | number | Index du fichier dans le cas de multi-fichiers. |
page_index | number | Index de la page dans le document. |
x1 | number | Coordonnée X du coin supérieur gauche. |
y1 | number | Coordonnée Y du coin supérieur gauche. |
x2 | number | Coordonnée X du coin supérieur droit. |
y2 | number | Coordonnée Y du coin supérieur droit. |
x3 | number | Coordonnée X du coin inférieur droit. |
y3 | number | Coordonnée Y du coin inférieur droit. |
x4 | number | Coordonnée X du coin inférieur gauche. |
y4 | number | Coordonnée Y du coin inférieur gauche. |
Request
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 :
| Nom | Type | Description |
|---|---|---|
prescribed_elements | array | Liste des éléments prescrits. Voir PrescribedElement. |
administrative | array | Liste des informations administratives extraites (requérant, date). |
observations | array | Liste 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
| Nom | Type | Description |
|---|---|---|
prescribed_type | "medication" | Type d’élément prescrit. |
detected_drug | DetectedBrandedDrug | Médicament détecté et identifié (optionnel). |
detected_posology | DetectedPosology | Posologie détectée et structurée (optionnel). |
entities | array | Liste des entités extraites. Voir NERLEntity. |
lines | array | Liste des lignes de prescription associées à cet élément. |
is_ald | boolean | Indique si l’élément est en rapport avec une ALD (Affection Longue Durée). |
substitution_annotation | SubstitutionAnnotation | Annotation de substitution (optionnel). |
PrescribedMedicalDevice
| Nom | Type | Description |
|---|---|---|
prescribed_type | "medical_device" | Type d’élément prescrit. |
detected_device | NERLEntity | Dispositif médical détecté. |
entities | array | Liste des entités extraites. |
lines | array | Liste des lignes de prescription associées à cet élément. |
is_ald | boolean | Indique si l’élément est en rapport avec une ALD. |
substitution_annotation | SubstitutionAnnotation | Annotation de substitution (optionnel). |
DetectedBrandedDrug
| Nom | Type | Description |
|---|---|---|
bim_record | object | Enregistrement du médicament dans la base de données. |
branded_drug_entity | NERLEntity | Entité du médicament de marque. |
clinical_drug_entity | NERLEntity | null | Entité du médicament virtuel associé (optionnel). |
detected_parts | DetectedBrandedDrugParts | Parties du médicament détectées (dosage, forme). |
DetectedBrandedDrugParts
| Nom | Type | Description |
|---|---|---|
strength | boolean | Indique si le dosage a été détecté dans le texte. |
form | boolean | Indique si la forme galénique a été détectée. |
DetectedPosology
| Nom | Type | Description |
|---|---|---|
posology_string | string | Chaîne de posologie extraite du texte. |
posology_display_string | string | Chaîne de posologie formatée pour l’affichage. |
comments | array | Liste des commentaires associés à la posologie. |
structured_posology | array | Liste des entités de posologie structurées (NERLEntity). |
structuration_reliability | number | Score de fiabilité de la structuration (entre 0 et 1). |
SubstitutionAnnotation
| Nom | Type | Description |
|---|---|---|
allowed | boolean | Indique si la substitution est autorisée. |
reason | array | Liste des raisons de la substitution ou de son interdiction. |
PrescribedLine
| Nom | Type | Description |
|---|---|---|
index | number | Index de la ligne dans la liste d’entrée. |
text | string | Texte de la ligne. |
bounding_box | BoundingBox | Position de la ligne dans le document. |
Administrative (Requester)
| Nom | Type | Description |
|---|---|---|
requester | object | Informations sur le prescripteur (identifiants). |
authoredOn | object | Date de prescription (date et formatted_date). |
Codes de réponse
| Code | Description |
|---|---|
200 | Succès |
400 | Un des paramètres passés dans la requête est invalide |
401 | Non autorisé - Token manquant ou invalide |
422 | Erreur de validation du corps de la requête |