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 control——Study 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, DeleteMetadata—90-day time windowStudy monitor
DataSafetyBoardUpdateLockingConfig variants——Data 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...