--- a
+++ b/R/singleSimDetails.R
@@ -0,0 +1,65 @@
+#Contains the functions for SingleSimDetails class
+#part of the predict from data part of the package
+#see class definition below
+
+##' Class containing the subject level event data
+##' for each simulation
+##' 
+##' A class which contains the recruitment times
+##' event times and event types of all subjects and all
+##' simulations for a predict from data simulation. 
+##' This class is created when performing simulation and does not 
+##' need to be constructed manually 
+##'  
+##' @slot event.type A matrix (1 row per subject, 1 column per simulation) of
+##' the reason subjects leave trial. 0 is have event, 1 is drop out and 2 is drop out due to follow up
+##' @slot event.times A matrix (1 row per subject, 1 column per simulation) of
+##' dates (as numeric) subjects leave the trial
+##' @slot rec.times A matrix (1 row per subject, 1 column per simulation) of
+##' recruitment dates (as numeric). 
+##' Therefore event.times[i,j] - rec.times[i,j] + 1 is the time on study for
+##' subject i in simulation j
+##' @export
+setClass("SingleSimDetails", 
+         slots=list(
+           event.type="matrix",
+           event.times="matrix",
+           rec.times="matrix"
+         )
+) 
+
+
+# Constructor of SingleSimDetails object
+# @param event.type A matrix (1 row per subject, 1 column per simulation) of
+# the reason subjects leave trial. 0 is have event, 1 is drop out and 2 is censored due to 
+# completing follow up period
+# @param event.times A matrix (1 row per subject, 1 column per simulation) of
+# dates (as numeric) subjects leave the trial
+# @param rec.times A matrix (1 row per subject, 1 column per simulation) of
+# recruitment dates (as numeric). 
+# Therefore event.times[i,j] - rec.times[i,j] + 1 is the time on study for
+# subject i in simulation j
+SingleSimDetails <- function(event.type,event.times,rec.times){
+  
+  new("SingleSimDetails",event.type=event.type,
+      event.times=event.times,rec.times=rec.times)
+  
+}
+
+
+
+##' @name CalculateDaysAtRisk
+##' @rdname CalculateDaysAtRisk-methods  
+##' @aliases CalculateDaysAtRisk,SingleSimDetails-method
+##' @export
+setMethod("CalculateDaysAtRisk","SingleSimDetails",
+ function(object,times){
+  
+  unlist(lapply(times,function(x){
+    cutoff <- as.numeric(x,origin="1970-01-01")
+    time.at.risk <-  matrix(pmax(0, pmin(cutoff,object@event.times) - object@rec.times + 1),
+                            ncol=ncol(object@event.times))
+    median(apply(time.at.risk,2,sum))
+  }))
+  
+})
\ No newline at end of file