The safety of research participants is of utmost importance and must be considered for various processes and decisions throughout a clinical study. As such, trialists must be vigilant with regards to participant safety. Many regulatory authorities require regular updates with regards to safety. Swissethics, for instance, requires expedited reporting of some safety events, as well as an Annual Safety Report (ASR).
For more information about the conduct of clinical trial and safety reporting, we recommend the following pages: Easy GCS, Safety Reporting Forms.
Annual Safety Reports, in practice
Definition of the reporting phase
Often, the requirement is to submit any safety events that have occurred in at least the last 12 months of a trial. We believe that this is not sensible. In our opinion, all events that have occurred since the beginning of the trial should be reported.
Note
Similarly, for medical devices, a cumulative list for the full study period needs to be submitted as part of expedited reporting following MDCG 2020-10/1
Suppose a trial was approved on the first of January 2020. This requires that ASRs be submitted each January. Now, suppose that the first years report is sent on the 3rd January 2021. On the 10th January 2021, during a follow up visit, we are informed that an event occurred the previous August (or February, or October, or December). The event should therefore have been reported in the recent report, but wasn’t as we were unaware of it. Using the events-occuring-in-the-previous-12-months approach, the event will also not be reported in the next report (covering year 2 in 2022), as it occurred during year 1. Furthermore, events that were unresolved at the time of the year 1 ASR will never be reported as resolved, as the event is only reported once.
Members of the SCTO Statistics Platform have prepared an R package, SwissASR, to assist in completing the swissethics ASR template. If you provide a dataframe containing the safety data, and the information necessary for the ASR report as listed below, the function will automatically return a filled out ASR report in MS Word format. This could then be forwarded to the PI for supplemental input (e.g. completion of relevant check boxes and the summary of the safety evaluation section), signing and submission to the relevant authorities.
flowchart LR
db[(Database\ne.g. REDCap, \n secuTrial)] --> R
subgraph R
direction TB
r1(Any necessary \n modification of data \n e.g. recoding, renaming) --> r2[ SwissASR::asr ]
end
R --> Word
Word --> Sponsor
Sponsor --> reg[Regulatory\nauthorities]
Example SwissASR code
# install the package# install.packages("SwissASR", repos = "https://ctu-bern.r-universe.dev")# load the packagelibrary(SwissASR)# Load the dataset containing the safety event data# Here we use the example dataset 'asr_sae'. Your dataset should have the same format.# If you have different column names, you can rename them, or use the var_* options # to specify the names of the relevant variables # For more information about the function, including the var_* options, please check# the package helpfilesdata(asr_sae)# Execute the function to produce the reportasr( asr_sae, # dataset containing the safety event data"Trial_ASR.docx", # report filename# trial infotrial_title ="Example Trial Name",protocol_number ="20221002130",basec_number ="....",snctp_number ="202200458",swissmedic_number ="....",ec_name ="Kantonale Ethikskommision Bern",product_name ="Drug name",international =FALSE,trial_type ="imp", # IMP/MD/Other# Sponsor infosponsor_contact ="Sponsor name, Sponsor phone number, Sponsor email",inst_name_address ="Institute name, Institute address",# site infon_centers_t =20, # total numbern_centers_p =20, # plannedn_centers_c =0, # closed - derive from datan_centers_o =18, # open - derive from data# participant infon_pat_t =1000, # targetn_pat_e =300, # enrolled - derive from datan_pat_c =0, # complete - derive from datan_pat_p =0, # prematurely terminated - derive from data# report inforeport_date =format(Sys.Date(), format ="%d/%m/%Y"), # todays dateperiod_from =as.Date("2020-11-01"), # ideally trial start dateperiod_to =Sys.Date())
Elements marked with derive from data can be set such that the code extracts those points from the database and fills them in automatically.