AnpherosAnpheros PlatformDevelopers

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

Datos de medicación para aplicaciones y agentes de IA

Listas de medicación de pacientes frente a conocimiento de fármacos: recursos FHIR, RxNorm, ATC, fuentes openFDA y EMA, y una unión probada de un registro FHIR con etiquetas RxNorm y FDA.

El software sanitario necesita dos tipos diferentes de datos de medicación: la lista de medicación del paciente —lo que toma esta persona, desde cuándo, a qué dosis, quién lo registró— y el conocimiento de fármacos —lo que contiene un producto, su etiqueta oficial, advertencias e interacciones. El primero pertenece al registro del paciente; el segundo proviene de bases de datos autorizadas de fármacos. Mezclarlos es la razón por la que los agentes de IA terminan afirmando hechos sobre fármacos extraídos de la memoria del modelo. Esta página explica ambos, los recursos y sistemas de códigos FHIR R4 involucrados, qué fuentes públicas existen en EE. UU. y la UE, y un ejemplo funcional que une la lista de un paciente de un registro FHIR con RxNorm y la etiqueta de la FDA.

Dos tipos de datos de medicación

Lista de medicación del paciente Conocimiento del fármaco
Respuestas ¿Qué toma Ana, desde cuándo, con qué frecuencia? ¿Qué es la metformina 500 mg, qué advierte su etiqueta?
Cambios Cuando el paciente o un clínico lo actualiza Cuando un regulador o editor lo actualiza
Reside en El registro del paciente (EHR, PHR, servidor FHIR) Bases de datos y terminologías de fármacos
FHIR MedicationStatement, MedicationRequest, MedicationAdministration, Medication Mayormente fuera del registro; la información del producto puede ser FHIR en sí misma
Quién puede leerlo Solo con el consentimiento del paciente Público o con licencia

Una aplicación o agente que responde "¿puedo tomar ibuprofeno con mi pastilla para la presión arterial?" necesita ambos: la lista del paciente para saber qué pastilla, y una fuente de conocimiento de fármacos para saber qué se conoce sobre la combinación, además de un clínico o farmacéutico para la respuesta.

Recursos FHIR para la lista de medicamentos

El medicamento se codifica: en EE. UU. con RxNorm (de la National Library of Medicine) y códigos de producto NDC; internacionalmente con la clasificación ATC de la OMS; en Europa también con códigos de producto nacionales y, cada vez más, la información electrónica de productos basada en FHIR de la EMA. Una declaración puede llevar varias codificaciones para el mismo medicamento.

Fuentes de conocimiento de medicamentos

Estados Unidos

Unión Europea

Las interacciones son la parte más difícil. NLM retiró su API de interacciones medicamentosas alrededor de enero de 2024, y la verificación integral de interacciones hoy en día depende de bases de conocimiento clínicas con licencia. La sección de interacciones de una etiqueta es texto escrito para clínicos, no un verificador.

Uniendo el registro con conocimiento de medicamentos

El ejemplo lee los medicamentos activos de un paciente desde Anpheros, resuelve cada nombre a un concepto RxNorm y obtiene la etiqueta de la FDA. Se ejecutó contra una instancia local de la plataforma y las APIs en vivo de RxNorm y openFDA.

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 }));
}

Salida para un paciente que reportó metformina y enalapril:

{"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}}

Lo que aprendimos al ejecutarlo. Con el nombre escrito como "Enalapril 10 mg tablet", la coincidencia aproximada de RxNorm devolvió RXCUI 328290, un concepto que RxNorm ya no describe, sin ninguna etiqueta asociada. Con el nombre clínico completo, "enalapril maleate 10 mg oral tablet", devolvió 858817, un medicamento clínico actual con una etiqueta. Los nombres escritos por las personas son aproximados; verifique a qué se resuelve una coincidencia, almacene el código una vez que se confirme y muestre a la persona lo que se ha emparejado.

Reglas para agentes de IA

  1. Nunca permita que el modelo proporcione datos de medicamentos de memoria. Entréguele la lista del paciente del registro y el texto relevante de una fuente autorizada, y pídale que los cite.
  2. Mantenga las dos fuentes visibles. "Usted toma metformina (su registro, ingresado por usted el 3 de marzo)" y "la etiqueta de la FDA advierte sobre la acidosis láctica (etiqueta establecida 011de1a5…)" son afirmaciones diferentes con propietarios diferentes.
  3. Acote los alcances. Un agente que solo necesita la lista de medicamentos debe obtener acceso de lectura a MedicationStatement, no a todo el registro. Con Anpheros, eso es un alcance de consentimiento o las herramientas de solo lectura del servidor MCP.
  4. No responda lo que necesita un clínico. Las interacciones, los cambios de dosis y la interrupción de un medicamento deben dirigirse a un farmacéutico o médico; el agente puede preparar la pregunta.

Dónde encaja Anpheros

Anpheros almacena la lista de medicamentos: MedicationStatement y MedicationAdministration con códigos ATC u otros, quién registró cada elemento, historial y consentimiento para otras aplicaciones; la API de contexto incluye medicamentos activos en el resumen que prepara para un modelo, y el servidor MCP los expone a los agentes en modo de solo lectura. Incluye un pequeño subconjunto de ATC (aproximadamente 50 medicamentos comunes) para nombrar códigos automáticamente; se acepta cualquier otro código, sin nombre automático.

No es una base de datos de medicamentos: no proporciona etiquetas, interacciones, dosificación o contraindicaciones, y hoy en día no admite recursos MedicationRequest ni Medication.

Preguntas frecuentes

¿Qué recurso FHIR debe usar una lista de medicamentos?

MedicationStatement para lo que una persona toma o ha tomado, incluyendo medicamentos reportados por el paciente. Las prescripciones son MedicationRequest; las dosis individuales son MedicationAdministration.

¿Existe una API de base de datos de medicamentos gratuita?

En EE. UU., RxNorm (NLM) para identificadores y nombres de medicamentos, y openFDA para etiquetas de productos oficiales, son gratuitos. En Europa, la EMA y las agencias nacionales publican información de productos. La verificación integral de interacciones generalmente requiere una base de conocimiento con licencia.

¿Cómo debe un agente de IA obtener información sobre medicamentos?

De dos herramientas: una que lee la lista de medicamentos del paciente de su registro con consentimiento, y otra que consulta una fuente de medicamentos autorizada. El agente debe citar ambas y dejar las decisiones clínicas a un profesional.

¿Anpheros verifica las interacciones farmacológicas?

No. Almacena lo que una persona toma, con procedencia y consentimiento. La verificación de interacciones pertenece a una fuente de conocimiento de medicamentos y a un clínico.

Relacionado

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