AnpherosAnpheros PlatformDevelopers

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

Dados de medicação para aplicações e agentes de IA

Listas de medicação do paciente vs. conhecimento de medicamentos: recursos FHIR, RxNorm, ATC, fontes openFDA e EMA, e uma junção testada de um registo FHIR com rótulos RxNorm e FDA.

O software de saúde necessita de dois tipos diferentes de dados de medicação: a lista de medicação do paciente — o que essa pessoa toma, desde quando, a que dose, quem o registou — e o conhecimento sobre medicamentos — o que um produto contém, o seu rótulo oficial, avisos e interações. O primeiro pertence ao registo do paciente; o segundo provém de bases de dados autorizadas de medicamentos. Misturá-los é a razão pela qual os agentes de IA acabam por afirmar factos sobre medicamentos a partir da memória do modelo. Esta página explica ambos, os recursos FHIR R4 e os sistemas de código envolvidos, que fontes públicas existem nos EUA e na UE, e um exemplo funcional que junta a lista de um paciente de um registo FHIR com RxNorm e o rótulo da FDA.

Dois tipos de dados de medicação

Lista de medicação do paciente Conhecimento sobre o medicamento
Respostas O que a Ana toma, desde quando, com que frequência? O que é metformina 500 mg, quais são os avisos no rótulo?
Alterações Quando o paciente ou um clínico a atualiza Quando um regulador ou editor a atualiza
Reside em O registo do paciente (EHR, PHR, servidor FHIR) Bases de dados de medicamentos e terminologias
FHIR MedicationStatement, MedicationRequest, MedicationAdministration, Medication Principalmente fora do registo; a informação do produto pode ser ela própria FHIR
Quem pode ler Apenas com o consentimento do paciente Público ou licenciado

Uma aplicação ou agente que responda "posso tomar ibuprofeno com o meu comprimido para a tensão arterial?" necessita de ambos: a lista do paciente para saber qual o comprimido, e uma fonte de conhecimento sobre medicamentos para saber o que é conhecido sobre a combinação — mais um clínico ou farmacêutico para a resposta.

Recursos FHIR para a lista de medicação

O medicamento é codificado: nos EUA com RxNorm (da National Library of Medicine) e códigos de produto NDC; internacionalmente com a classificação ATC da OMS; na Europa também com códigos de produto nacionais e, cada vez mais, com a informação eletrónica de produto baseada em FHIR da EMA. Uma declaração pode conter várias codificações para o mesmo medicamento.

Fontes de conhecimento sobre medicamentos

Estados Unidos

União Europeia

Interações são a parte mais difícil. A NLM desativou a sua API de interações medicamentosas por volta de janeiro de 2024, e a verificação abrangente de interações depende hoje de bases de conhecimento clínicas licenciadas. A secção de interações de um rótulo é texto escrito para clínicos, não um verificador.

Juntando o registo com conhecimento de medicamentos

O exemplo lê os medicamentos ativos de um paciente do Anpheros, resolve cada nome para um conceito RxNorm e obtém o rótulo da FDA. Foi executado contra uma instância local da plataforma e as APIs RxNorm e openFDA em tempo real.

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

Saída para um paciente que relatou metformina e 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}}

O que aprendemos ao executá-lo. Com o nome escrito como "Enalapril 10 mg tablet", a correspondência aproximada do RxNorm retornou RXCUI 328290, um conceito que o RxNorm já não descreve, sem rótulo associado. Com o nome clínico completo, "enalapril maleate 10 mg oral tablet", retornou 858817, um medicamento clínico atual com um rótulo. Os nomes digitados por pessoas são aproximados; verifique a que uma correspondência se resolve, armazene o código assim que for confirmado e mostre à pessoa o que foi correspondido.

Regras para agentes de IA

  1. Nunca permita que o modelo forneça factos sobre medicamentos a partir da memória. Forneça-lhe a lista do paciente do registo e o texto relevante de uma fonte autorizada, e peça-lhe para citá-los.
  2. Mantenha as duas fontes visíveis. "Toma metformina (o seu registo, introduzido por si em 3 de março)" e "o rótulo da FDA adverte sobre acidose láctica (rótulo definido 011de1a5…)" são alegações diferentes com proprietários diferentes.
  3. Restrinja os âmbitos. Um agente que necessite apenas da lista de medicamentos deve obter acesso de leitura a MedicationStatement, não ao registo completo. Com Anpheros, isso é um âmbito de consentimento ou as ferramentas de apenas leitura do servidor MCP.
  4. Não responda ao que necessita de um clínico. Interações, alterações de dose e interrupção de um medicamento devem ser encaminhados para um farmacêutico ou médico; o agente pode preparar a questão.

Onde o Anpheros se encaixa

O Anpheros armazena a lista de medicação: MedicationStatement e MedicationAdministration com códigos ATC ou outros, quem registou cada item, histórico e consentimento para outras aplicações; a API de contexto inclui medicação ativa no resumo que prepara para um modelo, e o servidor MCP expõe-nas aos agentes em modo de apenas leitura. Inclui um pequeno subconjunto ATC (cerca de 50 medicamentos comuns) para nomear códigos automaticamente; qualquer outro código é aceite, sem nome automático.

Não é uma base de dados de medicamentos: não fornece rótulos, interações, dosagem ou contraindicações, e não suporta recursos MedicationRequest ou Medication atualmente.

Perguntas Frequentes

Qual recurso FHIR deve ser usado para uma lista de medicação?

MedicationStatement para o que uma pessoa toma ou tomou, incluindo medicamentos reportados pelo paciente. Prescrições são MedicationRequest; doses individuais são MedicationAdministration.

Existe uma API gratuita de base de dados de medicamentos?

Nos EUA, RxNorm (NLM) para identificadores e nomes de medicamentos, e openFDA para rótulos oficiais de produtos, são gratuitos. Na Europa, a EMA e agências nacionais publicam informações de produtos. A verificação abrangente de interações geralmente necessita de uma base de conhecimento licenciada.

Como um agente de IA deve obter informações sobre medicação?

A partir de duas ferramentas: uma que lê a lista de medicação do paciente do seu registo com consentimento, e outra que consulta uma fonte de medicamentos autoritativa. O agente deve citar ambas e deixar as decisões clínicas para um profissional.

O Anpheros verifica interações medicamentosas?

Não. Armazena o que uma pessoa toma, com proveniência e consentimento. A verificação de interações pertence a uma fonte de conhecimento de medicamentos e a um 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