This commit is contained in:
DatTT127
2026-06-24 10:33:07 +07:00
parent 16a91bd17e
commit f705113711
77 changed files with 8999 additions and 14 deletions

View File

@@ -0,0 +1,52 @@
# Data Model Specification
## Purpose
Manages persistent storage, caching, and object storage for clinical data including patient records, imaging studies, analysis results, and audit trails using PostgreSQL, Redis, and S3 with calibration services.
## Owner
Data / Domain Team
## Boundary
PostgreSQL database clusters, Redis cache instances, S3 buckets/object storage, database connection pools, cache invalidation strategies, and storage lifecycle management policies.
## Internal Design
- PostgreSQL 15 with TimescaleDB extension for temporal data
- Schema organization: patient, study, session, analysis, audit, calibration namespaces
- Connection pooling via PgBouncer for efficient database access
- Redis 7 for session caching, rate limiting, and temporary computation results
- S3 bucket structure: raw-imagery, processed-results, exports, backups with lifecycle policies
- Encryption-at-rest for sensitive data (PHI) using AES-256-GCM
- Automated backups with point-in-time recovery (PITR) capabilities
- Read replicas for query distribution and reporting workloads
- Calibration service: pixel-to-mm conversion factors stored per device/protocol
- Data retention policies: active data (2 years), archived data (7 years), purged data (>7 years)
- Migration system using Flyway for schema versioning
- Monitoring: query performance, connection pool utilization, replication lag
## Interface Contract
See `bento/data/spec/interface-contract.md`.
## Consumers
- backend:api-spec (for CRUD operations on patient/study/session data)
- backend:ledger-spec (for audit trail storage)
- ml:engine-spec (for model weights and training data)
- knowledge:spec (for exporting vectorizable content)
## Breaking-change Policy
- Database schema versioning via semantic versioning aligned with API versions
- Table/column additions: backward compatible (MINOR version)
- Table/column removals or type changes: require MAJOR version with migration path
- API contract changes follow backend interface contract policies
- Data migration scripts provided for breaking changes
- Deprecation notices for schema changes 60 days in advance
## References
- NFR-7 (Data Durability: 99.999999999% annual)
- NFR-8 (Recovery Time Objective ≤4 hours)
- NFR-9 (Storage Cost Efficiency)
- NFR-13 (Audit Trail Immutability)
- UC-48376 (Load Patient Scan Session)
- UC-92006 (Save Analysis Results)
- UC-01580 (Export Study Package)
- SOLUTION_ARCHITECTURE_SPEC.md (Section 2.3)
- SOFTWARE_SYSTEM_DESIGN_FR_25.md (Section 5.2)

View File

@@ -0,0 +1,51 @@
# Data Model Interface Contract
## Purpose
Manages persistent storage, caching, and object storage for clinical data including patient records, imaging studies, analysis results, and audit trails using PostgreSQL, Redis, and S3 with calibration services.
## Owner
Data / Domain Team
## Provides
- persistent-storage (ACID-compliant patient/study/session records)
- object-storage (binary imagery, masks, overlays, exported reports)
- caching-layer (session state, rate limiting counters, temp computation results)
- calibration-service (pixel-to-mm conversion factors per device/protocol)
- backup-and-recovery (point-in-time recovery, cross-region replication)
- data-export-functionality (DICOM, PDF, CSV formats)
## Consumes
- (None - foundational storage layer)
## Consumers
- backend:api-spec (patient/study/session CRUD operations, search)
- backend:ledger-spec (audit trail append-only storage)
- ml:engine-spec (model artifacts storage/retrieval, training datasets)
- knowledge:spec (guideline documents, vectorization source material)
- infra:spec (shared PostgreSQL/Redis instances for platform services)
## Not Directly Consumable
- internal table structures beyond published schemas
- connection pool tuning parameters
- Redis key naming conventions for internal caching
- S3 bucket policies beyond published access patterns
- backup encryption key management
- vacuum/analyze maintenance schedules
## Breaking-change Policy
- Database schema versioning via semantic versioning (MAJOR.MINOR.PATCH aligned with API)
- Additive changes (new tables/columns): backward compatible (MINOR version)
- Breaking changes (removed columns, type alterations): require MAJOR version
- Migration scripts provided for all breaking changes with rollback procedures
- Deprecation notices for schema changes issued 90 days in advance
- Storage interface changes (S3 prefixes, Redis keys) follow same versioning
- Consumers must opt-in to breaking changes via feature flags
## References
- NFR-7 (Data Durability: 99.999999999% annual)
- NFR-8 (Recovery Time Objective ≤4 hours)
- NFR-9 (Storage Cost Efficiency)
- NFR-13 (Audit Trail Immutability)
- UC-48376 (Load Patient Scan Session)
- UC-92006 (Save Analysis Results)
- UC-01580 (Export Study Package)