Home Accueil / Blog / Regulatory Réglementaire

Your PowerPoint deck is not audit-ready:
what regulators actually expect

Votre PowerPoint n'est pas audit-ready :
ce que les régulateurs attendent réellement

TL;DR

ICH E6(R2) requires that clinical trial data be traceable, reproducible, and attributable. A PowerPoint deck with manually pasted numbers satisfies none of those requirements. Most R&D teams do not realize their internal reporting workflow is a compliance gap until an auditor asks them to reproduce slide 14.

Ce qu'ICH E6(R2) exige réellement

ICH E6(R2) exige que toutes les données d'essai soient attribuables, lisibles, contemporaines, originales et précises. La révision de 2016 a étendu ces principes ALCOA explicitement aux systèmes électroniques et aux sorties analytiques : les données doivent être traçables jusqu'à leur source, les modifications doivent être auditables, et les résultats doivent être reproductibles depuis le dataset sous-jacent.

Ce ne sont pas des principes abstraits. Ils se traduisent en exigences concrètes sur la façon dont les résultats sont générés, stockés et communiqués. La question n'est pas de savoir si votre analyse statistique est correcte. La question est de savoir si vous pouvez démontrer qu'elle l'est, à un auditeur qui n'était pas dans la pièce quand elle a été exécutée.

La question d'audit qui expose la plupart des équipes

"Pouvez-vous reproduire le résultat de la slide 14 depuis votre dataset d'analyse verrouillé ?" C'est une question BPC légitime. Si votre réponse implique d'ouvrir R, de relancer un script et d'espérer que le chiffre corresponde, vous avez une lacune de traçabilité.

Pourquoi PowerPoint échoue sur les trois critères

Un workflow de reporting interne standard - lancer l'analyse dans R ou SAS, copier les résultats dans un deck de slides, faire circuler pour revue - échoue aux exigences ICH E6(R2) de trois façons spécifiques.

Attributabilité. Il n'y a aucun lien entre un chiffre sur une slide et le dataset et le code qui l'ont produit. Si quelqu'un demande quelle version du dataset d'analyse a été utilisée, quelles exclusions de déviations au protocole ont été appliquées, ou quelle version du code d'analyse a produit cette sortie spécifique, la slide ne peut pas répondre.

Reproductibilité. Copier un chiffre d'une sortie statistique vers une slide est une étape de transcription manuelle. La transcription manuelle introduit des erreurs. L'Annexe C d'ICH E6(R2) signale spécifiquement la transcription manuelle entre systèmes comme un risque d'intégrité des données.

Contrôle des modifications. Quand un dataset est amendé après un nettoyage des données, le deck de slides ne se met pas à jour automatiquement. Il n'existe aucun moyen systématique de vérifier que chaque chiffre dans un deck de 47 slides reflète le dataset verrouillé actuel.

Ce que requiert un workflow conforme

Un workflow de reporting interne conforme BPC ne requiert pas une technologie spécifique. Il requiert trois propriétés, indépendamment des outils utilisés :

  • Génération programmatique : les sorties sont calculées depuis les données sources par du code, pas produites par transcription manuelle.
  • Contrôle de version : le code, la version du dataset et les sorties sont liés et versionnés ensemble.
  • Lien vers la source : chaque résultat rapporté porte des métadonnées identifiant le dataset dont il provient, la version de l'analyse et la date de génération.

SAS avec une bibliothèque de macros documentée et un dataset verrouillé satisfait ces exigences. R avec un script versionné et renv les satisfait. Un notebook Python commité sur Git avec un environnement pinné les satisfait. Un fichier PowerPoint ne les satisfait pas, aussi soigneusement qu'il ait été préparé.

Un pipeline conforme minimal

La barre n'est pas haute. Un pipeline conforme minimal pour le reporting interne d'essais cliniques ressemble à ceci : code d'analyse dans un dépôt versionné, datasets référencés par chemin et checksum, sorties générées directement par le code dans le document de rapport, jamais collées manuellement.

---
title: "Analyse Intermédiaire - Étude XYZ-001"
date: "`r Sys.Date()`"
params:
  dataset_path: "data/adlb_locked_v2.sas7bdat"
  lock_checksum: "a3f8c2d1e9b7..."
---

```{r setup, include=FALSE}
library(haven); library(dplyr); library(gt)
adlb <- read_sas(params$dataset_path)
stopifnot(
  "Checksum dataset incorrect - vérifier le statut de verrouillage" =
  digest::digest(adlb) == params$lock_checksum
)
```

```{r tableau-primaire}
adlb |>
  filter(SAFFL == "Y", PARAMCD == "ALT") |>
  group_by(VISIT, ARM) |>
  summarise(mean = mean(AVAL, na.rm = TRUE), n = n(), .groups = "drop") |>
  gt() |>
  tab_header(title = "ALT par Visite et Traitement - Ensemble d'Analyse de Sécurité")
```

What ICH E6(R2) actually requires

ICH E6(R2), the GCP guideline governing clinical trial conduct, requires that all trial data be attributable, legible, contemporaneous, original, and accurate. The 2016 revision extended these ALCOA principles explicitly to electronic systems and analytical outputs: data must be traceable to their source, changes must be auditable, and results must be reproducible from the underlying dataset.

These are not abstract principles. They translate into concrete requirements for how results are generated, stored, and communicated. The question is not whether your statistical analysis is correct. The question is whether you can demonstrate that it is correct, to an auditor who was not in the room when it was run.

The audit question that exposes most teams

"Can you reproduce the result on slide 14 from your locked analysis dataset?" This is a legitimate GCP question. If your answer involves opening R, re-running a script, and hoping the number matches, you have a traceability gap.

Why PowerPoint fails on all three counts

A standard internal reporting workflow - run analysis in R or SAS, copy results into a slide deck, circulate for review - fails the ICH E6(R2) requirements in three specific ways.

Attributability. There is no link between a number on a slide and the dataset and code that produced it. If someone asks which version of the analysis dataset was used, which protocol deviation exclusions were applied, or which version of the analysis code produced that specific output, the slide cannot answer.

Reproducibility. Copying a number from statistical output to a slide is a manual transcription step. Manual transcription introduces errors. ICH E6(R2) Annex C specifically flags manual transcription between systems as a data integrity risk.

Change control. When a dataset is amended after data cleaning, the slide deck does not update automatically. There is no systematic way to verify that every number in a 47-slide deck reflects the current locked dataset.

What a compliant workflow requires

A GCP-compliant internal reporting workflow does not require a specific technology. It requires three properties, regardless of what tools you use:

  • Programmatic generation: outputs are computed from source data by code, not produced by manual transcription.
  • Version control: the code, the dataset version, and the outputs are linked and versioned together.
  • Source linkage: every reported number carries metadata identifying the dataset it came from, the analysis version, and the date it was generated.

SAS with a documented macro library and a locked dataset satisfies these requirements. R with a version-controlled script and renv satisfies them. A Python notebook committed to Git with a pinned environment satisfies them. A PowerPoint file does not, regardless of how carefully it was prepared.

The practical standard regulators apply

FDA and EMA do not audit internal slide decks. What they audit is the clinical study report and the data package that supports it. But the internal reporting workflow matters for two reasons.

First, internal results are often the basis for decisions that affect the trial - dose escalation, cohort expansion, protocol amendments. If those decisions were based on results that cannot be traced to their source, the decision-making process is not GCP-compliant even if the final CSR is clean.

Second, when an auditor asks to see the analytical process, "we put the results in PowerPoint and sent them around" is not an answer that inspires confidence. A documented, reproducible pipeline demonstrates that the team understands data integrity, not just statistics.

A minimum viable compliant pipeline

The bar is not high. A minimum viable compliant pipeline for internal clinical trial reporting looks like this:

  • Analysis code in a version-controlled repository (Git), with each analysis tied to a specific commit
  • Datasets referenced by path and checksum, so the code fails explicitly if the dataset has changed since it was locked
  • Outputs generated by the code directly into the report document, never pasted manually
  • The report document itself generated programmatically, so re-running it from the locked dataset produces the identical output
---
title: "Interim Analysis - Study XYZ-001"
date: "`r Sys.Date()`"
params:
  dataset_path: "data/adlb_locked_v2.sas7bdat"
  lock_checksum: "a3f8c2d1e9b7..."
---

```{r setup, include=FALSE}
library(haven); library(dplyr); library(gt)
adlb <- read_sas(params$dataset_path)
stopifnot(
  "Dataset checksum mismatch - verify lock status" =
  digest::digest(adlb) == params$lock_checksum
)
```

```{r primary-table}
adlb |>
  filter(SAFFL == "Y", PARAMCD == "ALT") |>
  group_by(VISIT, ARM) |>
  summarise(mean = mean(AVAL, na.rm = TRUE), n = n(), .groups = "drop") |>
  gt() |>
  tab_header(title = "ALT by Visit and Treatment - Safety Analysis Set")
```

Live example

A programmatically generated Phase I readout

The slides below were rendered directly from R with quarto render. Every number is computed from a locked dataset, none were manually transcribed. The SCSS theme, NCA tables, and PK plots all follow the same pipeline described above.

Exemple live

Un readout Phase I généré programmatiquement

Les slides ci-dessous ont été rendues depuis R avec quarto render. Chaque chiffre est calculé depuis un dataset verrouillé, aucun n'a été transcrit manuellement. Le thème SCSS, les tableaux NCA et les graphes PK suivent le même pipeline décrit ci-dessus.

slides-example.html - quarto render

Press F to go fullscreen · Arrow keys to navigate · Built with Quarto RevealJS

Get the template

I put together a ready-to-use Quarto report template for internal clinical trial reporting: ADaM dataset ingestion with checksum verification, standard demographics and safety tables, a primary endpoint section, and a session info block that records the R version and package versions used. It is structured to be GCP-defensible out of the box.

Key takeaway

The compliance gap in most R&D teams is not the statistics. It is the step between the statistics and the slide. A result that was manually transcribed into PowerPoint is not attributable, not reproducible, and not change-controlled. A programmatically generated report is all three, at essentially no additional analytical cost.

Récupérez le template

J'ai préparé un template de rapport Quarto prêt à l'emploi pour le reporting interne d'essais cliniques : ingestion de dataset ADaM avec vérification de checksum, tableaux démographiques et de sécurité standards, une section d'endpoint primaire, et un bloc d'informations de session. Il est structuré pour être défendable BPC dès le départ.

À retenir

La lacune de conformité dans la plupart des équipes R&D n'est pas dans les statistiques. Elle est dans l'étape entre les statistiques et la slide. Un résultat transcrit manuellement dans PowerPoint n'est pas attribuable, pas reproductible et pas contrôlé en modification. Un rapport généré programmatiquement est les trois à la fois, à un coût analytique essentiellement nul.

AM

Aslane Mortreau

Freelance Data & AI specialist working with pharmaceutical, biotech, and cosmetic R&D teams. Statistical modeling, analytical pipelines, and custom applications.

Spécialiste Data & IA freelance travaillant avec des équipes R&D pharmaceutiques, biotech et cosmétiques. Modélisation statistique, pipelines analytiques et applications sur mesure.