openFDA makes querying the openFDA API from R a breeze. The API itself serves publicly available data from the FDA about foods, drugs, devices, and more. This data includes data such as recall enforcement reports, adverse events, manufacturer details, and - again - even more! Note that the data on openFDA has not been validated for clinical or production use.
The easiest way to install openFDA is to get it from CRAN:
install.packages("openFDA")
# install.packages("pak")
pak::pkg_install("simpar1471/openFDA")
library(openFDA)
The full documentation for the API is online, so look at the openFDA website to get a full feel for the API itself.
The R package lets you query the API directly from R, using httr2.
search <- openFDA(
search = "openfda.generic_name:furosemide",
limit = 5
)
search
#> <httr2_response>
#> GET
#> https://api.fda.gov/drug/drugsfda.json?api_key=[API_KEY]&search=openfda.generic_name:furosemide&limit=5
#> Status: 200 OK
#> Content-Type: application/json
#> Body: In memory (26060 bytes)
The underlying response is JSON data - you can use
httr2::resp_body_json()
to get the JSON data as a nested list, then
extract the fields you want.
json <- httr2::resp_body_json(search)
json$results[[1]]$openfda$brand_name
#> [[1]]
#> [1] "FUROSCIX"
json$results[[1]]$openfda$pharm_class_epc
#> [[1]]
#> [1] "Loop Diuretic [EPC]"
I’ve found purrr to be very useful for parsing this data quickly.
purrr::map_chr(
.x = json$results,
.f = \(result) purrr::pluck(result, "openfda", "manufacturer_name", 1)
)
#> [1] "scPharmaceuticals Inc."
#> [2] "Graviti Pharmaceuticals Private Limited"
#> [3] "Hikma Pharmaceuticals USA Inc."
#> [4] "Civica, Inc."
#> [5] "Eugia US LLC"
The openfda package from
rOpenHealth
also wraps the openFDA API from R, and is available on
GitHub. It’s got a pretty neat structure whereby you build up a query
using individual functions for each parameter - though it’s my personal
preference to keep these as parameters to a single function. It also
makes results available in data frames, which is nice, but I think
working with the response object and parsing the underlying JSON
yourself permits more powerful interactions with the API.
There is also FDAopenR, which I couldn’t quite wrap my head around. The package appears to be in working order, though!
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.