# Dati sui farmaci per app e agenti AI

> Liste di farmaci del paziente vs conoscenza dei farmaci: risorse FHIR, RxNorm, ATC, fonti openFDA ed EMA, e un join testato di un record FHIR con RxNorm ed etichette FDA.

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

**Il software sanitario necessita di due tipi diversi di dati sui farmaci: la lista dei farmaci del paziente — cosa assume questa persona, da quando, a quale dose, chi l'ha registrata — e la conoscenza dei farmaci — cosa contiene un prodotto, la sua etichetta ufficiale, avvertenze e interazioni.** La prima appartiene al record del paziente; la seconda proviene da database autorevoli sui farmaci. Mescolarle è il motivo per cui gli agenti AI finiscono per affermare fatti sui farmaci dalla memoria del modello. Questa pagina spiega entrambi, le risorse FHIR R4 e i sistemi di codifica coinvolti, quali fonti pubbliche esistono negli Stati Uniti e nell'UE, e un esempio funzionante che unisce la lista di un paziente da un record FHIR con RxNorm e l'etichetta FDA.

## Due tipi di dati relativi ai farmaci

| | Elenco dei farmaci del paziente | Conoscenza dei farmaci |
|---|---|---|
| Risposte | Cosa prende Ana, da quando, con quale frequenza? | Cos'è la metformina da 500 mg, quali sono le avvertenze sull'etichetta? |
| Modifiche | Quando il paziente o un clinico lo aggiorna | Quando un regolatore o un editore lo aggiorna |
| Risiede in | Il record del paziente (EHR, PHR, server FHIR) | Database e terminologie dei farmaci |
| FHIR | `MedicationStatement`, `MedicationRequest`, `MedicationAdministration`, `Medication` | Principalmente al di fuori del record; le informazioni sul prodotto possono essere esse stesse FHIR |
| Chi può leggerlo | Solo con il consenso del paziente | Pubblico o con licenza |

Un'app o un agente che risponde "posso prendere l'ibuprofene con la mia pillola per la pressione sanguigna?" necessita di entrambi: l'elenco del paziente per sapere di quale pillola si tratta e una fonte di conoscenza sui farmaci per sapere cosa è noto sulla combinazione — più un clinico o un farmacista per la risposta.

## Risorse FHIR per l'elenco dei farmaci

- **MedicationStatement:** il farmaco che la persona sta assumendo, ha assunto o ha interrotto (riportato dal paziente o registrato da un clinico). La risorsa usuale per un PHR o un elenco di riconciliazione.
- **MedicationRequest:** una prescrizione o un ordine.
- **MedicationAdministration:** una singola dose somministrata o assunta (o saltata), utile per l'aderenza.
- **Medication:** il prodotto stesso, quando sono necessari maggiori dettagli rispetto a un codice (ingredienti, forma, lotto).

Il farmaco è codificato: negli Stati Uniti con **RxNorm** (dalla National Library of Medicine) e codici prodotto NDC; a livello internazionale con la classificazione **ATC** dell'OMS; in Europa anche con codici prodotto nazionali e, sempre più spesso, con le informazioni elettroniche sui prodotti basate su FHIR dell'EMA. Una dichiarazione può contenere diverse codifiche per lo stesso farmaco.

## Fonti di conoscenza sui farmaci

**Stati Uniti**

- [RxNorm API](https://lhncbc.nlm.nih.gov/RxNav/APIs/RxNormAPIs.html) (NLM): nomi e identificatori normalizzati (RXCUI) per farmaci clinici; gratuito e, con un'eccezione, non è necessaria alcuna licenza.
- [openFDA drug label API](https://open.fda.gov/apis/drug/label/) (FDA): le etichette di prodotto strutturate — indicazioni, avvertenze boxed, controindicazioni, sezioni sulle interazioni farmacologiche — ricercabili tramite RXCUI.
- DailyMed (NLM): le stesse etichette per la consultazione da parte degli utenti.

**Unione Europea**

- L'Agenzia europea per i medicinali pubblica informazioni sui prodotti per i medicinali autorizzati a livello centrale e le sue informazioni elettroniche sui prodotti (ePI) sono basate su FHIR. I prodotti autorizzati a livello nazionale si trovano nei registri nazionali.
- I codici ATC e le dosi giornaliere definite sono mantenuti dal WHO Collaborating Centre for Drug Statistics Methodology.

Le **interazioni** sono la parte più difficile. NLM ha ritirato la sua API per le interazioni farmacologiche intorno a gennaio 2024 e il controllo completo delle interazioni oggi si basa su basi di conoscenza clinica con licenza. La sezione delle interazioni di un'etichetta è testo scritto per i medici, non un sistema di controllo.

## Unire il record con la conoscenza dei farmaci

L'esempio legge i farmaci attivi di un paziente da Anpheros, risolve ogni nome in un concetto RxNorm e recupera l'etichetta FDA. È stato eseguito su un'istanza locale della piattaforma e sulle API live RxNorm e openFDA.

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

Output per un paziente che ha segnalato metformina ed 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}}
```

**Cosa abbiamo imparato eseguendolo.** Con il nome scritto come "Enalapril 10 mg tablet", la corrispondenza approssimativa di RxNorm ha restituito RXCUI 328290, un concetto che RxNorm non descrive più, senza alcuna etichetta associata. Con il nome clinico completo, "enalapril maleate 10 mg oral tablet", ha restituito 858817, un farmaco clinico corrente con un'etichetta. I nomi digitati dalle persone sono approssimativi; verificare a cosa si risolve una corrispondenza, memorizzare il codice una volta confermato e mostrare alla persona ciò che è stato trovato.

## Regole per gli agenti AI

1. **Non consentire mai al modello di fornire dati sui farmaci dalla memoria.** Fornisci l'elenco del paziente dal record e il testo pertinente da una fonte autorevole, e chiedi di citarli.
2. **Mantieni visibili le due fonti.** "Prendi la metformina (il tuo record, inserito da te il 3 marzo)" e "l'etichetta FDA avverte sull'acidosi lattica (etichetta impostata 011de1a5…)" sono affermazioni diverse con proprietari diversi.
3. **Restringi gli ambiti.** Un agente che necessita solo dell'elenco dei farmaci dovrebbe ottenere l'accesso in lettura a `MedicationStatement`, non all'intero record. Con Anpheros, si tratta di un ambito di consenso o degli strumenti di sola lettura del server MCP.
4. **Non rispondere a ciò che richiede un clinico.** Interazioni, modifiche del dosaggio e interruzione di un farmaco vanno a un farmacista o a un medico; l'agente può preparare la domanda.

## Dove si inserisce Anpheros

Anpheros memorizza l'elenco dei farmaci: `MedicationStatement` e `MedicationAdministration` con codici ATC o altri codici, chi ha registrato ogni elemento, la cronologia e il consenso per altre app; l'[API di contesto](https://developers.anpheros.com/it/guides/ai-healthcare) include i farmaci attivi nel riepilogo che prepara per un modello, e il [server MCP](https://developers.anpheros.com/it/guides/mcp) li espone agli agenti in modalità read-only. Include un piccolo sottoinsieme di ATC (circa 50 farmaci comuni) per nominare automaticamente i codici; qualsiasi altro codice viene accettato, senza un nome automatico.

Non è un database di farmaci: non fornisce etichette, interazioni, dosaggi o controindicazioni e oggi non supporta le risorse `MedicationRequest` o `Medication`.

## Domande frequenti

### Quale risorsa FHIR dovrebbe utilizzare un elenco di farmaci?
`MedicationStatement` per ciò che una persona assume o ha assunto, inclusi i farmaci auto-riferiti dal paziente. Le prescrizioni sono `MedicationRequest`; le singole dosi sono `MedicationAdministration`.

### Esiste un'API gratuita per database di farmaci?
Negli Stati Uniti, RxNorm (NLM) per identificatori e nomi di farmaci, e openFDA per etichette di prodotti ufficiali, sono gratuiti. In Europa, l'EMA e le agenzie nazionali pubblicano informazioni sui prodotti. Il controllo completo delle interazioni necessita generalmente di una knowledge base con licenza.

### Come dovrebbe un agente AI ottenere informazioni sui farmaci?
Da due strumenti: uno che legge l'elenco dei farmaci del paziente dal suo record con il consenso, e uno che cerca una fonte autorevole di farmaci. L'agente dovrebbe citare entrambi e lasciare le decisioni cliniche a un professionista.

### Anpheros controlla le interazioni farmacologiche?
No. Memorizza ciò che una persona assume, con provenienza e consenso. Il controllo delle interazioni spetta a una fonte di conoscenza sui farmaci e a un clinico.

## Correlati

- [Agenti AI e dati medici](https://developers.anpheros.com/it/guides/ai-agents-medical-data)
- [Come concedere a un agente AI l'accesso alle cartelle cliniche](https://developers.anpheros.com/it/guides/ai-agent-access-medical-records)
- [Server MCP FHIR per agenti AI](https://developers.anpheros.com/it/guides/mcp)
- [Sistemi di codifica FHIR](https://developers.anpheros.com/it/guides/fhir-code-systems)
- [Esempio MedicationStatement FHIR R4](https://developers.anpheros.com/tools/fhir-examples/medication-statement)
