A Five-Vector ETL schema demonstration for high-velocity clinical telemetry ingress. Sample data only — no PHI, no live systems.
| Vector | Tag | Responsibility |
|---|---|---|
| Logic | [Lo] |
Pydantic ClinicalTelemetry schema enforcement at ingress boundary |
| Transformer | [T] |
Urgency indexing, ISO-8601 enrichment, BRONZE_SAMPLE fabric-layer annotation |
| Actuator | [Ac] |
FastAPI HTTP surface: POST /etl/clinical/sample, GET /health |
| Storage | [St] |
Append-only sample_clinical_vault.jsonl persistence with UUID ingress IDs |
| Resonance | [η] |
Structured stdout logging for all ingress events: OK, FAIL, VALIDATION_FAIL |
patient_id : ^[A-Z0-9]{6,12}$
heart_rate : int, 30-220 bpm
spo2 : float, 70-100 %
temp_c : float, 34-43 C
status : CRITICAL | WARNING | STABLE
notes : Optional[str], max 500 chars
All inputs are treated as hostile until validated. No record is persisted before passing all constraints.
urgency_index = 1.0 if (status == CRITICAL or heart_rate > 120) else 0.5Priority tier 1.0 records flagged for downstream triage routing without re-parsing raw fields.
# Build
docker build -t cdif-demo .
# Run
docker run -d -p 8080:8000 --name cdif-instance cdif-demo
# Health check
curl http://localhost:8080/health
# Sample ingest
curl -X POST http://localhost:8080/etl/clinical/sample \
-H 'Content-Type: application/json' \
-d '{"patient_id":"PT001A","heart_rate":145,"spo2":94.5,"temp_c":37.8,"status":"CRITICAL"}'pip install -r requirements.txt
pytest test_cdif.py -v
# 58/58 passingCoverage: boundary values, payload injection (SQL, null byte, unicode), urgency scoring assertions, vault integrity, and validation failure paths.
- Non-root container user (
USER cdif) - No PHI. No live clinical systems. Sample data only.
- Zero-trust invariant: all inputs validated before transformation or persistence
- Validation failures return
422 REJECTED— no internal stack trace leakage
Interactive Five-Vector architecture showcase deployed to GitHub Pages.
cd dashboard && npm install
npm run dev # local dev server
npm run build # production build
npm run deploy # publish to gh-pages