# Openfda Human Drug

> Query FDA drug labeling data via openFDA. Use whenever the user asks about drug prescribing information — indications, warnings, dosage, adverse reactions, contraindications, or administration routes. Supports single or batch lookup by brand/generic name or by indication/condition.

- Skill: `gabrielmoreira/openfda-human-drug` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add gabrielmoreira/openfda-human-drug`
- Raw SKILL.md: https://api.skillmd.com/api/skills/gabrielmoreira/openfda-human-drug/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: gabrielmoreira (https://skillmd.com/u/gabrielmoreira)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/gabrielmoreira/openfda-human-drug

---


# openFDA Human Drug Skill

Query structured SPL (Structured Product Labeling) data from the FDA. No API key needed (≤1 000 req/day).

## Input → Detection

| Input Example | Routed To |
|---|---|
| `"ASPIRIN"` or `["METFORMIN","LISINOPRIL"]` | `search_drug` — brand/generic name lookup |
| `"hypertension"` or `["diabetes","migraine"]` | `search_by_indication` — indication text search |
| *(no input)* | `count_by_route` — top administration routes |

All search functions accept **a single string or a list of strings**.

## API

| Function | Input | Returns |
|---|---|---|
| `search_drug(query, limit)` | str \| list[str], int | `{term: [label_dicts]}` |
| `search_by_indication(query, limit)` | str \| list[str], int | `{condition: [label_dicts]}` |
| `count_by_route(top_n)` | int | `[{term, count}]` |
| `summarize(results)` | dict from above | compact multi-line text |

Each `label_dict` contains: `brand_name`, `generic_name`, `manufacturer`, `route`, `substance_name`, `product_type`, `indications`, `contraindications`, `warnings`, `dosage`, `adverse_reactions`.

## Usage

See `if __name__ == "__main__"` block in `05_openFDA_Human_Drug.py` for runnable examples covering: single drug, batch drugs, single indication, batch indications, route counts, and raw JSON output.

## Notes

- Long text fields (`indications`, `warnings`, etc.) are truncated to keep payloads concise.
- On HTTP/query errors the result dict contains an `error` key for that term.
- Endpoint: `https://api.fda.gov/drug/label.json`

