This document separates upstream source accessibility from internal data access.
Sleep-EDF Database Expanded is an open-access PhysioNet dataset.
source_system = physionet_sleep_edf
access_model = open
credential_required = false
These fields describe how the upstream data is obtained. They do not determine who should access subject-level data inside the platform.
patient-level Bronze data restricted
patient-level Silver data restricted
subject-aware staging data restricted
subject-aware Warehouse data restricted
operational metadata team_only
aggregated non-identifying marts review_before_broad_access
public repository code, config examples, and documentation only
Real EDF, XLS, Parquet, quarantine payloads, credentials, and runtime logs are not committed to Git.
The source is public, but combinations such as the following remain quasi-identifying:
source_subject_id
source_subject_number
age_years
sex
collection
night_number
treatment
recording timing
The project therefore uses:
access_model = open
access_policy = restricted
The fields intentionally describe different concepts.
Controlled analytical models should prefer:
subject_sk
recording_sk
recording_key
subject_key remains available for controlled stable joins but is not exposed in
the current Phase 7 marts.
These should not be exposed in broad marts unless a concrete requirement exists:
source_subject_id
source_subject_number
source object keys
source file UUIDs
verified source checksums
subject_key is deterministic and pseudonymous. It is not described as
irreversible anonymization because its inputs come from a finite, known public
dataset.
warehouse.dim_subject may retain restricted lineage fields for controlled
engineering and audit use, but downstream marts should omit source subject IDs,
source object keys, file UUIDs, and source checksums unless a concrete requirement
needs them.
The current Phase 7 recording marts expose exact age, sex, night, and treatment context because those fields are needed for controlled analysis. They must therefore be treated as restricted analytical models, not as anonymous public outputs.
mart.mart_dataset_coverage is aggregated, but some groups can contain a small
number of subjects. It still requires review before broad publication.
When data is prepared for wider access, prefer less identifying groupings (for example age bands) when the analytical question permits it.
Secrets belong in the local .env file and must never be committed.
Examples:
POSTGRES_PASSWORD
MINIO_ROOT_USER
MINIO_ROOT_PASSWORD
MINIO_ACCESS_KEY
MINIO_SECRET_KEY
.env.example documents variable names only and must not contain production
credentials.
governance.source_system_registry stores upstream access and internal policy.
governance.column_classification stores column-level flags such as:
classification_level
contains_personal_data
contains_health_data
contains_direct_identifier
access_policy
masking_policy
Warehouse Core tables have registry-backed column classification for all 81 physical columns. Phase 7 marts currently use enforced dbt contracts and inherit the restricted analytical policy from their Warehouse inputs. Dedicated mart registry classifications are intentionally deferred until the access/BI phase, before any broader publication is enabled.
Implemented:
- open-source access metadata;
- restricted internal policy;
- governance registries and column classification;
- restricted handling guidance for patient-level Bronze and Silver data;
- subject/context staging column classifications;
- Warehouse Core classification for all 81 physical columns;
- restricted/redacted handling for source subject identifiers;
- aggregate-only policy for exact demographic/treatment fields where configured;
- Phase 7 marts that omit direct subject IDs and source-object lineage and remain restricted pending broader-access review.
Phase 7 marts are implemented and keep direct subject IDs and source-object lineage out. Their remaining access-governance work is explicit mart-level registry classification before BI or broader publication is enabled.