Learn R Programming

SelfControlledCaseSeries

SelfControlledCaseSeries is part of HADES.

Introduction

SelfControlledCaseSeries is an R package for performing Self-Controlled Case Series (SCCS) analyses in an observational database in the OMOP Common Data Model.

Features

  • Extracts the necessary data from a database in OMOP Common Data Model format.
  • Optionally add seasonality using a spline function.
  • Optionally add age using a spline function.
  • Optionally add calendar time using a spline function.
  • Optionally correct for event-dependent censoring of the observation period.
  • Optionally add many covariates in one analysis (e.g. all drugs).
  • Options for constructing different types of covariates and risk windows, including pre-exposure windows (to capture contra-indications).
  • Optionally use regularization on all covariates except the outcome of interest.
  • Also provides the self-controlled risk interval design as a special case of the SCCS.
  • Includes diagnostics for all major assumptions of the SCCS design.

Example

sccsData <- getDbSccsData(
  connectionDetails = connectionDetails,
  cdmDatabaseSchema = cdmDatabaseSchema,
  outcomeIds = 192671,
  getDbSccsDataArgs = createGetDbSccsDataArgs(
    exposureIds = 1124300
  )
)

studyPop <- createStudyPopulation(
  sccsData = sccsData,
  outcomeId = 192671,
  createStudyPopulationArgs = createCreateStudyPopulationArgs(
    firstOutcomeOnly = FALSE,
    naivePeriod = 180
  )
)
 
  
covarDiclofenac = createEraCovariateSettings(
  label = "Exposure of interest",
  includeEraIds = 1124300,
  start = 0,
  end = 0,
  endAnchor = "era end"
)

sccsIntervalData <- createSccsIntervalData(
  studyPop,
  sccsData,
  createSccsIntervalDataArgs =  createCreateSccsIntervalDataArgs(
    eraCovariateSettings = covarDiclofenac
  )
)

model <- fitSccsModel(
  sccsIntervalData = sccsIntervalData,
  fitSccsModelArgs = createFitSccsModelArgs()
)

model
# SccsModel object
# 
# Outcome ID: 192671
# 
# Outcome count:
#        outcomeSubjects outcomeEvents outcomeObsPeriods
# 192671          272243        387158            274449
# 
# Estimates:
# # A tibble: 1 x 7
#   Name                                ID Estimate LB95CI UB95CI logRr seLogRr
#   <chr>                            <dbl>    <dbl>  <dbl>  <dbl> <dbl>   <dbl>
# 1 Exposure of interest: Diclofenac  1000     1.18   1.13   1.24 0.167  0.0230

Technology

SelfControlledCaseSeries is an R package, with some functions implemented in C++.

System Requirements

Requires R (version 4.1.0 or higher). Installation on Windows requires RTools. Libraries used in SelfControlledCaseSeries require Java.

Installation

  1. See the instructions here for configuring your R environment, including Java.

  2. In R, use the following commands to download and install SelfControlledCaseSeries:

install.packages("SelfControlledCaseSeries")

User Documentation

Documentation can be found on the package website.

PDF versions of the documentation are also available:

Support

  • Developer questions/comments/feedback: OHDSI Forum
  • We use the GitHub issue tracker for all bugs/issues/enhancements

Contributing

Read here how you can contribute to this package.

License

SelfControlledCaseSeries is licensed under Apache License 2.0

Development

SelfControlledCaseSeries is being developed in R Studio.

Development status

Stable. Actively used in several projects.

Acknowledgements

  • This project is supported in part through the National Science Foundation grant IIS 1251151.
  • Part of the code is based on the SCCS package by Yonas Ghebremichael-Weldeselassie, Heather Whitaker, and Paddy Farrington.

Copy Link

Version

Install

install.packages('SelfControlledCaseSeries')

Monthly Downloads

285

Version

6.1.1

License

Apache License 2.0

Issues

Pull Requests

Stars

Forks

Maintainer

Martijn Schuemie

Last Published

October 28th, 2025

Functions in SelfControlledCaseSeries (6.1.1)

createControlIntervalSettings

Create control interval settings
createCalendarTimeCovariateSettings

Create calendar time settings
createCreateScriIntervalDataArgs

Create a parameter object for the createScriIntervalData() function
createSccsDiagnosticThresholds

Create SCCS diagnostics thresholds
createSccsIntervalData

Create SCCS era data
createGetDbSccsDataArgs

Create a parameter object for the function getDbSccsData
createResultsDataModel

Create the results data model tables on a database server.
createSccsAnalysis

Create a SelfControlledCaseSeries analysis specification
createSccsAnalysesSpecifications

Create full SCCS analysis specifications
createExposuresOutcome

Create a exposures-outcome combination.
createStudyPopulation

Create a study population
createFitSccsModelArgs

Create a parameter object for the function fitSccsModel
createSimulationRiskWindow

Create a risk window definition for simulation
getAttritionTable

Get the attrition table for a population
fitSccsModel

Fit the SCCS model
hasSeasonality

Does the model contain a seasonality effect?
hasCalendarTimeEffect

Does the model contain a calendar time effect?
getResultsDataModelSpecifications

Get specifications for SelfControlledCaseSeries results data model
getModel

Output the full model
convertUntypedListToSccsAnalysesSpecifications

Convert untyped list to SccsAnalysesSpecifications
createExposure

Create exposure definition
createAgeCovariateSettings

Create age covariate settings
createEraCovariateSettings

Create era covariate settings
plotAgeEffect

Plot the age effect
getResultsSummary

Get a summary report of the analyses results
hasAgeEffect

Does the model contain an age effect?
migrateDataModel

Migrate Data model
isSccsData

Check whether an object is a SccsData object
saveSccsIntervalData

Save the cohort method data to file
saveSccsData

Save the cohort method data to file
saveExposuresOutcomeList

Save a list of ExposuresOutcome to file
cyclicSplineDesign

Create a design matrix for a cyclic spline
plotAgeSpans

Plot the age ranges spanned by each observation period.
createSccsMultiThreadingSettings

Create SelfControlledCaseSeries multi-threading settings
createSccsSimulationSettings

Create SCCS simulation settings
plotCalendarTimeEffect

Plot the calendar time effect
simulateSccsData

Simulate SCCS data
createScriIntervalData

Create Self-Controlled Risk Interval (SCRI) era data
saveSccsAnalysisList

Save a list of SccsAnalysis to file
createSeasonalityCovariateSettings

Create seasonality settings
isSccsIntervalData

Check whether an object is a SccsIntervalData object
getFileReference

Get file reference
getDiagnosticsSummary

Get a summary report of the analyses diagnostics
uploadResults

Upload results to the database server.
plotExposureCentered

Plot information centered around the start of exposure
plotEventToCalendarTime

Plot the ratio of observed to expected events over calendar time.
plotEventObservationDependence

Plot time from event to observation end for censored and uncensored time.
loadSccsAnalysisList

Load a list of sccsAnalysis from file
loadExposuresOutcomeList

Load a list of ExposuresOutcome from file
plotCalendarTimeSpans

Plot the calendar time ranges spanned by each observation period.
exportToCsv

Export SCCSresults to CSV files
loadSccsData

Load the cohort method data from a file
getDbSccsData

Load data for SCCS from the database
loadSccsIntervalData

Load the cohort method data from a file
getDataMigrator

Get database migrations instance
plotSeasonality

Plot the seasonality effect
runSccsAnalyses

Run a list of analyses
checkRareOutcomeAssumption

Check if rare outcome assumption is violated
SelfControlledCaseSeries-package

SelfControlledCaseSeries: Self-Controlled Case Series
computeTimeStability

Check stability of outcome rate over time
SccsIntervalData-class

SCCS Interval Data
SccsData-class

SCCS Data
checkTimeStabilityAssumption

Check stability of outcome rate over time
computeMdrr

Compute the minimum detectable relative risk
checkEventObservationIndependenceAssumption

Check diagnostic for event-dependent observation end
computePreExposureGainP

Compute P for pre-exposure risk gain
checkEventExposureIndependenceAssumption

Check diagnostic for event-dependent exposure
convertSccsAnalysesSpecificationsToJson

Convert SccsAnalysesSpecifications to JSON
convertJsonToSccsAnalysesSpecifications

Convert JSON to SccsAnalysesSpecifications
createCreateSccsIntervalDataArgs

Create a parameter object for the createSccsIntervalData() function
createCreateStudyPopulationArgs

Create a parameter object for the createStudyPopulation() function
createDefaultSccsMultiThreadingSettings

Create default SelfControlledCaseSeries multi-threading settings