Contexte et objectifs
PharmA2A est publié le 12 novembre 2026 sous la version 0.1 et vise à automatiser les commandes entre les pharmacies communautaires françaises et leurs fournisseurs (laboratoires, grossistes, plateformes d’achat). Le protocole s’appuie sur le cadre A2A (Agent2Agent) de la Linux Foundation, qui normalise les échanges entre agents logiciels. L’objectif déclaré est d’éliminer les formulaires, e‑mails et appels téléphoniques qui composent encore la chaîne d’achat, tout en garantissant que chaque commande soit correcte dès la première transmission.
Architecture du protocole
Le cœur de PharmA2A repose sur cinq messages, chacun décrit par un JSON Schema et publié comme extension de profil A2A (https://pharma2a.org/ext/v1). Les champs sont libellés en français (CIP‑13, désignations de produits, etc.), ce qui rend le dictionnaire sectoriel unique dans l’écosystème A2A. Aucun champ économique ou de données patient n’est présent ; les termes du fournisseur sont transmis tels quels, sans recomputation, et un champ non renseigné reste null. La communication suit un modèle « request‑response » strict : la pharmacie initie la requête, le fournisseur répond, aucune forme de push ou de streaming n’est supportée.
Chaque commande possède un identifiant de référence qui assure l’unicité de la transaction dans le compte client. Le protocole ne confirme pas automatiquement une commande ; une réponse vide n’est pas considérée comme une confirmation, ce qui oblige le pharmacien à valider explicitement chaque échange.
Implémentation et intégration
Le paquet pharma2a est distribué sous licence Apache 2.0 (code) et CC0 1.0 (dictionnaire). Il nécessite Python 3.11+ et s’installe via un environnement virtuel :
git clone https://github.com/pharma2a/pharma2a && cd pharma2a
python3 -m venv .venv && . .venv/bin/activate && pip install -e "[modele,test]"Le dépôt inclut un sample supplier qui, en moins d’une minute, montre le cycle complet : le script examples/sample-supplier/agent.py écoute sur le port 8766, tandis que le client pharmacie s’exécute avec python -m pharma2a.officine --agent http://127.0.0.1:8766 --attendre 2. Un pont e‑mail (mode brouillon) écrit les messages sortants dans le répertoire sorties/, permettant aux fournisseurs qui ne possèdent pas encore d’agent de répondre par courrier classique, qui est ensuite transcrit dans le dictionnaire.Le contrat d’intégration avec un ERP est décrit comme un « round‑trip de 10 minutes », où les champs du dictionnaire sont mappés aux colonnes du système de gestion. La documentation fournit des diagrammes de séquence, des règles de conformité A2A et des « decision records » expliquant chaque contrainte de conception.
Limites et perspectives
Le modèle strictement synchrone exclut les scénarios de mise à jour en temps réel ou de diffusion d’événements, ce qui peut freiner les fournisseurs souhaitant pousser des notifications de stock. L’absence de données économiques empêche toute agrégation automatisée de prix ou de remises, limitant l’analyse de rentabilité à un niveau manuel. De plus, aucun fournisseur n’a encore déployé son propre agent ; la chaîne repose actuellement sur le pont e‑mail de SyderaAI, ce qui introduit un point de dépendance unique.
Sur le plan de la sécurité, les rapports de vulnérabilité sont gérés via SECURITY.md et ne transitent pas par les issues publiques, ce qui renforce la confidentialité des échanges. Le nom « PharmA2A » est protégé par une marque déposée, tandis que le contenu reste libre d’utilisation, assurant une interopérabilité sans fragmentation de la terminologie.