AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Données de médicaments pour applications et agents IA

Listes de médicaments des patients vs connaissances sur les médicaments : ressources FHIR, RxNorm, ATC, sources openFDA et EMA, et une jointure testée d'un dossier FHIR avec les étiquettes RxNorm et FDA.

Les logiciels de santé ont besoin de deux types de données sur les médicaments : la liste des médicaments du patient — ce que cette personne prend, depuis quand, à quelle dose, qui l'a enregistré — et les connaissances sur les médicaments — ce qu'un produit contient, son étiquette officielle, les avertissements et les interactions. La première appartient au dossier du patient ; la seconde provient de bases de données faisant autorité sur les médicaments. Les mélanger est la raison pour laquelle les agents d'IA finissent par énoncer des faits sur les médicaments issus de la mémoire du modèle. Cette page explique les deux, les ressources FHIR R4 et les systèmes de code impliqués, les sources publiques qui existent aux États-Unis et dans l'UE, et un exemple fonctionnel qui joint la liste d'un patient d'un enregistrement FHIR avec RxNorm et l'étiquette FDA.

Deux types de données médicamenteuses

Liste des médicaments du patient Connaissances sur les médicaments
Réponses Que prend Ana, depuis quand, à quelle fréquence ? Qu'est-ce que la metformine 500 mg, quels sont les avertissements sur son étiquette ?
Changements Lorsque le patient ou un clinicien le met à jour Lorsqu'un régulateur ou un éditeur le met à jour
Réside dans Le dossier du patient (DME, DRP, serveur FHIR) Bases de données et terminologies sur les médicaments
FHIR MedicationStatement, MedicationRequest, MedicationAdministration, Medication Principalement en dehors du dossier ; les informations sur les produits peuvent elles-mêmes être FHIR
Qui peut le lire Uniquement avec le consentement du patient Public ou sous licence

Une application ou un agent qui répond "puis-je prendre de l'ibuprofène avec mon médicament pour la tension artérielle ?" a besoin des deux : la liste du patient pour savoir de quel médicament il s'agit, et une source de connaissances sur les médicaments pour savoir ce qui est connu sur la combinaison — plus un clinicien ou un pharmacien pour la réponse.

Ressources FHIR pour la liste des médicaments

Le médicament est codé : aux États-Unis avec RxNorm (de la National Library of Medicine) et les codes produit NDC ; internationalement avec la classification ATC de l'OMS ; en Europe également avec des codes produit nationaux et, de plus en plus, les informations électroniques sur les produits basées sur FHIR de l'EMA. Une déclaration peut porter plusieurs codages pour le même médicament.

Sources de connaissances sur les médicaments

États-Unis

Union européenne

Les interactions sont la partie la plus difficile. Le NLM a retiré son API d'interactions médicamenteuses vers janvier 2024, et la vérification complète des interactions repose aujourd'hui sur des bases de connaissances cliniques sous licence. La section des interactions d'une notice est un texte rédigé pour les cliniciens, pas un vérificateur.

Joindre l'enregistrement à la connaissance des médicaments

L'exemple lit les médicaments actifs d'un patient depuis Anpheros, résout chaque nom en un concept RxNorm et récupère l'étiquette FDA. Il a été exécuté contre une instance locale de la plateforme et les API RxNorm et openFDA en direct.

import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });

// 1. What the person takes: from their record (ATC codes, names as they were entered)
const { data: meds } = await anpheros.medications.list(patientId, { status: 'active' });

// 2. What each medicine is: RxNorm (US National Library of Medicine), free, no key
async function rxcui(name: string): Promise<string | null> {
  const r = await fetch(`https://rxnav.nlm.nih.gov/REST/approximateTerm.json?term=${encodeURIComponent(name)}&maxEntries=1`);
  const j: any = await r.json();
  const id = j.approximateGroup?.candidate?.[0]?.rxcui;
  if (!id) return null;
  // An approximate match can be an outdated concept: keep it only if RxNorm still describes it as a drug
  const props: any = await (await fetch(`https://rxnav.nlm.nih.gov/REST/rxcui/${id}/properties.json`)).json();
  return ['SCD', 'SBD', 'GPCK', 'BPCK'].includes(props.properties?.tty) ? id : null;
}

// 3. What the official label says: openFDA drug label API (US FDA), free
async function label(id: string) {
  const r = await fetch(`https://api.fda.gov/drug/label.json?search=openfda.rxcui:%22${id}%22&limit=1`);
  if (!r.ok) return null;
  const doc: any = (await r.json()).results?.[0];
  return doc && { set_id: doc.set_id, boxed_warning: doc.boxed_warning?.[0]?.slice(0, 120), has_interactions_section: !!doc.drug_interactions };
}

for (const m of meds) {
  const id = await rxcui(m.display);
  console.log(JSON.stringify({ record: { display: m.display, atc: m.code, dosage: m.dosage }, rxnorm: id, fda_label: id ? await label(id) : null }));
}

Sortie pour un patient qui a signalé la metformine et l'énalapril :

{"record":{"display":"Metformin 500 mg tablet","atc":"A10BA02","dosage":"500 mg twice a day"},"rxnorm":"861007",
 "fda_label":{"set_id":"011de1a5-…","boxed_warning":"BOXED WARNING WARNING: LACTIC ACIDOSIS …","has_interactions_section":true}}
{"record":{"display":"Enalapril maleate 10 mg oral tablet","atc":"C09AA02","dosage":"10 mg once a day"},"rxnorm":"858817",
 "fda_label":{"set_id":"074fe718-…","boxed_warning":"WARNING: FETAL TOXICITY …","has_interactions_section":true}}

Ce que nous avons appris en l'exécutant. Avec le nom écrit comme "Enalapril 10 mg tablet", la correspondance approximative de RxNorm a renvoyé RXCUI 328290, un concept que RxNorm ne décrit plus, sans étiquette associée. Avec le nom clinique complet, "enalapril maleate 10 mg oral tablet", il a renvoyé 858817, un médicament clinique actuel avec une étiquette. Les noms saisis par les personnes sont approximatifs ; vérifiez à quoi correspond une correspondance, stockez le code une fois qu'il est confirmé et montrez à la personne ce qui a été mis en correspondance.

Règles pour les agents IA

  1. Ne laissez jamais le modèle fournir des informations sur les médicaments à partir de sa mémoire. Donnez-lui la liste du patient issue du dossier et le texte pertinent d'une source faisant autorité, et demandez-lui de les citer.
  2. Gardez les deux sources visibles. « Vous prenez de la metformine (votre dossier, saisi par vous le 3 mars) » et « l'étiquette de la FDA met en garde contre l'acidose lactique (étiquette définie 011de1a5…) » sont des affirmations différentes avec des propriétaires différents.
  3. Élargissez les champs d'application. Un agent qui n'a besoin que de la liste des médicaments devrait obtenir un accès en lecture à MedicationStatement, et non à l'ensemble du dossier. Avec Anpheros, il s'agit d'une portée de consentement ou des outils en lecture seule du serveur MCP.
  4. Ne répondez pas à ce qui nécessite un clinicien. Les interactions, les changements de dose et l'arrêt d'un médicament doivent être adressés à un pharmacien ou à un médecin ; l'agent peut préparer la question.

Où Anpheros s'intègre

Anpheros stocke la liste des médicaments : MedicationStatement et MedicationAdministration avec des codes ATC ou autres, qui a enregistré chaque élément, l'historique et le consentement pour d'autres applications ; l'API de contexte inclut les médicaments actifs dans le résumé qu'elle prépare pour un modèle, et le serveur MCP les expose aux agents en lecture seule. Il inclut un petit sous-ensemble ATC (environ 50 médicaments courants) pour nommer automatiquement les codes ; tout autre code est accepté, sans nom automatique.

Ce n'est pas une base de données de médicaments : elle ne fournit pas d'étiquettes, d'interactions, de posologie ou de contre-indications, et elle ne prend pas en charge les ressources MedicationRequest ou Medication aujourd'hui.

Foire aux questions

Quelle ressource FHIR doit être utilisée pour une liste de médicaments ?

MedicationStatement pour ce qu'une personne prend ou a pris, y compris les médicaments auto-déclarés par le patient. Les prescriptions sont MedicationRequest ; les doses individuelles sont MedicationAdministration.

Existe-t-il une API de base de données de médicaments gratuite ?

Aux États-Unis, RxNorm (NLM) pour les identifiants et les noms de médicaments, et openFDA pour les étiquettes de produits officielles, sont gratuits. En Europe, l'EMA et les agences nationales publient des informations sur les produits. La vérification complète des interactions nécessite généralement une base de connaissances sous licence.

Comment un agent IA doit-il obtenir des informations sur les médicaments ?

À partir de deux outils : l'un qui lit la liste de médicaments du patient à partir de son dossier avec consentement, et l'autre qui recherche une source de médicaments faisant autorité. L'agent doit citer les deux et laisser les décisions cliniques à un professionnel.

Anpheros vérifie-t-il les interactions médicamenteuses ?

Non. Il stocke ce qu'une personne prend, avec la provenance et le consentement. La vérification des interactions relève d'une source de connaissances sur les médicaments et d'un clinicien.

Liens connexes

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy