Skip to main content

Clinical Trial Data Integrity - Audit Trails

This real-world example models a Phase III clinical trial where an immutable audit trail guarantees data integrity, role-scoped access, time-constrained oversight, and regulatory verification. The trail supports mid-study protocol amendments (adding new tags) and uses multiple locking dimensions to protect the dataset.

Clinical-trial and health data carry strong legal obligations

This page is a technical example only. Clinical-trial data and health records are subject to strict confidentiality requirements and data-protection regulations (e.g., ICH-GCP, 21 CFR Part 11, HIPAA, GDPR), which may govern how such data is processed, stored, transferred across jurisdictions, retained, and erased.

These obligations can apply even when only hash values of documents are stored on-chain — a hash committed to an immutable, publicly readable ledger cannot be deleted or modified, which may conflict with confidentiality, data-minimization, or right-to-erasure requirements. Never place personal data, identifiers, or any content that could reveal sensitive information directly on-chain.

Before applying this pattern to real data, carefully review the legal and regulatory requirements for your use case and jurisdiction, and consult qualified legal and compliance advisors.

Business Context

Clinical trials are governed by strict regulatory requirements (ICH-GCP, 21 CFR Part 11) that mandate tamper-proof audit trails for all trial data. A blockchain-based audit trail provides:

  • Data Integrity: Immutable, chronological records of all trial events
  • Role Separation: Each study function (enrollment, safety monitoring, efficacy review) writes only its designated data
  • Time-Constrained Access: Monitor capabilities expire at the end of the study period
  • Regulatory Inspection: Regulators can verify the complete trail using read-only access
  • Dataset Protection: Locking prevents unauthorized modifications after study completion

Field Usage Strategy

  • immutable_metadata: Protocol identity — protocol ID and study description
  • updatable_metadata: Current study phase (e.g., "Phase: Enrollment""Phase: Data Review")
  • record.data: Clinical event payload (enrollment data, adverse events, efficacy observations)
  • record.metadata: Structured event context (e.g., "event:adverse_event")
  • record.tag: Data category — enrollment, safety, efficacy, pk (added mid-study)

Role Design

RolePermissionsRoleTagsConstraintHolder
AdminFull administrative controlStudy sponsor
EnrollerAddRecord, DeleteRecord, CorrectRecord"enrollment"Clinical site
SafetyOfficerAddRecord, DeleteRecord, CorrectRecord"safety"Safety monitoring team
EfficacyReviewerAddRecord, DeleteRecord, CorrectRecord"efficacy"Efficacy review board
PkAnalystAddRecord, DeleteRecord, CorrectRecord"pk"PK analysis team (added mid-study)
MonitorUpdateMetadata, DeleteMetadata90-day time windowStudy monitor
DataSafetyBoardUpdateLockingConfig variantsData Safety Monitoring Board

Prerequisites

Implementation Overview

1. Set Up Multiple Wallets

Create one wallet per actor — an admin, an enroller, a safety officer, an efficacy reviewer, a PK analyst, a monitor, a data-safety board, and a regulator — so each role is held by a distinct address.

Used Utility Functions
examples/audit-trail/real-world/02_clinical_trial.rs
loading...

2. Create the Trial Trail

Create a trail with initial tags for the three primary data categories, a count-based deletion window to protect recent records, and the protocol identity as immutable metadata.

examples/audit-trail/real-world/02_clinical_trial.rs
loading...

3. Define Study Roles with Tag Restrictions

Create tag-scoped roles for each study function. The Monitor receives a time-windowed capability (90 days), and the Data Safety Board manages locking.

Used Utility Functions
examples/audit-trail/real-world/02_clinical_trial.rs
loading...

4. Collect Study Data

Each role adds records tagged with their designated category: enrollment data, safety events, and efficacy observations.

examples/audit-trail/real-world/02_clinical_trial.rs
loading...

5. Mid-Study Amendment: Add a New Tag and Role

Add a "pk" (pharmacokinetics) tag to the registry mid-study, then create a PkAnalyst role scoped to the new tag.

examples/audit-trail/real-world/02_clinical_trial.rs
loading...

6. Verify Deletion Window Protection

The count-based deletion window protects the newest records from deletion, ensuring recently entered data cannot be tampered with.

examples/audit-trail/real-world/02_clinical_trial.rs
loading...

7. Lock the Dataset After Review

The Data Safety Board applies a time-based write lock (1 year) and a permanent delete-trail lock to ensure long-term data retention.

examples/audit-trail/real-world/02_clinical_trial.rs
loading...

8. Regulator Read-Only Verification

Regulators inspect the trail using read-only methods. They can verify the protocol identity, study phase, all roles and tags, locking configuration, and the full record history — without needing any write permissions.

examples/audit-trail/real-world/02_clinical_trial.rs
loading...

Real-World Applications

Medical Device Clinical Investigation

  • Scenario: Post-market clinical follow-up (PMCF) for Class III medical devices under EU MDR
  • Tags: "implantation", "follow_up", "adverse_event", "device_failure"

Vaccine Trial with Multi-Site Enrollment

  • Scenario: Global vaccine Phase IV surveillance with data from multiple clinical sites
  • Tags: "enrollment", "vaccination", "monitoring", "adverse_event", "efficacy"

Food Safety Monitoring

  • Scenario: Long-term monitoring of food additive safety with periodic review cycles
  • Tags: "sample_collection", "lab_analysis", "review", "regulatory_action"

Running Examples Locally

In order to run the examples, you will need to run an IOTA network locally. See the local network setup guide.

Full Example Code

Used Utility Functions
examples/audit-trail/real-world/02_clinical_trial.rs
loading...