R/consort.h.R

Defines functions consort

Documented in consort

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

consortOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
    "consortOptions",
    inherit = jmvcore::Options,
    public = list(
        initialize = function(
            initialN = 0,
            notEligibleN = 0,
            notEligibleText = "",
            randomizedN = 0,
            arm1Label = "Intervention",
            arm1N = 0,
            arm1ReceivedN = 0,
            arm1LostN = 0,
            arm1AnalyzedN = 0,
            arm2Label = "Control",
            arm2N = 0,
            arm2ReceivedN = 0,
            arm2LostN = 0,
            arm2AnalyzedN = 0,
            excludedText = "", ...) {

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

            private$..initialN <- jmvcore::OptionInteger$new(
                "initialN",
                initialN,
                default=0)
            private$..notEligibleN <- jmvcore::OptionInteger$new(
                "notEligibleN",
                notEligibleN,
                default=0)
            private$..notEligibleText <- jmvcore::OptionString$new(
                "notEligibleText",
                notEligibleText,
                default="")
            private$..randomizedN <- jmvcore::OptionInteger$new(
                "randomizedN",
                randomizedN,
                default=0)
            private$..arm1Label <- jmvcore::OptionString$new(
                "arm1Label",
                arm1Label,
                default="Intervention")
            private$..arm1N <- jmvcore::OptionInteger$new(
                "arm1N",
                arm1N,
                default=0)
            private$..arm1ReceivedN <- jmvcore::OptionInteger$new(
                "arm1ReceivedN",
                arm1ReceivedN,
                default=0)
            private$..arm1LostN <- jmvcore::OptionInteger$new(
                "arm1LostN",
                arm1LostN,
                default=0)
            private$..arm1AnalyzedN <- jmvcore::OptionInteger$new(
                "arm1AnalyzedN",
                arm1AnalyzedN,
                default=0)
            private$..arm2Label <- jmvcore::OptionString$new(
                "arm2Label",
                arm2Label,
                default="Control")
            private$..arm2N <- jmvcore::OptionInteger$new(
                "arm2N",
                arm2N,
                default=0)
            private$..arm2ReceivedN <- jmvcore::OptionInteger$new(
                "arm2ReceivedN",
                arm2ReceivedN,
                default=0)
            private$..arm2LostN <- jmvcore::OptionInteger$new(
                "arm2LostN",
                arm2LostN,
                default=0)
            private$..arm2AnalyzedN <- jmvcore::OptionInteger$new(
                "arm2AnalyzedN",
                arm2AnalyzedN,
                default=0)
            private$..excludedText <- jmvcore::OptionString$new(
                "excludedText",
                excludedText,
                default="")

            self$.addOption(private$..initialN)
            self$.addOption(private$..notEligibleN)
            self$.addOption(private$..notEligibleText)
            self$.addOption(private$..randomizedN)
            self$.addOption(private$..arm1Label)
            self$.addOption(private$..arm1N)
            self$.addOption(private$..arm1ReceivedN)
            self$.addOption(private$..arm1LostN)
            self$.addOption(private$..arm1AnalyzedN)
            self$.addOption(private$..arm2Label)
            self$.addOption(private$..arm2N)
            self$.addOption(private$..arm2ReceivedN)
            self$.addOption(private$..arm2LostN)
            self$.addOption(private$..arm2AnalyzedN)
            self$.addOption(private$..excludedText)
        }),
    active = list(
        initialN = function() private$..initialN$value,
        notEligibleN = function() private$..notEligibleN$value,
        notEligibleText = function() private$..notEligibleText$value,
        randomizedN = function() private$..randomizedN$value,
        arm1Label = function() private$..arm1Label$value,
        arm1N = function() private$..arm1N$value,
        arm1ReceivedN = function() private$..arm1ReceivedN$value,
        arm1LostN = function() private$..arm1LostN$value,
        arm1AnalyzedN = function() private$..arm1AnalyzedN$value,
        arm2Label = function() private$..arm2Label$value,
        arm2N = function() private$..arm2N$value,
        arm2ReceivedN = function() private$..arm2ReceivedN$value,
        arm2LostN = function() private$..arm2LostN$value,
        arm2AnalyzedN = function() private$..arm2AnalyzedN$value,
        excludedText = function() private$..excludedText$value),
    private = list(
        ..initialN = NA,
        ..notEligibleN = NA,
        ..notEligibleText = NA,
        ..randomizedN = NA,
        ..arm1Label = NA,
        ..arm1N = NA,
        ..arm1ReceivedN = NA,
        ..arm1LostN = NA,
        ..arm1AnalyzedN = NA,
        ..arm2Label = NA,
        ..arm2N = NA,
        ..arm2ReceivedN = NA,
        ..arm2LostN = NA,
        ..arm2AnalyzedN = NA,
        ..excludedText = NA)
)

consortResults <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
    "consortResults",
    inherit = jmvcore::Group,
    active = list(
        todo = function() private$.items[["todo"]],
        summary = function() private$.items[["summary"]],
        plot = function() private$.items[["plot"]],
        text = function() private$.items[["text"]]),
    private = list(),
    public=list(
        initialize=function(options) {
            super$initialize(
                options=options,
                name="",
                title="CONSORT Flowchart",
                refs=list(
                    "ClinicoPathJamoviModule"))
            self$add(jmvcore::Html$new(
                options=options,
                name="todo",
                title="To Do"))
            self$add(jmvcore::Table$new(
                options=options,
                name="summary",
                title="Summary Statistics",
                rows=0,
                columns=list(
                    list(
                        `name`="stage", 
                        `title`="Stage", 
                        `type`="text"),
                    list(
                        `name`="n", 
                        `title`="N", 
                        `type`="integer"),
                    list(
                        `name`="percent", 
                        `title`="%", 
                        `type`="number", 
                        `format`="pc"))))
            self$add(jmvcore::Image$new(
                options=options,
                name="plot",
                title="CONSORT Flowchart",
                width=800,
                height=1000,
                renderFun=".plot",
                requiresData=FALSE))
            self$add(jmvcore::Preformatted$new(
                options=options,
                name="text",
                title="Text Summary",
                visible=TRUE))}))

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

#' CONSORT Flowchart
#'
#' 
#' @param data The data as a data frame.
#' @param initialN Total number assessed for eligibility
#' @param notEligibleN Number not meeting eligibility criteria
#' @param notEligibleText List of reasons for exclusion (comma separated)
#' @param randomizedN Number randomized to interventions
#' @param arm1Label .
#' @param arm1N .
#' @param arm1ReceivedN .
#' @param arm1LostN .
#' @param arm1AnalyzedN .
#' @param arm2Label .
#' @param arm2N .
#' @param arm2ReceivedN .
#' @param arm2LostN .
#' @param arm2AnalyzedN .
#' @param excludedText Reasons for post-randomization exclusions (comma
#'   separated)
#' @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 table \cr
#'   \code{results$plot} \tab \tab \tab \tab \tab an image \cr
#'   \code{results$text} \tab \tab \tab \tab \tab a preformatted \cr
#' }
#'
#' Tables can be converted to data frames with \code{asDF} or \code{\link{as.data.frame}}. For example:
#'
#' \code{results$summary$asDF}
#'
#' \code{as.data.frame(results$summary)}
#'
#' @export
consort <- function(
    data,
    initialN = 0,
    notEligibleN = 0,
    notEligibleText = "",
    randomizedN = 0,
    arm1Label = "Intervention",
    arm1N = 0,
    arm1ReceivedN = 0,
    arm1LostN = 0,
    arm1AnalyzedN = 0,
    arm2Label = "Control",
    arm2N = 0,
    arm2ReceivedN = 0,
    arm2LostN = 0,
    arm2AnalyzedN = 0,
    excludedText = "") {

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

    if (missing(data))
        data <- jmvcore::marshalData(
            parent.frame())


    options <- consortOptions$new(
        initialN = initialN,
        notEligibleN = notEligibleN,
        notEligibleText = notEligibleText,
        randomizedN = randomizedN,
        arm1Label = arm1Label,
        arm1N = arm1N,
        arm1ReceivedN = arm1ReceivedN,
        arm1LostN = arm1LostN,
        arm1AnalyzedN = arm1AnalyzedN,
        arm2Label = arm2Label,
        arm2N = arm2N,
        arm2ReceivedN = arm2ReceivedN,
        arm2LostN = arm2LostN,
        arm2AnalyzedN = arm2AnalyzedN,
        excludedText = excludedText)

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

    analysis$run()

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