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

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

Source: https://developers.anpheros.com/pt/guides/medication-data-ai-agents

**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

- **MedicationStatement:** a pessoa está a tomar, tomou ou deixou de tomar um medicamento (relatado pelo paciente ou registado por um clínico). O recurso usual para um PHR ou uma lista de reconciliação.
- **MedicationRequest:** uma prescrição ou ordem.
- **MedicationAdministration:** uma dose administrada ou tomada (ou omitida), útil para adesão.
- **Medication:** o produto em si, quando é necessário mais detalhe do que um código (ingredientes, forma, lote).

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**

- [RxNorm API](https://lhncbc.nlm.nih.gov/RxNav/APIs/RxNormAPIs.html) (NLM): nomes e identificadores normalizados (RXCUI) para medicamentos clínicos; gratuito e, com uma exceção, não é necessária licença.
- [openFDA drug label API](https://open.fda.gov/apis/drug/label/) (FDA): os rótulos de produtos estruturados — indicações, avisos em caixa, contraindicações, secções de interações medicamentosas — pesquisáveis por RXCUI.
- DailyMed (NLM): os mesmos rótulos para leitura.

**União Europeia**

- A Agência Europeia de Medicamentos publica informações sobre produtos para medicamentos autorizados centralmente, e as suas informações eletrónicas sobre o produto (ePI) são baseadas em FHIR. Produtos autorizados a nível nacional encontram-se em registos nacionais.
- Os códigos ATC e as doses diárias definidas são mantidos pelo Centro Colaborador da OMS para a Metodologia de Estatísticas de Medicamentos.

**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.

```ts
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](https://developers.anpheros.com/pt/guides/ai-healthcare) inclui medicação ativa no resumo que prepara para um modelo, e o [servidor MCP](https://developers.anpheros.com/pt/guides/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

- [Agentes de IA e dados médicos](https://developers.anpheros.com/pt/guides/ai-agents-medical-data)
- [Como conceder a um agente de IA acesso a registos médicos](https://developers.anpheros.com/pt/guides/ai-agent-access-medical-records)
- [Servidor FHIR MCP para agentes de IA](https://developers.anpheros.com/pt/guides/mcp)
- [Sistemas de código FHIR](https://developers.anpheros.com/pt/guides/fhir-code-systems)
- [Exemplo de FHIR R4 MedicationStatement](https://developers.anpheros.com/tools/fhir-examples/medication-statement)
