## ---- echo=FALSE, message=FALSE, warning=FALSE, results='hide'----------------
# Various Rmarkdown output options:
# center figures and reduce their file size:
knitr::opts_chunk$set(fig.align = "center", dpi=100, dev="jpeg"); 

## ----eval=FALSE---------------------------------------------------------------
#  plot_interactive_cma()

## ----eval=FALSE---------------------------------------------------------------
#  plot_interactive_cma(data=med.events, # included sample dataset
#                       cma.class="simple", # simple cma, defaults to CMA0
#                       # The important column names:
#                       ID.colname="PATIENT_ID",
#                       event.date.colname="DATE",
#                       event.duration.colname="DURATION",
#                       event.daily.dose.colname="PERDAY",
#                       medication.class.colname="CATEGORY",
#                       # The format of dates in the "DATE" column:
#                       date.format="%m/%d/%Y");

## ----eval=FALSE---------------------------------------------------------------
#  # The R code corresponding to the currently displayed Shiny plot:
#  #
#  # Extract the data for the selected 2 patient(s) with ID(s):
#  # "1", "2"
#  #
#  # We denote here by DATA the data you are using in the Shiny plot.
#  # This was manually defined as an object of class data.frame
#  # (or derived from it, such a data.table) that was already in
#  # memory under the name 'med.events'.
#  # Assuming this object still exists with the same name, then:
#  
#  DATA <- med.events;
#  
#  # These data has 5 columns, and contains info for 100 patients.
#  #
#  # To allow using data from other sources than a "data.frame"
#  # and other similar structures (for example, from a remote SQL
#  # database), we use a metchanism to request the data for the
#  # selected patients that uses a function called
#  # "get.data.for.patients.fnc()" which you may have redefined
#  # to better suit your case (chances are, however, that you are
#  # using its default version appropriate to the data source);
#  # in any case, the following is its definition:
#  get.data.for.patients.fnc <- function(patientid, d, idcol, cols=NA, maxrows=NA) d[ d[[idcol]] %in% patientid, ]
#  # Try to extract the data only for the selected patient ID(s):
#  .data.for.selected.patients. <- get.data.for.patients.fnc(
#      c("1", "2"),
#      DATA, ### don't forget to put here your REAL DATA! ###
#      "PATIENT_ID"
#  );
#  # Compute the appropriate CMA:
#  cma <- CMA9(data=.data.for.selected.patients.,
#              # (please note that even if some parameters are
#              # not relevant for a particular CMA type, we
#              # nevertheless pass them as they will be ignored)
#              ID.colname="PATIENT_ID",
#              event.date.colname="DATE",
#              event.duration.colname="DURATION",
#              event.daily.dose.colname="PERDAY",
#              medication.class.colname="CATEGORY",
#              carry.only.for.same.medication=FALSE,
#              consider.dosage.change=FALSE,
#              followup.window.start=0,
#              followup.window.start.unit="days",
#              followup.window.duration=730,
#              followup.window.duration.unit="days",
#              observation.window.start=0,
#              observation.window.start.unit="days",
#              observation.window.duration=730,
#              observation.window.duration.unit="days",
#              date.format="%m/%d/%Y"
#             );
#  
#  if( !is.null(cma) ) # if the CMA was computed ok
#  {
#      # Try to plot it:
#      plot(cma,
#           # (same idea as for CMA: we send arguments even if
#           # they aren't used in a particular case)
#           align.all.patients=FALSE,
#           align.first.event.at.zero=FALSE,
#           show.legend=TRUE,
#           legend.x="right",
#           legend.y="bottom",
#           legend.bkg.opacity=0.5,
#           legend.cex=0.75,
#           legend.cex.title=1,
#           duration=NA,
#           show.period="days",
#           period.in.days=90,
#           bw.plot=FALSE,
#           col.na="#D3D3D3",
#           unspecified.category.label="drug",
#           col.cats=rainbow,
#           lty.event="solid",
#           lwd.event=2,
#           pch.start.event=15,
#           pch.end.event=16,
#           col.continuation="#000000",
#           lty.continuation="dotted",
#           lwd.continuation=1,
#           cex=1,
#           cex.axis=1,
#           cex.lab=1.25,
#           highlight.followup.window=TRUE,
#           followup.window.col="#00FF00",
#           highlight.observation.window=TRUE,
#           observation.window.col="#FFFF00",
#           observation.window.density=35,
#           observation.window.angle=-30,
#           observation.window.opacity=0.3,
#           show.real.obs.window.start=TRUE,
#           real.obs.window.density=35,
#           real.obs.window.angle=30,
#           print.CMA=TRUE,
#           CMA.cex=0.5,
#           plot.CMA=TRUE,
#           CMA.plot.ratio=0.1,
#           CMA.plot.col="#90EE90",
#           CMA.plot.border="#006400",
#           CMA.plot.bkg="#7FFFD4",
#           CMA.plot.text="#006400",
#           plot.CMA.as.histogram=TRUE,
#           show.event.intervals=TRUE,
#           print.dose=TRUE,
#           print.dose.outline.col="#FFFFFF",
#           print.dose.centered=FALSE,
#           plot.dose=FALSE,
#           lwd.event.max.dose=8,
#           plot.dose.lwd.across.medication.classes=FALSE,
#           min.plot.size.in.characters.horiz=10,
#           min.plot.size.in.characters.vert=0.5
#      );
#  }