R/timeinterval.h.R

Defines functions timeinterval

Documented in timeinterval

# This file is automatically generated, you probably don't want to edit this

timeintervalOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
    "timeintervalOptions",
    inherit = jmvcore::Options,
    public = list(
        initialize = function(
            dx_date = NULL,
            fu_date = NULL,
            time_format = "ymd",
            output_unit = "months",
            use_landmark = FALSE,
            landmark_time = 3,
            add_times = TRUE, ...) {

            super$initialize(
                package="ClinicoPath",
                name="timeinterval",
                requiresData=TRUE,
                ...)

            private$..dx_date <- jmvcore::OptionVariable$new(
                "dx_date",
                dx_date)
            private$..fu_date <- jmvcore::OptionVariable$new(
                "fu_date",
                fu_date)
            private$..time_format <- jmvcore::OptionList$new(
                "time_format",
                time_format,
                options=list(
                    "ymdhms",
                    "ymd",
                    "dmy",
                    "mdy",
                    "ydm",
                    "myd",
                    "dym"),
                default="ymd")
            private$..output_unit <- jmvcore::OptionList$new(
                "output_unit",
                output_unit,
                options=list(
                    "days",
                    "weeks",
                    "months",
                    "years"),
                default="months")
            private$..use_landmark <- jmvcore::OptionBool$new(
                "use_landmark",
                use_landmark,
                default=FALSE)
            private$..landmark_time <- jmvcore::OptionNumber$new(
                "landmark_time",
                landmark_time,
                default=3)
            private$..add_times <- jmvcore::OptionBool$new(
                "add_times",
                add_times,
                default=TRUE)

            self$.addOption(private$..dx_date)
            self$.addOption(private$..fu_date)
            self$.addOption(private$..time_format)
            self$.addOption(private$..output_unit)
            self$.addOption(private$..use_landmark)
            self$.addOption(private$..landmark_time)
            self$.addOption(private$..add_times)
        }),
    active = list(
        dx_date = function() private$..dx_date$value,
        fu_date = function() private$..fu_date$value,
        time_format = function() private$..time_format$value,
        output_unit = function() private$..output_unit$value,
        use_landmark = function() private$..use_landmark$value,
        landmark_time = function() private$..landmark_time$value,
        add_times = function() private$..add_times$value),
    private = list(
        ..dx_date = NA,
        ..fu_date = NA,
        ..time_format = NA,
        ..output_unit = NA,
        ..use_landmark = NA,
        ..landmark_time = NA,
        ..add_times = NA)
)

timeintervalResults <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
    "timeintervalResults",
    inherit = jmvcore::Group,
    active = list(
        todo = function() private$.items[["todo"]],
        summary = function() private$.items[["summary"]],
        calculated_time = function() private$.items[["calculated_time"]]),
    private = list(),
    public=list(
        initialize=function(options) {
            super$initialize(
                options=options,
                name="",
                title="Time Interval Calculator")
            self$add(jmvcore::Html$new(
                options=options,
                name="todo",
                title=""))
            self$add(jmvcore::Html$new(
                options=options,
                name="summary",
                title="Summary Statistics"))
            self$add(jmvcore::Output$new(
                options=options,
                name="calculated_time",
                title="Calculated Time Intervals",
                measureType="continuous"))}))

timeintervalBase <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
    "timeintervalBase",
    inherit = jmvcore::Analysis,
    public = list(
        initialize = function(options, data=NULL, datasetId="", analysisId="", revision=0) {
            super$initialize(
                package = "ClinicoPath",
                name = "timeinterval",
                version = c(1,0,0),
                options = options,
                results = timeintervalResults$new(options=options),
                data = data,
                datasetId = datasetId,
                analysisId = analysisId,
                revision = revision,
                pause = NULL,
                completeWhenFilled = FALSE,
                requiresMissings = FALSE,
                weightsSupport = 'auto')
        }))

#' Time Interval Calculator
#'
#' 
#' @param data The data as a data frame.
#' @param dx_date Column containing start dates
#' @param fu_date Column containing end dates
#' @param time_format .
#' @param output_unit .
#' @param use_landmark .
#' @param landmark_time .
#' @param add_times .
#' @return A results object containing:
#' \tabular{llllll}{
#'   \code{results$todo} \tab \tab \tab \tab \tab a html \cr
#'   \code{results$summary} \tab \tab \tab \tab \tab a html \cr
#'   \code{results$calculated_time} \tab \tab \tab \tab \tab an output \cr
#' }
#'
#' @export
timeinterval <- function(
    data,
    dx_date,
    fu_date,
    time_format = "ymd",
    output_unit = "months",
    use_landmark = FALSE,
    landmark_time = 3,
    add_times = TRUE) {

    if ( ! requireNamespace("jmvcore", quietly=TRUE))
        stop("timeinterval requires jmvcore to be installed (restart may be required)")

    if ( ! missing(dx_date)) dx_date <- jmvcore::resolveQuo(jmvcore::enquo(dx_date))
    if ( ! missing(fu_date)) fu_date <- jmvcore::resolveQuo(jmvcore::enquo(fu_date))
    if (missing(data))
        data <- jmvcore::marshalData(
            parent.frame(),
            `if`( ! missing(dx_date), dx_date, NULL),
            `if`( ! missing(fu_date), fu_date, NULL))


    options <- timeintervalOptions$new(
        dx_date = dx_date,
        fu_date = fu_date,
        time_format = time_format,
        output_unit = output_unit,
        use_landmark = use_landmark,
        landmark_time = landmark_time,
        add_times = add_times)

    analysis <- timeintervalClass$new(
        options = options,
        data = data)

    analysis$run()

    analysis$results
}
sbalci/ClinicoPathJamoviModule documentation built on Feb. 25, 2025, 6:34 a.m.