Référence de l’API partenaires
Laboratoire
Pour un laboratoire d'analyses : lire les commandes que les cliniques lui adressent, puis déposer les résultats structurés (lignes d'analyses, valeurs, unités, bornes, drapeaux) et leur compte rendu PDF. Treats rattache le résultat à la commande ou à l'animal par un identifiant sûr (commande, identifiant de l'animal, puce), jamais par le nom ; en cas de doute, le résultat attend dans la file « Résultats à rattacher » de la clinique. L'application doit avoir été rattachée par Treats au laboratoire qu'elle représente (droit lab:write) : elle ne voit que les commandes et les résultats de ce laboratoire, sur les sites ouverts par l'organisation.
Lister les commandes d'analyses
GET/api/partner/v1/lab/orders#
Rend les commandes d'analyses adressées aux laboratoires que représente l'application, sur les sites ouverts par l'organisation (ou sur le seul site demandé). Tri par date de modification croissante puis identifiant ; une commande modifiée apparaît dans la liste au plus 60 secondes après, alors que GET /lab/orders/{id} la rend tout de suite. Pour suivre les nouvelles commandes, lire status=PENDING avec updated_since. La liste ne rend ni les résultats ni les commandes adressées à un autre laboratoire.
Paramètres
| statusrequête · enum | Filtre de statut, insensible à la casse. Absent : tous les statuts. |
| site_idrequête · uuid | Limite la liste à un site ouvert à l'application (sinon |
| updated_sincerequête · date-time | Ne rend que les commandes modifiées à cet instant ou après (inclusif). |
| cursorrequête · string | Curseur opaque rendu par la page précédente ( |
| limitrequête · integer | Taille de page, de 1 à 200 (au-delà, 200). Défaut :50 |
| Treats-Site-Iden-tête · uuid | Équivalent de |
Réponse
200Une page de commandes.
Champs de la réponse (2)
| itemsLabOrder[] | |
| iduuid | Identifiant de la commande Treats. À renvoyer dans |
| siteIduuid | Site de la clinique qui a passé la commande. |
| providerenum | Fournisseur à qui la commande est adressée (l'un de ceux que représente l'application). ANIMA_CAREIDEXXVETERNITYCENTRAVETICADNEPHTISPENNYLANEPICOXIAMYPACS |
| providerOrderIdstring | Identifiant de la commande chez le laboratoire, quand Treats la lui a transmise par son connecteur. peut être null |
| statusenum |
PENDINGCOMPLETEDCANCELLED |
| modalityenum | Mode d'analyse : au cabinet ( IN_HOUSEREFERENCE_LABDIGITALOTHERpeut être null |
| testCodesstring[] | Codes d'analyses demandés, au catalogue du laboratoire ( |
| notesstring | Remarques de la clinique pour le laboratoire (« À jeun »…). peut être null |
| veterinarianstring | Vétérinaire demandeur, en texte. peut être null |
| createdAtdate-time | Date de la commande. |
| updatedAtdate-time | Dernière modification ; clé de synchronisation des listes. |
| patientLabExamPatient | L'animal concerné ; |
| iduuid | Identifiant de l'animal. |
| publicIdstring | Identifiant public de l'animal ( |
| namestring | Nom de l'animal. |
| speciesstring | Code d'espèce du référentiel Treats, en majuscules ( |
| breedstring | Race, en texte libre. peut être null |
| sexenum | Sexe et statut de stérilisation. MALEFEMALEMALE_NEUTEREDFEMALE_SPAYEDUNKNOWNpeut être null |
| birthDatedate | Date de naissance. peut être null |
| microchipNumberstring | Numéro de puce électronique. peut être null |
| ownerobject | Le client propriétaire : nom seulement. peut être null |
| lastNamestring | Nom de famille du client, ou raison sociale pour une personne morale. peut être null |
| firstNamestring | Prénom du client. peut être null |
| nextCursorstring | Curseur opaque de la page suivante, à repasser tel quel dans |
Erreurs propres à cette opération
| 400 INVALID_FIELD |
|
| 400 INVALID_SITE_ID |
|
| 403 PARTNER_PROVIDER_NOT_LINKED | L'application n'est rattachée à aucun laboratoire ni fournisseur d'imagerie : le rattachement se demande à Treats. |
| 404 SITE_NOT_FOUND | Le site demandé n'est pas ouvert à l'application. |
Et les erreurs communes à toutes les opérations : erreurs et limites.
Lire une commande d'analyses
GET/api/partner/v1/lab/orders/{id}#
Rend une commande d'analyses, avec l'animal concerné. La commande doit être de l'organisation, d'un site ouvert à l'application et adressée à l'un de ses laboratoires ; sinon la route répond 404, sans dire si elle existe ailleurs. Lecture immédiate, sans le délai des listes.
Paramètres
| idchemin · uuidrequis | Identifiant de la commande. |
Réponse
200La commande.
Champs de la réponse (12)
| iduuid | Identifiant de la commande Treats. À renvoyer dans |
| siteIduuid | Site de la clinique qui a passé la commande. |
| providerenum | Fournisseur à qui la commande est adressée (l'un de ceux que représente l'application). ANIMA_CAREIDEXXVETERNITYCENTRAVETICADNEPHTISPENNYLANEPICOXIAMYPACS |
| providerOrderIdstring | Identifiant de la commande chez le laboratoire, quand Treats la lui a transmise par son connecteur. peut être null |
| statusenum |
PENDINGCOMPLETEDCANCELLED |
| modalityenum | Mode d'analyse : au cabinet ( IN_HOUSEREFERENCE_LABDIGITALOTHERpeut être null |
| testCodesstring[] | Codes d'analyses demandés, au catalogue du laboratoire ( |
| notesstring | Remarques de la clinique pour le laboratoire (« À jeun »…). peut être null |
| veterinarianstring | Vétérinaire demandeur, en texte. peut être null |
| createdAtdate-time | Date de la commande. |
| updatedAtdate-time | Dernière modification ; clé de synchronisation des listes. |
| patientLabExamPatient | L'animal concerné ; |
| iduuid | Identifiant de l'animal. |
| publicIdstring | Identifiant public de l'animal ( |
| namestring | Nom de l'animal. |
| speciesstring | Code d'espèce du référentiel Treats, en majuscules ( |
| breedstring | Race, en texte libre. peut être null |
| sexenum | Sexe et statut de stérilisation. MALEFEMALEMALE_NEUTEREDFEMALE_SPAYEDUNKNOWNpeut être null |
| birthDatedate | Date de naissance. peut être null |
| microchipNumberstring | Numéro de puce électronique. peut être null |
| ownerobject | Le client propriétaire : nom seulement. peut être null |
| lastNamestring | Nom de famille du client, ou raison sociale pour une personne morale. peut être null |
| firstNamestring | Prénom du client. peut être null |
Erreurs propres à cette opération
| 403 PARTNER_PROVIDER_NOT_LINKED | L'application n'est rattachée à aucun laboratoire ni fournisseur d'imagerie. |
| 404 NOT_FOUND | Commande inconnue, d'une autre organisation, d'un site non ouvert, adressée à un autre laboratoire, ou identifiant qui n'est pas un UUID. |
Et les erreurs communes à toutes les opérations : erreurs et limites.
Déposer un résultat d'analyses
POST/api/partner/v1/lab/results#
Enregistre un résultat structuré (lignes d'analyses) avec, au besoin, son compte rendu PDF en base64. Rattachement, du plus sûr au moins sûr : la commande (orderId), l'identifiant de l'animal (patient.id ou patient.publicId, de l'organisation et visible des sites ouverts), puis la puce (un seul animal de l'organisation). Tous les identifiants fournis doivent désigner le même animal ; jamais le nom. Sans rattachement sûr, le résultat est quand même enregistré et attend dans « Résultats à rattacher » du site (matched: false, unmatchedReason). Un résultat rattaché entre au dossier de l'animal (et le PDF parmi ses documents) ; rattaché par sa commande, celle-ci passe COMPLETED (final: false : reste PENDING).
Site de réception : celui de la commande, sinon site_id ou Treats-Site-Id, sinon le seul site ouvert (SITE_ID_REQUIRED s'il y en a plusieurs). Réponse 201 pour un nouveau résultat. Renvoyer le même externalResultId du même laboratoire dans la même organisation, avec une autre Idempotency-Key, est une republication (200, même id) : les lignes sont toutes remplacées par celles envoyées, le PDF est remplacé s'il est fourni et gardé sinon, collectedAt et veterinarian sont mis à jour s'ils sont fournis. Le rattachement du premier envoi, resultType et modality sont conservés : orderId et patient sont contrôlés mais ne changent plus rien. La même Idempotency-Key rejoue la première réponse sans rien réécrire. Le même identifiant venu d'un autre laboratoire ou dans une autre organisation est un résultat distinct (201).
Paramètres
| site_idrequête · uuid | Site de réception d'un résultat sans |
| Treats-Site-Iden-tête · uuid | Équivalent de |
| Idempotency-Keyen-tête · stringrequis | Clé unique de l'envoi (un UUID). Le même envoi répété avec la même clé n'est appliqué qu'une fois pendant 24 h. |
Corps de la requête application/json
| externalResultIdstringrequis | Identifiant du résultat chez le laboratoire, 100 caractères au plus. Unique par organisation et par laboratoire : le renvoyer remplace le résultat déjà reçu (voir la route). |
| orderIduuid | Commande Treats à laquelle répond le résultat ( |
| providerenum | Laboratoire d'origine, insensible à la casse. Doit être l'un des fournisseurs que représente l'application et, avec ANIMA_CAREIDEXXVETERNITYCENTRAVETICADNEPHTISPENNYLANEPICOXIAMYPACS |
| patientobject | Identification de l'animal, quand le résultat ne passe pas par une commande (ou pour la confirmer). Tous les identifiants fournis (y compris l'animal de la commande) doivent désigner le même animal, sinon le résultat n'est pas rattaché : |
| iduuid | Identifiant de l'animal dans Treats. |
| publicIdstring | Identifiant public de l'animal ( |
| microchipstring | Numéro de puce : 6 à 23 caractères alphanumériques, espaces ignorés. Ne rattache que si un seul animal de l'organisation porte cette puce. |
| namestring | Nom de l'animal chez le laboratoire. Affiché à l'équipe dans « Résultats à rattacher » ; jamais utilisé pour rattacher. |
| ownerLastNamestring | Nom du propriétaire chez le laboratoire. Affiché à l'équipe dans « Résultats à rattacher » ; jamais utilisé pour rattacher. |
| resultTypeenum | Type de résultat, insensible à la casse. BLOOD_PANELXRAYULTRASOUNDURINEBIOPSYOTHERdéfaut "OTHER" |
| modalityenum | Mode d'analyse, insensible à la casse. IN_HOUSEREFERENCE_LABDIGITALOTHERdéfaut "REFERENCE_LAB" |
| collectedAtdate-time | Date de prélèvement (instant ISO 8601). À défaut, la date de réception par Treats en tient lieu. |
| finalboolean |
|
| veterinarianstring | Biologiste ou vétérinaire signataire, enregistré avec le résultat. |
| linesobject[] | Lignes d'analyses, 500 au plus. Au moins une ligne ou un compte rendu ( |
| analytestringrequis | Paramètre mesuré ( |
| valuestring | Valeur telle qu'à afficher (« 12.31 », « < 10 », « positif »). |
| numericValuenumber | Valeur numérique, en nombre JSON (jamais un texte converti) : 6 décimales et 12 chiffres entiers au plus (valeur absolue jusqu'à 999 999 999 999). |
| unitstring | Unité ( |
| lownumber | Borne basse de l'intervalle de référence, mêmes limites que |
| highnumber | Borne haute de l'intervalle de référence, mêmes limites que |
| referenceRangestring | Intervalle de référence en texte (« 3.9 - 7.8 »). |
| flagenum | Position de la valeur, insensible à la casse. Une valeur hors NORMALLOWHIGHCRITICAL_LOWCRITICAL_HIGHABNORMAL |
| categorystring | Rubrique (« Biochimie »…). Les lignes sont regroupées par rubrique. |
| testCodestring | Code de l'analyse au catalogue du laboratoire. |
| testNamestring | Nom de l'analyse. |
| notesstring | Commentaire sur la ligne. |
| pdfBase64string | Compte rendu PDF encodé en base64 (espaces et retours à la ligne ignorés), 20 Mo au plus une fois décodé. Le contenu doit commencer par la signature |
Réponse
200Résultat republié (même `externalResultId`, même laboratoire, même organisation) : même `id`, lignes remplacées.
Champs de la réponse (16)
| iduuid | Identifiant du résultat dans Treats (pour |
| externalResultIdstring | Identifiant du résultat chez le laboratoire, tel qu'envoyé. |
| siteIduuid | Site de la clinique qui a reçu le résultat. |
| providerenum | Laboratoire d'origine du résultat. ANIMA_CAREIDEXXVETERNITYCENTRAVETICADNEPHTISPENNYLANEPICOXIAMYPACS |
| matchedboolean |
|
| matchedByenum | Ce qui a permis le rattachement automatique : la commande ( ORDERPATIENT_IDMICROCHIPpeut être null |
| unmatchedReasonenum | Pourquoi le résultat n'a pas été rattaché : aucun identifiant d'animal ( NO_IDENTIFIERPATIENT_NOT_FOUNDMICROCHIP_AMBIGUOUSCONFLICTING_IDENTIFIERSpeut être null |
| orderIduuid | Commande Treats d'origine, si le résultat a été envoyé avec |
| patientIduuid | Animal auquel le résultat est rattaché ; |
| patientPublicIdstring | Identifiant public ( |
| resultTypeenum | Type de résultat. BLOOD_PANELXRAYULTRASOUNDURINEBIOPSYOTHER |
| modalityenum | Mode d'analyse. IN_HOUSEREFERENCE_LABDIGITALOTHERpeut être null |
| collectedAtdate-time | Date de prélèvement envoyée dans |
| createdAtdate-time | Date de la première réception par Treats. |
| pdfReceivedboolean | Un compte rendu PDF accompagne le résultat. |
| linesLabResultLine[] | Lignes d'analyses, regroupées par rubrique ( |
| categorystring | Rubrique (« Biochimie », « Hématologie »…). peut être null |
| testCodestring | Code de l'analyse au catalogue du laboratoire. peut être null |
| testNamestring | Nom de l'analyse. peut être null |
| analytestring | Paramètre mesuré ( |
| valuestring | Valeur telle qu'affichée (« 12.31 », « < 10 », « positif »). Quand seule |
| numericValuenumber | Valeur numérique exacte, sans zéros superflus ( |
| unitstring | Unité ( |
| lownumber | Borne basse de l'intervalle de référence. peut être null |
| highnumber | Borne haute de l'intervalle de référence. peut être null |
| referenceRangestring | Intervalle de référence en texte (« 3.9 - 7.8 »). peut être null |
| flagenum | Position de la valeur par rapport à l'intervalle. NORMALLOWHIGHCRITICAL_LOWCRITICAL_HIGHABNORMALpeut être null |
| notesstring | Commentaire du laboratoire sur la ligne. peut être null |
Erreurs propres à cette opération
| 400 BODY_REQUIRED | Corps absent. |
| 400 INVALID_FIELD | Champ inconnu (y compris dans |
| 400 PROVIDER_REQUIRED | L'application représente plusieurs fournisseurs et ni |
| 400 INVALID_SITE_ID |
|
| 400 SITE_ID_REQUIRED | Sans |
| 403 PARTNER_PROVIDER_NOT_LINKED | L'application n'est rattachée à aucun laboratoire ni fournisseur d'imagerie. |
| 404 LAB_ORDER_NOT_FOUND |
|
| 404 SITE_NOT_FOUND | Le site demandé n'est pas ouvert à l'application. |
| 409 EXTERNAL_RESULT_ID_CONFLICT | Cet |
Et les erreurs communes à toutes les opérations : erreurs et limites.
Notifications envoyées :lab.result.received
Lire un résultat d'analyses
GET/api/partner/v1/lab/results/{id}#
Rend un résultat avec toutes ses lignes et son état de rattachement, par exemple pour savoir si l'équipe de la clinique a rattaché un résultat resté en attente (matched passe à true, patientId est rempli). Le résultat doit être de l'organisation, reçu sur un site ouvert à l'application et venu de l'un de ses laboratoires, quel que soit le canal par lequel Treats l'a reçu ; sinon 404.
Paramètres
| idchemin · uuidrequis | Identifiant Treats du résultat ( |
Réponse
200Le résultat.
Champs de la réponse (16)
| iduuid | Identifiant du résultat dans Treats (pour |
| externalResultIdstring | Identifiant du résultat chez le laboratoire, tel qu'envoyé. |
| siteIduuid | Site de la clinique qui a reçu le résultat. |
| providerenum | Laboratoire d'origine du résultat. ANIMA_CAREIDEXXVETERNITYCENTRAVETICADNEPHTISPENNYLANEPICOXIAMYPACS |
| matchedboolean |
|
| matchedByenum | Ce qui a permis le rattachement automatique : la commande ( ORDERPATIENT_IDMICROCHIPpeut être null |
| unmatchedReasonenum | Pourquoi le résultat n'a pas été rattaché : aucun identifiant d'animal ( NO_IDENTIFIERPATIENT_NOT_FOUNDMICROCHIP_AMBIGUOUSCONFLICTING_IDENTIFIERSpeut être null |
| orderIduuid | Commande Treats d'origine, si le résultat a été envoyé avec |
| patientIduuid | Animal auquel le résultat est rattaché ; |
| patientPublicIdstring | Identifiant public ( |
| resultTypeenum | Type de résultat. BLOOD_PANELXRAYULTRASOUNDURINEBIOPSYOTHER |
| modalityenum | Mode d'analyse. IN_HOUSEREFERENCE_LABDIGITALOTHERpeut être null |
| collectedAtdate-time | Date de prélèvement envoyée dans |
| createdAtdate-time | Date de la première réception par Treats. |
| pdfReceivedboolean | Un compte rendu PDF accompagne le résultat. |
| linesLabResultLine[] | Lignes d'analyses, regroupées par rubrique ( |
| categorystring | Rubrique (« Biochimie », « Hématologie »…). peut être null |
| testCodestring | Code de l'analyse au catalogue du laboratoire. peut être null |
| testNamestring | Nom de l'analyse. peut être null |
| analytestring | Paramètre mesuré ( |
| valuestring | Valeur telle qu'affichée (« 12.31 », « < 10 », « positif »). Quand seule |
| numericValuenumber | Valeur numérique exacte, sans zéros superflus ( |
| unitstring | Unité ( |
| lownumber | Borne basse de l'intervalle de référence. peut être null |
| highnumber | Borne haute de l'intervalle de référence. peut être null |
| referenceRangestring | Intervalle de référence en texte (« 3.9 - 7.8 »). peut être null |
| flagenum | Position de la valeur par rapport à l'intervalle. NORMALLOWHIGHCRITICAL_LOWCRITICAL_HIGHABNORMALpeut être null |
| notesstring | Commentaire du laboratoire sur la ligne. peut être null |
Erreurs propres à cette opération
| 403 PARTNER_PROVIDER_NOT_LINKED | L'application n'est rattachée à aucun laboratoire ni fournisseur d'imagerie. |
| 404 NOT_FOUND | Résultat inconnu, d'une autre organisation, reçu sur un site non ouvert, venu d'un autre laboratoire, ou identifiant qui n'est pas un UUID. |
Et les erreurs communes à toutes les opérations : erreurs et limites.
Déposer le compte rendu PDF d'un résultat
POST/api/partner/v1/lab/results/{id}/pdf#
Joint un compte rendu PDF à un résultat déjà reçu, en multipart/form-data (champ file), quand il n'a pas été envoyé en base64 avec le résultat. Il remplace le précédent. Résultat rattaché : le PDF entre parmi les documents de l'animal. Résultat en attente : le fichier est gardé et entre au dossier quand l'équipe rattache le résultat. Mêmes conditions d'accès que GET /lab/results/{id}. Ni les lignes ni le rattachement ne changent.
Paramètres
| idchemin · uuidrequis | Identifiant Treats du résultat. |
| Idempotency-Keyen-tête · stringrequis | Clé unique de l'envoi (un UUID). Le même envoi répété avec la même clé n'est appliqué qu'une fois pendant 24 h. |
Corps de la requête multipart/form-data
| filefichierrequis | Le compte rendu, déclaré |
Réponse
200Le résultat relu (`pdfReceived: true`).
Champs de la réponse (16)
| iduuid | Identifiant du résultat dans Treats (pour |
| externalResultIdstring | Identifiant du résultat chez le laboratoire, tel qu'envoyé. |
| siteIduuid | Site de la clinique qui a reçu le résultat. |
| providerenum | Laboratoire d'origine du résultat. ANIMA_CAREIDEXXVETERNITYCENTRAVETICADNEPHTISPENNYLANEPICOXIAMYPACS |
| matchedboolean |
|
| matchedByenum | Ce qui a permis le rattachement automatique : la commande ( ORDERPATIENT_IDMICROCHIPpeut être null |
| unmatchedReasonenum | Pourquoi le résultat n'a pas été rattaché : aucun identifiant d'animal ( NO_IDENTIFIERPATIENT_NOT_FOUNDMICROCHIP_AMBIGUOUSCONFLICTING_IDENTIFIERSpeut être null |
| orderIduuid | Commande Treats d'origine, si le résultat a été envoyé avec |
| patientIduuid | Animal auquel le résultat est rattaché ; |
| patientPublicIdstring | Identifiant public ( |
| resultTypeenum | Type de résultat. BLOOD_PANELXRAYULTRASOUNDURINEBIOPSYOTHER |
| modalityenum | Mode d'analyse. IN_HOUSEREFERENCE_LABDIGITALOTHERpeut être null |
| collectedAtdate-time | Date de prélèvement envoyée dans |
| createdAtdate-time | Date de la première réception par Treats. |
| pdfReceivedboolean | Un compte rendu PDF accompagne le résultat. |
| linesLabResultLine[] | Lignes d'analyses, regroupées par rubrique ( |
| categorystring | Rubrique (« Biochimie », « Hématologie »…). peut être null |
| testCodestring | Code de l'analyse au catalogue du laboratoire. peut être null |
| testNamestring | Nom de l'analyse. peut être null |
| analytestring | Paramètre mesuré ( |
| valuestring | Valeur telle qu'affichée (« 12.31 », « < 10 », « positif »). Quand seule |
| numericValuenumber | Valeur numérique exacte, sans zéros superflus ( |
| unitstring | Unité ( |
| lownumber | Borne basse de l'intervalle de référence. peut être null |
| highnumber | Borne haute de l'intervalle de référence. peut être null |
| referenceRangestring | Intervalle de référence en texte (« 3.9 - 7.8 »). peut être null |
| flagenum | Position de la valeur par rapport à l'intervalle. NORMALLOWHIGHCRITICAL_LOWCRITICAL_HIGHABNORMALpeut être null |
| notesstring | Commentaire du laboratoire sur la ligne. peut être null |
Erreurs propres à cette opération
| 400 MULTIPART_REQUIRED | Corps qui n'est pas en |
| 400 MULTIPART_INVALID | Envoi multipart illisible. |
| 400 NO_FILE | Aucun champ |
| 400 FILE_TOO_LARGE | PDF de plus de 20 Mo (ou envoi trop volumineux). |
| 400 UNSUPPORTED_FILE_TYPE | Fichier non déclaré |
| 403 PARTNER_PROVIDER_NOT_LINKED | L'application n'est rattachée à aucun laboratoire ni fournisseur d'imagerie. |
| 404 NOT_FOUND | Résultat inconnu, d'une autre organisation, reçu sur un site non ouvert, venu d'un autre laboratoire, ou identifiant qui n'est pas un UUID. |
Et les erreurs communes à toutes les opérations : erreurs et limites.