R/decisioncalculator.h.R

Defines functions decisioncalculator

Documented in decisioncalculator

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

decisioncalculatorOptions <- if (requireNamespace('jmvcore')) R6::R6Class(
    "decisioncalculatorOptions",
    inherit = jmvcore::Options,
    public = list(
        initialize = function(
            TP = 90,
            TN = 80,
            FP = 30,
            FN = 20,
            pp = FALSE,
            pprob = 0.3, ...) {

            super$initialize(
                package='ClinicoPath',
                name='decisioncalculator',
                requiresData=FALSE,
                ...)

            private$..TP <- jmvcore::OptionNumber$new(
                "TP",
                TP,
                default=90)
            private$..TN <- jmvcore::OptionNumber$new(
                "TN",
                TN,
                default=80)
            private$..FP <- jmvcore::OptionNumber$new(
                "FP",
                FP,
                default=30)
            private$..FN <- jmvcore::OptionNumber$new(
                "FN",
                FN,
                default=20)
            private$..pp <- jmvcore::OptionBool$new(
                "pp",
                pp,
                default=FALSE)
            private$..pprob <- jmvcore::OptionNumber$new(
                "pprob",
                pprob,
                default=0.3,
                min=0.001,
                max=0.999)

            self$.addOption(private$..TP)
            self$.addOption(private$..TN)
            self$.addOption(private$..FP)
            self$.addOption(private$..FN)
            self$.addOption(private$..pp)
            self$.addOption(private$..pprob)
        }),
    active = list(
        TP = function() private$..TP$value,
        TN = function() private$..TN$value,
        FP = function() private$..FP$value,
        FN = function() private$..FN$value,
        pp = function() private$..pp$value,
        pprob = function() private$..pprob$value),
    private = list(
        ..TP = NA,
        ..TN = NA,
        ..FP = NA,
        ..FN = NA,
        ..pp = NA,
        ..pprob = NA)
)

decisioncalculatorResults <- if (requireNamespace('jmvcore')) R6::R6Class(
    inherit = jmvcore::Group,
    active = list(
        text2 = function() private$.items[["text2"]]),
    private = list(),
    public=list(
        initialize=function(options) {
            super$initialize(
                options=options,
                name="",
                title="Decision Calculator",
                refs="caret")
            self$add(jmvcore::Preformatted$new(
                options=options,
                name="text2",
                title="Decision Calculator",
                clearWith=list(
                    "pp",
                    "pprob")))}))

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

#' Decision Calculator
#'
#' Function for Medical Decision Calculator.
#'
#' @examples
#' \dontrun{
#' # example will be added
#'}
#' @param TP .
#' @param TN .
#' @param FP .
#' @param FN .
#' @param pp .
#' @param pprob Prior probability (disease prevelance in the community).
#'   Requires a value between 0.001 and 0.999, default 0.300.
#' @return A results object containing:
#' \tabular{llllll}{
#'   \code{results$text2} \tab \tab \tab \tab \tab a preformatted \cr
#' }
#'
#' @export
decisioncalculator <- function(
    TP = 90,
    TN = 80,
    FP = 30,
    FN = 20,
    pp = FALSE,
    pprob = 0.3) {

    if ( ! requireNamespace('jmvcore'))
        stop('decisioncalculator requires jmvcore to be installed (restart may be required)')


    options <- decisioncalculatorOptions$new(
        TP = TP,
        TN = TN,
        FP = FP,
        FN = FN,
        pp = pp,
        pprob = pprob)

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

    analysis$run()

    analysis$results
}
sbalci/ClinicoPath documentation built on Jan. 8, 2021, 7:41 a.m.