PRD
PRD
Last updated 5/13/2026
Currently Healthcare Data Platform — Product Requirements Document
PRD Metadata
| Field | Value |
|---|---|
| Product Name | Currently |
| Subtitle | AI-Powered HL7/CCDA Processing Pipeline |
| PRD Version | v1.0 |
| Lifecycle Stage | Growth |
| Document Owner | Product Strategy |
| Last Updated | 2025 |
| Repository | midwestco/currently |
| Primary Language | Python 3.11 (pipeline), TypeScript (web/CLI) |
| Deployment Targets | Vercel (web), GKE / on-premise (pipeline workers), GCP Cloud SQL (data) |
| Auth Provider | Clerk (Organizations, Users, Roles) |
| Status | Active development — production pipeline wiring stabilized (see commits fc207dd–9df7a3c) |
v0.1 Spark — Problem & Outcomes
Problem Statement
Health Information Exchanges (HIEs) and the hospitals that connect to them generate clinical documents in legacy formats — HL7 v2 messages and CDA/CCDA XML — that are structurally inconsistent, heavily encoded in proprietary local terminologies, and incompatible with modern analytics platforms. Translating this data into FHIR R4 or OMOP CDM 5.4 today requires bespoke engineering work at every site, consuming months of integration effort, introducing mapping errors, and producing datasets that cannot be federated across organizations.
No turnkey commercial product resolves all three layers of this problem simultaneously: (1) format normalization from HL7/CDA to FHIR bundles, (2) terminology resolution against standardized vocabularies (LOINC, SNOMED CT, ICD-10-CM, RxNorm), and (3) phenotype-ready OMOP CDM output for real-world evidence and population health use cases.
Desired Outcomes
| ID | Outcome | Metric |
|---|---|---|
| BR-001 | HIEs can onboard member hospitals and begin processing clinical documents without custom engineering | Time-to-first-processed-record < 1 business day after onboarding completion |
| BR-002 | FHIR R4 bundles produced are conformant and pass production FHIR validation | Zero critical validation failures on FHIR output in production pipeline |
| BR-003 | OMOP CDM 5.4 output resolves terminology codes against Athena vocabulary (6.3M concepts) | ≥ 95% of coded clinical concepts mapped to standard vocabulary |
| BR-004 | Platform operators can monitor pipeline health, job status, and data quality from a single UI | Pipeline job visibility latency < 60 seconds from Celery task completion |
| BR-005 | Patients can view and share their own longitudinal clinical records | Patient portal accessible within 24 hours of invitation acceptance |
| BR-006 | Platform generates recurring subscription revenue from HIE and facility organizations | MRR trackable via /api/web/admin/revenue/stats and /api/web/subscriptions/checkout |
Constraints
- HIPAA PHI Isolation: All protected health information is stored exclusively in the PHI Cloud SQL instance. The Platform Cloud SQL instance (
orchestrator, 192.168.0.251) contains zero PHI. This boundary is enforced at the schema level and is non-negotiable. - Authentication: All user sessions are managed through Clerk. The
/api/web/auth/sync-userroute synchronizes Clerk identity to the platform database. Custom auth implementations are out of scope. - Deployment Flexibility: Pipeline workers must support both GKE-managed deployment and on-premise installation for HIEs with air-gapped or data-residency requirements. Four Dockerfiles (
Dockerfile,Dockerfile.nlp,Dockerfile.pipeline,Dockerfile.worker) define the container boundary. - HL7 Profile Coverage: Message type support is bounded by the profiles defined under
config/hl7_profiles/— currently ADT A01/A02/A03/A04/A08/A13/A28/A31, DFT P03, MDM T02, ORM O01, ORU R01/R32, RDE O11, SIU S12, VXU V04. - Vocabulary Source: Terminology resolution uses OMOP Athena vocabulary loaded into
omop_cdm54.concept. Updating this vocabulary outside of a scheduled Athena release is out of scope.
v0.2 Market Definition — ICP & Segments
Ideal Customer Profile
The primary buyer is a Health Information Exchange operating in the United States that needs to deliver standardized clinical data to member hospitals, research sponsors, or payer networks. The secondary buyer is a mid-to-large hospital or health system that connects to one or more HIEs and wants self-service access to their own FHIR and OMOP data without depending on the HIE's timeline.
Segments Table
| Segment | Description | Entry Point | Size Signal |
|---|---|---|---|
| HIE Network Operator | Regional or statewide HIE managing document exchange for 10–500 member facilities. Needs bulk ingestion, network-wide analytics, and member approval workflows. | /dashboard/network shell; registers via /api/web/registrations/hie | ~70 operational HIEs in the US |
| Member Hospital / Facility | Individual hospital, clinic, urgent care, specialty center, lab, or imaging center connected to a HIE. Uploads HL7/CDA files, monitors processing jobs, accesses cleaned FHIR records. | /dashboard shell; registers via /api/web/registrations/facility | Thousands of facilities across existing HIE networks |
| Clinical Researcher / Data Analyst | Individual or team consuming OMOP CDM 5.4 output for real-world evidence, cohort analysis, or population health studies. Accesses data via API keys or OMOP CSV export. | /dashboard/network/export; API key management via cli/src/commands/keys.ts | Embedded within HIE and hospital segments |
| Patient / Care Consumer | Individual whose records have been processed by the platform. Views longitudinal health data, controls sharing permissions. | /portal shell; onboarded via /api/web/admin/invitations/patient and /api/web/onboarding/patient | Derived from member facilities' patient populations |
| Platform Administrator | Currently employees managing organizations, approvals, billing, and platform health. Not a paying customer. | /admin shell | Internal only |
"Not For"
Currently is not designed for:
- Direct EHR vendors seeking a full-featured EHR replacement or clinical workflow system. Currently produces structured data outputs; it does not manage clinical workflows, orders, or clinical decision support.
- Single-physician practices with fewer than a few hundred records per month. The infrastructure cost and onboarding complexity are not justified at that scale.
- International deployments requiring non-US vocabularies as the primary code system. The Athena vocabulary is US-centric (ICD-10-CM, RxNorm, CPT). International vocabulary support is not in the current roadmap.
- Real-time point-of-care alerting systems requiring sub-second latency. The Celery-based asynchronous pipeline is optimized for throughput, not real-time clinical decision latency.
v0.3 Commercial Model — Pricing & Positioning
Positioning Statement
Currently is the first platform built specifically for HIEs to transform legacy clinical document formats into analytics-ready FHIR R4 and OMOP CDM 5.4 at network scale — with built-in terminology resolution, PHI-safe architecture, and self-service portals for every stakeholder in the care continuum.
Monetization Model
Currently operates a B2B SaaS subscription model. The API surface confirms two commercial primitives:
-
Organization Subscriptions — HIE network operators and facility organizations subscribe to the platform. Subscription management is handled via:
POST /api/web/subscriptions/checkout— initiates checkout for a new subscription tierPOST /api/web/subscriptions/cancel— cancels an active subscriptionGET /api/web/admin/pricing/tiers— returns available pricing tiers for display and selection
-
Usage-Based API Access — API keys are provisioned per organization and tracked for consumption. Platform-level API key metrics are available at
GET /api/web/v1/admin/api-keys/metrics/platform. Individual organization API key management is exposed viaGET /api/web/v1/admin/api-keysand the CLI (cli/src/commands/keys.ts,cli/src/commands/billing.ts).
Revenue analytics are surfaced to platform administrators via GET /api/web/admin/revenue/stats and per-organization breakdowns at GET /api/web/v1/admin/analytics/by-org.
Pricing Tiers (Inferred from API surface)
| Tier | Target | Key Capabilities |
|---|---|---|
| Starter | Small HIE or pilot facility | File uploads, FHIR output, basic job monitoring |
| Professional | Mid-size HIE with multiple member hospitals | Full OMOP output, network analytics, patient portal, API key access |
| Enterprise | Large HIE or health system | On-premise worker deployment, custom HL7 profiles, dedicated support, Google Workspace integration |
Moat Thesis
Currently's durable competitive advantage rests on three compounding assets:
- Vocabulary Coverage: The OMOP Athena vocabulary (6.3M concepts) loaded into
omop_cdm54.conceptis operationally expensive to license, load, and keep current. Competitors must replicate this to match terminology resolution quality. - HL7 Profile Depth: The
config/hl7_profiles/directory contains 18 message-type-specific conformance profiles alongside field definitions and HL7 table lookups across 80+ table IDs. This institutional knowledge of real-world HL7 variance cannot be replicated without extensive production data exposure. - PHI Architecture Pattern: The strict two-database architecture (Platform Cloud SQL + PHI Cloud SQL) with Clerk-managed RBAC creates a compliance posture that is difficult and expensive for new entrants to replicate. Existing customers have already validated their security assessments against this architecture.
v0.4 User Journeys
UJ-001: HIE Onboarding and Network Activation
Actor: HIE Network Administrator
Entry Point: Platform landing page → registration flow
- HIE administrator submits registration via
POST /api/web/registrations/hie. - Platform admin reviews and approves the registration at
/adminusingGET /api/web/admin/registrations/hieand approving viaGET /api/web/admin/registrations/hie/:id. - Clerk organization is created; webhook triggers sync to
organizationstable. - HIE administrator completes onboarding (
onboarding_completed = TRUEon theorganizationsrecord). - HIE administrator accesses the
/dashboard/networkshell and invites member facility users viaPOST /api/web/admin/invitations/facility-user. - HIE administrator configures API keys at
/dashboard/network/settings/api-keys.
Success Condition: HIE organization is active, at least one member facility is linked, and the HIE can view the network overview at /dashboard/network/page.tsx.
UJ-002: Facility File Upload and Pipeline Processing
Actor: Hospital Data Coordinator
Entry Point: /dashboard → Upload
- Facility user authenticates via Clerk; session is synced via
POST /api/web/auth/sync-user. - User navigates to the upload interface (
/dashboard/network/upload/page.tsx) and selects HL7 or CDA files. Allowed file types are configurable per hospital (allowed_file_typeson thehospitalstable; defaults to['hl7', 'cda', 'fhir']). - Files are submitted to
POST /api/web/files. The platform registers file metadata infile_registry(file name, type, SHA-256 hash for deduplication, size) and enqueues a pipeline task. - FastAPI + Celery workers pick up the task and execute the Parse → Clean → FHIR → OMOP pipeline stages.
- Job status is visible in real time at
/dashboard/network/jobs/page.tsx. - On completion, FHIR R4 bundles are stored in PHI Cloud SQL and OMOP CDM 5.4 records are written to
omop_cdm54schema.
Success Condition: file_registry.status transitions from pending → processing → completed; FHIR and OMOP records are queryable.
UJ-003: Clinical Data Exploration and Export
Actor: Health Data Analyst at an HIE or research institution
Entry Point: /dashboard/network/records or API
- Analyst authenticates and navigates to
/dashboard/network/records/page.tsxto browse processed medical records. - Analyst views patient-level records (de-identified MRN hash) at
/dashboard/network/patients/[mrnHash]/page.tsx. - Analyst configures OMOP CDM export at
/dashboard/network/export/page.tsx. - For programmatic access, analyst retrieves an API key from
/dashboard/network/settings/api-keysor viacurrently keysCLI command. - CLI commands provide structured access:
currently records,currently diagnoses,currently medications,currently allergies,currently encounters.
Success Condition: Analyst can export a complete OMOP CSV round-trip (validated by tests/e2e/test_omop_csv_round_trip.py) and query records programmatically via API key.
UJ-004: Patient Portal Access and Record Sharing
Actor: Patient
Entry Point: Email invitation
- Platform or facility admin sends a patient invitation via
POST /api/web/admin/invitations/patient. - Patient receives email, follows invitation token link to
GET /api/web/invitations/:token. - Patient completes onboarding via
POST /api/web/onboarding/patient. - Patient accesses the
/portalshell and views their longitudinal health records at/portal/records/page.tsx. - Patient manages data sharing permissions at
/portal/sharing/page.tsx. - Patient can generate personal API access tokens at
/portal/settings/api-access/page.tsxusing thepatient-api-access-client.tsxcomponent.
Success Condition: Patient can view all processed records associated with their identity and control sharing with third parties.
UJ-005: Platform Administrator Operations
Actor: Currently Platform Administrator
Entry Point: /admin
- Admin monitors platform analytics at
/admin/analytics/page.tsx. - Admin reviews and approves pending HIE and facility registrations via
GET /api/web/admin/registrations/hieandGET /api/web/admin/registrations/facility. - Admin approves provider credentials via
POST /api/web/v1/admin/approve-provider. - Admin reviews PHI access audit logs at
GET /api/web/v1/admin/audit/phi-access. - Admin manages org-to-org link approvals at
POST /api/web/admin/org-links/approve. - Admin manages facility organization creation at
POST /api/web/admin/facility-orgs/create. - Admin reviews revenue statistics at
GET /api/web/admin/revenue/stats.
Success Condition: Admin can execute the full approval lifecycle for a new HIE or facility within the /admin shell without direct database access.
v0.5 Red Team Review
Risk Register
| ID | Risk | Category | Likelihood | Impact | Mitigation |
|---|---|---|---|---|---|
| RISK-001 | PHI leak via misconfigured query routing to Platform Cloud SQL | Compliance / Architecture | Low | Critical | Strict two-database schema boundary enforced at the ORM layer (Drizzle); Platform Cloud SQL is annotated -- no PHI data at the table level; GET /api/web/v1/admin/audit/phi-access provides audit logging |
| RISK-002 | Terminology mapping failures produce clinically incorrect OMOP records | Data Quality | Medium | High | tests/e2e/test_omop_full_pipeline.py and test_omop_csv_round_trip.py validate OMOP output; Athena vocabulary in omop_cdm54.concept is the authoritative source; unmapped codes must be routed to a dead-letter queue (DLQ) per tests/e2e/test_dlq_routing.py |
| RISK-003 | Malformed HL7 input crashes the pipeline worker and blocks the job queue | Reliability | High | Medium | Property-based fuzz testing in tests/conformance/test_fuzz.py and tests/conformance/test_property_based.py; DLQ routing tested in tests/e2e/test_dlq_routing.py; workers run as isolated Celery tasks with Redis broker |
| RISK-004 | Clerk webhook delivery failure leaves organization or user records out of sync | Auth / Data Consistency | Medium | High | POST /api/web/auth/sync-user provides a manual sync path; webhook retry logic must be configured in Clerk dashboard |
| RISK-005 | GCS file access fails due to workload identity misconfiguration, blocking file sync | Infrastructure | Low | High | Recent fix commit 1ca44ba (workload identity for GCS access); GCS file sync download authenticated per e4b22ee; smoke test workflow (.github/workflows/smoke-test.yml) validates post-deploy connectivity |
| RISK-006 | FHIR validation failures in production due to datetime normalization errors | Data Quality | Medium | Medium | Fix b955f51 addresses _normalize_fhir_datetime for HL7 compact date conversion; production FHIR validation authenticated per 02461e4; tests/e2e/test_fhir_full_pipeline.py covers output conformance |
| RISK-007 | A rogue API key holder exfiltrates the entire PHI dataset via bulk API access | Security | Low | Critical | API key metrics tracked at GET /api/web/v1/admin/api-keys/metrics/platform; PHI access audit at GET /api/web/v1/admin/audit/phi-access; rate limiting and key scoping must be enforced at the API gateway layer |
| RISK-008 | Pipeline enqueue failures are silently dropped, causing undetected data loss | Reliability | Medium | High | Fix commit 1ca44ba surfaces pipeline enqueue failures; tasks enqueued via REST per 2ee79b5; job status visible at /dashboard/network/jobs/page.tsx |
| RISK-009 | On-premise worker deployments drift from GKE-managed version, causing parsing discrepancies | Operations | Medium | Medium | Four Dockerfiles pin the container boundary; .github/workflows/pipeline-deploy.yml and pipeline-worker-deploy.yml enforce consistent deployment; SBOM attestation in CI (2942e46) |
| RISK-010 | Subscription checkout flow fails silently, blocking organization activation | Revenue | Low | High | Subscription flow exposed via POST /api/web/subscriptions/checkout; revenue stats monitored at GET /api/web/admin/revenue/stats; requires end-to-end checkout smoke test |
v0.6 Architecture
TECH-001: Four-Tier Application Architecture
Currently decomposes into four runtime tiers:
- Web Application (
TECH-001a): Next.js deployed on Vercel. Four route-group shells handle distinct user roles:(platform)/admin,(hie)/dashboard/network, provider/dashboard, and(patient)/portal. Drizzle ORM connects to Platform Cloud SQL. - Processing Pipeline (
TECH-001b): FastAPI (Python 3.11) serving the pipeline API, containerized viaDockerfile.pipeline. Exposes a REST interface consumed by the web app for task enqueueing (per commit2ee79b5). - Celery Workers (
TECH-001c): Async task workers containerized viaDockerfile.worker, using Redis as the message broker. Execute the Parse → Clean → FHIR → OMOP stage sequence for each uploaded file. - NLP Service (
TECH-001d): Separate container (Dockerfile.nlp) indicating a natural language processing component, likely for clinical text extraction from unstructured CDA sections.
TECH-002: Data Architecture
| Database | Host | Contents | PHI |
|---|---|---|---|
| Platform Cloud SQL | GCP (orchestrator, 192.168.0.251) | organizations, hospitals, users, file_registry, subscription metadata | No |
| PHI Cloud SQL | GCP (dedicated PHI instance) | medical_records, FHIR R4 bundles, omop_cdm54.* including omop_cdm54.concept (6.3M Athena rows) | Yes |
TECH-003: Authentication and Authorization
Clerk manages the identity plane. Organizations, user memberships, and roles are created in Clerk and synchronized to Platform Cloud SQL via webhook. The users table stores clerk_id, clerk_role, and organization_id. Session validation occurs at GET /api/web/session. NPI verification is performed at POST /api/web/npi/verify as part of facility onboarding.
TECH-004: CLI (cli/)
A TypeScript CLI (cli/bin/currently.ts, distributed as cli/dist/bin/currently.js) provides programmatic access for analysts and integrators. Commands cover the full API surface: auth, billing, config, keys, orgs, patient, pipeline, records, diagnoses, medications, allergies, encounters, analytics, quality, storage, webhooks. Authentication uses a token store at cli/src/auth/store.ts resolved via cli/src/auth/resolve.ts.
API-001: Platform Administration APIs
| Route | Method | Purpose |
|---|---|---|
/api/web/admin/facility-orgs/create | POST | Create a new facility organization |
/api/web/admin/registrations/hie | GET/POST | List and submit HIE registrations |
/api/web/admin/registrations/hie/:id | GET/PATCH | Retrieve and update a specific HIE registration |
/api/web/admin/registrations/facility | GET/POST | List and submit facility registrations |
/api/web/admin/registrations/facility/:id | GET/PATCH | Retrieve and update a specific facility registration |
/api/web/admin/registrations/facility/hie-initiate | POST | HIE-initiated facility registration |
/api/web/admin/org-links/approve | POST | Approve a facility-to-HIE organization link |
/api/web/admin/invitations/facility-user | POST | Send invitation to a facility user |
/api/web/admin/invitations/patient | POST | Send invitation to a patient |
/api/web/admin/pricing/tiers | GET | Retrieve available subscription tiers |
/api/web/admin/revenue/stats | GET | Platform-level revenue statistics |
/api/web/v1/admin/approve-provider | POST | Approve a provider credential |
/api/web/v1/admin/audit/phi-access | GET | PHI access audit log |
/api/web/v1/admin/api-keys | GET/POST | Platform API key management |
/api/web/v1/admin/api-keys/metrics/platform | GET | Aggregate API key usage metrics |
/api/web/v1/admin/analytics/by-org | GET | Per-organization analytics |
API-002: HIE and Facility APIs
| Route | Method | Purpose |
|---|---|---|
/api/web/hies | GET/POST | List HIE organizations |
/api/web/hies/:id | GET/PATCH | Retrieve or update a specific HIE |
/api/web/facilities | GET/POST | List facilities |
/api/web/facilities/:id | GET/PATCH | Retrieve or update a facility |
/api/web/facilities/:id/hospital | GET | Hospital record for a facility |
/api/web/facilities/:id/medical-records | GET | Medical records for a facility |
/api/web/facility/link-to-hie | POST | Link a facility to an HIE |
/api/web/hospital/by-facility-org | GET | Resolve hospital by facility org |
/api/web/files | GET/POST | File registry — upload and list files |
/api/web/organizations/approved | GET | List approved organizations |
/api/web/organizations/check-hie | GET | Check HIE membership status |
/api/web/orgs/hie | GET | List HIE-type organizations |
/api/web/registrations/hie | POST | Self-service HIE registration |
/api/web/registrations/facility | POST | Self-service facility registration |
/api/web/npi/verify | POST | NPI verification during onboarding |
API-003: Auth, Session, and Subscription APIs
| Route | Method | Purpose |
|---|---|---|
/api/web/auth/sync-user | POST | Sync Clerk user to platform database |
/api/web/session | GET | Retrieve current session and role context |
/api/web/invitations/:token | GET | Resolve and validate invitation token |
/api/web/invitations | GET | List pending invitations |
/api/web/onboarding/patient | POST | Complete patient onboarding |
/api/web/subscriptions/checkout | POST | Initiate subscription checkout |
/api/web/subscriptions/cancel | POST | Cancel active subscription |
/api/web/health | GET | Platform health check |
DBT-001: OMOP CDM 5.4 Schema
The PHI Cloud SQL instance hosts the full OMOP CDM 5.4 schema under the omop_cdm54 schema prefix. Key tables populated by the pipeline include:
| Table | OMOP Domain | Source |
|---|---|---|
omop_cdm54.person | Person | Patient demographics from HL7 PID segment / CDA recordTarget |
omop_cdm54.measurement | Measurement | Lab results from ORU R01 OBX segments / CDA results section |
omop_cdm54.condition_occurrence | Condition | Diagnoses from ICD codes in DFT P03, ADT, CDA problems section |
omop_cdm54.drug_exposure | Drug | Medications from RDE O11, CDA medications section; mapped to RxNorm |
omop_cdm54.visit_occurrence | Visit | Encounter data from ADT A01/A03/A04 |
omop_cdm54.concept | Vocabulary | 6.3M Athena vocabulary concepts — source of truth for all code mapping |
TECH-005: CI/CD Pipeline
Seven GitHub Actions workflows govern the delivery pipeline:
| Workflow | File | Purpose |
|---|---|---|
| Code Quality | .github/workflows/code-quality.yml | Linting, type checking, pre-commit hooks |
| Pipeline Deploy | .github/workflows/pipeline-deploy.yml | Deploy FastAPI pipeline service to GKE |
| Pipeline Test | .github/workflows/pipeline-test.yml | Run Python test suite against pipeline |
| Worker Deploy | .github/workflows/pipeline-worker-deploy.yml | Deploy Celery worker to GKE |
| Smoke Test | .github/workflows/smoke-test.yml | Post-deploy connectivity and health validation |
| Sync Docs | .github/workflows/sync-docs.yml | Synchronize documentation artifacts |
| Terraform Plan | .github/workflows/terraform-plan.yml | Infrastructure plan validation |
TECH-006: HL7 Profile Configuration
Eighteen message-type conformance profiles under config/hl7_profiles/ drive the parsing and validation layer. Field definitions are centralized in config/hl7_profiles/field_definitions.json. HL7 table lookups are distributed across 80+ files in config/hl7_tables/ (table IDs 0001–0091 and beyond). FHIR mapping is configured via config/fhir_mappings/message_type_registry.json and config/fhir_mappings/vocabulary_maps.json. De-identification rules are defined in config/deid/default_rules.csv.
v0.7 Build Execution
EPIC Backlog
EPIC-001: Core Pipeline Engine
| ID | Story | Priority |
|---|---|---|
| TECH-101 | Implement HL7 v2 parser supporting all 18 profiles in config/hl7_profiles/ | P0 |
| TECH-102 | Implement CDA/CCDA XML parser for all C-CDA section templates | P0 |
| TECH-103 | Build FHIR R4 resource generator (Patient, Observation, Condition, MedicationRequest, AllergyIntolerance) | P0 |
| TECH-104 | Build OMOP CDM 5.4 writer for all six core domain tables | P0 |
| TECH-105 | Implement Athena vocabulary lookup against omop_cdm54.concept | P0 |
| TECH-106 | Implement _normalize_fhir_datetime for HL7 compact date conversion (fix b955f51) | P0 |
| TECH-107 | Build Celery task queue with Redis broker and DLQ routing | P1 |
| TECH-108 | Implement pipeline enqueue via REST (commit 2ee79b5) with failure surfacing | P1 |
| TECH-109 | Build conformance toggle for HL7 profile enforcement (tests/e2e/test_conformance_toggle.py) | P1 |
| TECH-110 | Implement Y7/Y8/Y9/R2 pipeline stages and corresponding schema changes (commit 9df7a3c) | P1 |
EPIC-002: Platform Web Application
| ID | Story | Priority |
|---|---|---|
| TECH-201 | Implement four route-group shells: /admin, /dashboard, /dashboard/network, /portal | P0 |
| TECH-202 | Build HIE registration and approval workflow (UJ-001) | P0 |
| TECH-203 | Build facility registration, NPI verification, and HIE linking (UJ-002) | P0 |
| TECH-204 | Build file upload UI at /dashboard/network/upload/page.tsx with file_registry integration | P0 |
| TECH-205 | Build job monitoring view at /dashboard/network/jobs/page.tsx | P1 |
| TECH-206 | Build patient portal at /portal including records, sharing, and API access pages | P1 |
| TECH-207 | Build network analytics dashboard at /dashboard/network/analytics/page.tsx | P1 |
| TECH-208 | Build OMOP export UI at /dashboard/network/export/page.tsx | P1 |
| TECH-209 | Build API key management at /dashboard/network/settings/api-keys | P1 |
| TECH-210 | Integrate Clerk webhook sync via POST /api/web/auth/sync-user | P0 |
| TECH-211 | Implement subscription checkout and cancellation flows | P1 |
| TECH-212 | Build platform admin revenue stats view using /api/web/admin/revenue/stats | P2 |
EPIC-003: CLI
| ID | Story | Priority |
|---|---|---|
| TECH-301 | Implement auth, config, and profile management (cli/src/auth/, cli/src/config/) | P0 |
| TECH-302 | Implement currently records, currently diagnoses, currently medications, currently allergies, currently encounters commands | P1 |
| TECH-303 | Implement currently pipeline command for job submission and status | P1 |
| TECH-304 | Implement currently keys for API key management | P1 |
| TECH-305 | Implement currently analytics and currently quality commands | P2 |
| TECH-306 | Implement currently webhooks command for webhook management | P2 |
| TECH-307 | Build pagination utilities (cli/src/utils/pagination.ts) for large result sets | P1 |
EPIC-004: Infrastructure and Compliance
| ID | Story | Priority |
|---|---|---|
| TECH-401 | Provision Platform Cloud SQL with non-PHI schema | P0 |
| TECH-402 | Provision PHI Cloud SQL with OMOP CDM 5.4 schema and Athena vocabulary load | P0 |
| TECH-403 | Configure GCS workload identity for file sync (commits 1ca44ba, e4b22ee) | P0 |