Learn R Programming

Why Use mds?

Medical device event data are messy.

Common challenges include:

  • Performing ongoing surveillance on messy data
  • Quickly answering simple questions such as:
    • Are events trending up?
    • How did my trends look 1 year ago? 2 years ago?
  • Incompatibility of various sources of device-events
  • Difficulty integrating exposures, a.k.a. denominator data
  • Understanding all the possible combinations to analyze
  • Application of disproportionality analysis (DPA)
  • Documentation of analyses in a auditable, reproducible way

How Do I Use mds?

The mds package provides a standardized framework to address these challenges:

  • Standardize events involving medical devices
  • Standardize exposures of the device (also known as opportunities for an event to occur, or event denominator)
  • Enumerate possible analyses in a flexible way
  • Generate times series of analyses for trending over time
  • Set up analyses for easy application of disproportionality analysis (DPA)
  • Save all files in lightweight R files for auditability, documentation, and reproducibility

Note on Statistical Algorithms

mds data and analysis standards allow for seamless application of various statistical trending algorithms via the mdsstat package (under development).

Raw Data to Trending in 4 Steps

The general workflow to go from data to trending over time is as follows:

  1. Use deviceevent() to standardize device-event data.
  2. Use exposure() to standardize exposure data (optional).
  3. Use define_analyses() to enumerate possible analysis combinations.
  4. Use time_series() to generate counts (and/or rates) by time based on your defined analyses.

Live Example

library(mds)

# Step 1 - Device Events
de <- deviceevent(
  maude,
  time="date_received",
  device_hierarchy=c("device_name", "device_class"),
  event_hierarchy=c("event_type", "medical_specialty_description"),
  key="report_number",
  covariates="region",
  descriptors="_all_")

# Step 2 - Exposures (Optional step)
ex <- exposure(
  sales,
  time="sales_month",
  device_hierarchy="device_name",
  match_levels="region",
  count="sales_volume")

# Step 3 - Define Analyses
da <- define_analyses(
  de,
  device_level="device_name",
  exposure=ex,
  covariates="region")

# Step 4 - Time Series
ts <- time_series(
  da,
  deviceevents=de,
  exposure=ex)

Plot Time Series of Counts and Rates

plot(ts[[4]], "rate", type='l')

Copy Link

Version

Install

install.packages('mds')

Monthly Downloads

199

Version

0.3.2

License

GPL-3

Maintainer

Gary Chung

Last Published

June 15th, 2020

Functions in mds (0.3.2)

deviceevent

MD-PMS Device Event Data Frame
input_param_checker

Check Input Parameters
define_analyses

Assess Analyses Definitions
define_analyses_dataframe

Create Data Frame from Analyses Definitions
exposure

MD-PMS Exposure Data Frame
char_to_df

Character Vector to Header of Empty Data Frame
convert_date

Convert to Acceptable Date
fNA

Min/Max With All NA's Allowed Min and Max functions that allows the vector x to be NA, where f is min or max
ifelse_cp

Class-Preserving If-Else If-Else function preserving T & F classes
maude

Bone Cement MAUDE Events in 2017
mds_ts

Example List of mds_ts Time Series Objects
next_dev

Return next level up device
summary.mds_das

Summarize a Collection of MD-PMS Defined Analyses Prints basic counts and date ranges by various analysis factors as defined in the original define_analyses() call.
sales

Simulated Device Sales Data
time_series

Generate Time Series from Defined Analysis or Analyses
next_ev

Return next level up event
plot.mds_ts

Plot MD-PMS Time Series