# Phase: Healthcare Platform Foundation

| Field | Value |
| --- | --- |
| Identifier | `healthcare-13-0` |
| Status | Planned |
| Owner | Platform |
| Module(s) | `healthcare.*` foundation modules |
| Service(s) | `healthcare` |
| Depends On | Core entitlement; Identity (profile refs) |
| ADR(s) | TBD (Healthcare independent platform — to be accepted at implementation) |
| Manifest | [phase-manifest.yaml](../../ai-framework/phase-manifest.yaml) |
| Framework | [ADR-013](../../architecture/adr/ADR-013.md) · [ADR-018](../../architecture/adr/ADR-018.md) · [ADR-019](../../architecture/adr/ADR-019.md) |

## Objective

Establish an independent, tenant-aware Healthcare service scaffold with foundation aggregates, permissions, publish-only events, provider contracts, health/capabilities/metrics endpoints, and audit — without appointment, clinical workflow, pharmacy, or delivery engines.

## Enterprise Phase Discovery

> **Required before Implementation.**

| Field | Value |
| --- | --- |
| Discovery date | TBD at implementation |
| Inputs reviewed | [healthcare-roadmap.md](../../healthcare-roadmap.md) · [module-boundaries.md](../../architecture/module-boundaries.md) · [module-registry.md](../../module-registry.md#healthcare) · prior platform foundations (Delivery, Hospitality, Experience) |

### Baseline Inventory (exists today)

- Documentation registration (HC-Reg) complete
- No `backend/services/healthcare` runtime

### Target Responsibility (this phase when Complete)

- Independent service `healthcare` / `healthcare_db` (port 8010)
- Foundation aggregates and CRUD/list APIs with tenant isolation
- Permissions `healthcare.*`; transactional outbox events
- Provider Protocol stubs (Communication, CRM, Loyalty, Accounting, Delivery, Storage, AI, Identity)
- Architecture, tenant, permission, migration, security, docs tests green

### Gap Analysis

| Capability | Status | Action |
| --- | --- | --- |
| Service scaffold | Missing | Implement at 13.0 |
| Foundation aggregates | Missing | Implement at 13.0 |
| Appointment engine | Future | Phase 13.1 |
| Doctor panel / clinic admin | Future | Phases 13.2–13.3 |
| Patient portal / EHR / pharmacy | Future | Phases 13.4–13.6 |
| Delivery integration | Future | Phase 13.7 |

### Promoted to Implementation Scope

- Clinic, Branch, Department shells
- Doctor and Patient profile shells (platform user refs only)
- Roles, permissions catalog, configuration, settings, audit, outbox
- Health, capabilities, metrics endpoints

### Explicitly Excluded (future phase or other service)

- Appointment booking, schedules, slots (13.1)
- Visit sessions, queues, doctor workflows (13.2)
- Clinic services catalog admin (13.3)
- Patient self-service portal (13.4)
- Medical record encounters (13.5)
- Pharmacy network (13.6)
- Delivery job dispatch (13.7)
- Identity user administration (Identity)
- Communication provider ownership (Communication)
- Accounting journal posting (Accounting)

### Boundary Confirmations

- [x] No future-phase pull-forward (documentation)
- [x] No service-boundary violation (documentation)
- [x] No duplication of Delivery / Communication / Accounting domains
- [x] CRUD-only delivery rejected for implementation phase

## Business Analysis

| Item | Detail |
| --- | --- |
| Actors | Platform admin, clinic admin (future), doctor (future), patient (future) |
| Business capabilities (in phase) | Register clinics/branches; doctor/patient profile shells; tenant config |
| Success metrics | Service boots; tenant-isolated foundation APIs; tests green |
| Non-goals | Clinical workflows, billing, pharmacy, logistics |

## Scope

### In Scope

- Service scaffold under `backend/services/healthcare`
- Database `healthcare_db`; Alembic `0001_initial`
- Foundation models, repositories, services, validators, permissions, events
- `/health`, `/capabilities`, `/metrics`, `/api/v1/*` foundation routes
- Compose + env wiring (port 8010)

### Modules

| Module | Change type | Notes |
| --- | --- | --- |
| `healthcare.clinics` | new | Clinic aggregate shell |
| `healthcare.branches` | new | Branch under clinic |
| `healthcare.departments` | new | Department shell |
| `healthcare.doctors` | new | Doctor profile shell |
| `healthcare.patients` | new | Patient profile shell |
| `healthcare.roles` | new | Healthcare roles |
| `healthcare.permissions_catalog` | new | Permission definitions |
| `healthcare.configuration` | new | Tenant configuration |
| `healthcare.settings` | new | Settings key-value |
| `healthcare.external_providers` | new | Provider registration shells |
| `healthcare.audit` | new | Audit log |

### Domain Model

| Aggregate | Entities | Invariants |
| --- | --- | --- |
| Clinic | Branch, Department | Tenant-scoped; soft delete where applicable |
| Doctor | — | Links to Identity user ref; no Identity ownership |
| Patient | — | Links to Identity user ref; privacy-aware |
| HealthcareConfiguration | Setting | Tenant-scoped keys |

### Permissions

| Permission | Description |
| --- | --- |
| `healthcare.clinics.view` | List/read clinics |
| `healthcare.clinics.manage` | Create/update/archive clinics |
| `healthcare.doctors.view` | List/read doctors |
| `healthcare.doctors.manage` | Manage doctor profiles |
| `healthcare.patients.view` | List/read patients |
| `healthcare.patients.manage` | Manage patient profiles |
| `healthcare.settings.manage` | Manage healthcare settings |

### Events

| Event | When |
| --- | --- |
| `healthcare.clinic.created` | Clinic created |
| `healthcare.clinic.updated` | Clinic updated |
| `healthcare.doctor.created` | Doctor profile created |
| `healthcare.patient.created` | Patient profile created |
| `healthcare.setting.updated` | Setting changed |

### APIs

| Method | Path | Permission | Notes |
| --- | --- | --- | --- |
| GET | `/health` | public/ops | Liveness |
| GET | `/capabilities` | authenticated | Phase/capability discovery |
| GET | `/metrics` | ops | Basic metrics |
| GET/POST/PATCH | `/api/v1/clinics` | `healthcare.clinics.*` | List with page/filter/sort/search |
| GET/POST/PATCH | `/api/v1/doctors` | `healthcare.doctors.*` | Doctor profiles |
| GET/POST/PATCH | `/api/v1/patients` | `healthcare.patients.*` | Patient profiles |
| GET/PATCH | `/api/v1/settings` | `healthcare.settings.*` | Settings |

### Providers

| Interface | Owning service | Notes |
| --- | --- | --- |
| CommunicationProvider | Communication | Contracts only |
| DeliveryProvider | Delivery | Contracts only |
| StorageProvider | File Storage | Document refs |
| CRMProvider | CRM | Optional contact sync |
| AccountingProvider | Accounting | Future billing intents |

## Out of Scope

- Appointment engine (13.1)
- Doctor panel workflows (13.2)
- Clinic management catalog (13.3)
- Patient portal (13.4)
- Medical records (13.5)
- Pharmacy network (13.6)
- Delivery integration (13.7)
- Frontend UI

## Completion Criteria

- [ ] Objective met
- [ ] Enterprise Phase Discovery Record complete at implementation
- [ ] Definition of Done satisfied
- [ ] Tests green
- [ ] Handover completed
- [ ] Module registry version `0.13.0.0`

## Architecture Impact

- New independent service and database per database-per-service rule ([ADR-001](../../architecture/adr/ADR-001.md))
- Module boundaries updated at implementation

## Database Impact

- New `healthcare_db`; migration `0001_initial`

## Risks

- Premature clinical feature pull-forward from later phases
- Confusion with Sports Center `medical_information` shells — Healthcare owns clinical domain

## Related Documents

- [Healthcare Roadmap](../../healthcare-roadmap.md)
- [Phase area README](README.md)
- [Module Registry](../../module-registry.md#healthcare)
- [Module Boundaries](../../architecture/module-boundaries.md)
- [Progress](../../progress.md)
- [Next Steps](../../next-steps.md)
