Security & Data Privacy

How CTDashboard handles clinical trial data. Designed for IT security review and vendor qualification.

Zero data storage

All clinical data lives in memory only. Nothing written to disk.

No cloud

Standalone desktop app. No server, no account, no SaaS.

No telemetry

No analytics, no usage tracking, no crash reporting.

No admin rights

Installs to user profile. Works on locked-down corporate machines.

Architecture overview

CTDashboard is a standalone Windows desktop application built on PyQt6. It runs entirely on the user's machine with no backend server, no database, and no cloud infrastructure. The application binary is distributed as a signed Windows installer.

Data flow

Clinical data follows a strict in-memory-only path through the application:

1

User selects source files

The user chooses CSV, SAS XPT, Excel, or ODM-XML files from their local machine via a standard file picker dialog.

2

Files are read into memory

Source files are read using pandas (CSV/XPT/Excel) or lxml (ODM-XML). The original files are never modified, moved, or copied.

3

Domain detection and field mapping

The detection engine identifies CDISC domains and maps source columns to canonical CDASH field names. All processing happens in memory.

4

Interactive analysis

Data is held in pandas DataFrames in application memory. Charts are rendered via Plotly in an embedded browser widget. Filters create temporary views – no data is copied or persisted.

5

Application close

All DataFrames and in-memory state are released. No clinical data remains on disk. The Python process terminates and memory is reclaimed by the OS.

What is written to disk

CTDashboard writes a small number of non-clinical files to the user's machine. None of these contain patient data.

File type Location Contains
Workspace files (.json) User-chosen location Source file paths, filter preferences, chart builder config, study settings. Explicitly marked "_compliance": "No clinical data".
Field mappings ~/.pharmatech/ Column-to-field mapping overrides (column names only, no data values).
Reviewer notes ~/CTDashboard/notes/ Free-text annotations by subject ID. Review commentary only – no clinical data copied from source files.
Study config ~/.medmonitor/ Study name, enrollment target, lab alert thresholds, AE group definitions, vital sign limits.
Export files User-chosen location PowerPoint, PDF, or Word reports generated on demand. These contain summarized safety data (charts, tables) as chosen by the user.

Network activity

CTDashboard requires no internet connection for core functionality. The only network activity occurs in two optional features:

Feature Destination Data sent Required?
AI Patient Narratives Anthropic API (api.anthropic.com) Selected subject's clinical data (one subject at a time) for narrative generation. The API provider does not retain submitted data. No. Entirely optional. Disabled by default.
Auto-update check clinicaltrialdashboard.com HTTPS GET request for version manifest (JSON). No clinical data or user information is sent. No. Can be ignored.

Third-party dependencies

CTDashboard is built on well-established open-source Python libraries. All dependencies are bundled in the installer – no runtime downloads.

Library Purpose License
PyQt6Desktop UI frameworkGPL v3 / Commercial
pandas / numpyData processingBSD 3-Clause
PlotlyInteractive chartingMIT
python-pptxPowerPoint exportMIT
fpdf2PDF exportLGPL v3
kaleidoChart-to-image renderingMIT
PyYAMLConfiguration parsingMIT
pyreadstatSAS XPT file loadingApache 2.0
lxmlODM-XML parsingBSD 3-Clause
openpyxlExcel file loadingMIT

Full license attributions are included in the application install directory (THIRD_PARTY_LICENSES.txt).

Questions?

For security questionnaires, vendor qualification, or data privacy inquiries, contact us.