From c34afe6462091e67438f4dedffaf679d213075c0 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 21 Sep 2026 12:49:49 +0000 Subject: [PATCH] docs: mark shipped auth, bulk, terminology, and SDC work complete Update project status, package table, and roadmap notes so they match merged work on main (SMART 2.2, oauth, StructureMap, Bulk Data, IG/tx platform, authz testkit). Closes #8 Closes #9 Closes #17 Closes #20 Closes #23 Closes #27 Co-authored-by: Adegoke Adewoye --- README.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index e197b557..b18dd535 100644 --- a/README.md +++ b/README.md @@ -66,9 +66,9 @@ Early-stage, under active development. | | | |---|---| -| **Done** | `types`, `proto`, `store`, `sqlite`, `postgres`, `core`, `validate`, `fhirpath`, `registry`, `sync`, `modules`, `view`, `ai`, `auth`, `jobs`, `audit`, `smart`, `subscriptions`, `http`, `runtime`, `client` — CRUD, history, transaction bundles, atomic writes, structural validation, FHIRPath, FHIR definition catalog, device-to-hub push/pull, manifest-driven module installer, ViewDefinition execution, policy-governed AI tool harness, shared identity and policy library, shared job runtime, shared audit event library, optional SMART on FHIR (scopes, tokens, auth adapters), change-triggered workflows with webhook/local delivery, FHIR REST HTTP adapter, runtime composition, and Go client SDK | +| **Done** | `types`, `proto`, `store`, `sqlite`, `postgres`, `core`, `validate`, `fhirpath`, `registry`, `sync`, `modules`, `view`, `ai`, `auth`, `jobs`, `audit`, `smart`, `oauth`, `structuremap`, `subscriptions`, `http`, `runtime`, `client`, `export`, `analytics`, `testkit` — CRUD, history, transaction bundles, atomic writes, structural validation, FHIRPath, FHIR definition catalog, device-to-hub push/pull, manifest-driven module installer, ViewDefinition execution, policy-governed AI tool harness, shared identity and policy library, shared job runtime, shared audit event library, optional SMART on FHIR (including 2.2 granular scopes), built-in OAuth/SMART authorization server, StructureMap SDC extraction, Bulk Data `$export`/`$import`, analytics/Parquet paths, authorization scenario testkit, change-triggered workflows with webhook/local delivery, FHIR REST HTTP adapter, runtime composition, and Go client SDK | | **Partial** | `cli` (operator surface usable; conflict drill-down remains) | -| **Next (Stage 1)** | `testkit`, CLI conflict drill-down | +| **Next** | CQL execution library, Inferno SMART App Launch test-kit CI, proof-of-conformance/scale harness | Durable job and audit persistence is available via `pkg/postgres` and `pkg/sqlite`. Shared runtime helpers live in `pkg/jobs` and `pkg/audit`. See [Roadmap](#roadmap) for the full plan. @@ -179,13 +179,15 @@ Operational guidance: [pkg/analytics/EDGE.md](pkg/analytics/EDGE.md) · SQL-on-F | haistack-fhirpath | `pkg/fhirpath` | Done | In-memory FHIRPath engine (Verily-backed); compile, eval, custom functions | | haistack-sdc | `pkg/sdc` | Done | FHIR R4 SDC questionnaire behavior — population, validation, assembly, renderer-neutral state, extraction, and adaptive contracts | | haistack-conflict | `pkg/conflict` | Done | FHIR-aware conflict detection and merge | -| haistack-modules | `pkg/modules` | Planned | Installable capability modules | +| haistack-modules | `pkg/modules` | Done | Installable capability modules | | haistack-view | `pkg/view` | Done | ViewDefinition execution | | haistack-ai | `pkg/ai` | Done | Policy-governed AI tool harness | -| haistack-auth | `pkg/auth` | Done | Principals, roles, permissions, tenant/device context, policy DSL, view/AI adapters | +| haistack-auth | `pkg/auth` | Done | Principals, roles, permissions, tenant/device context, policy DSL, patient-compartment checks, view/AI adapters | | haistack-jobs | `pkg/jobs` | Done | Shared job runtime on `store.JobStore` — handlers, runner, retry/backoff, in-memory store | | haistack-audit | `pkg/audit` | Done | Shared audit events on `store.AuditStore` — actions, emit helpers, store adapter | -| haistack-smart | `pkg/smart` | Done | Optional SMART on FHIR — scopes, launch context, token/backend-service validation, auth adapters | +| haistack-smart | `pkg/smart` | Done | Optional SMART on FHIR — 1.x and 2.2 granular scopes, launch context, token/backend-service validation, auth adapters | +| haistack-oauth | `pkg/oauth` | Done | Built-in OAuth2/SMART authorization server for self-contained deployments | +| haistack-structuremap | `pkg/structuremap` | Done | StructureMap runtime for SDC questionnaire extraction | | haistack-binary | `pkg/binary` | Done | Blob/file behavior, chunked/resumable transfer, Binary resources, and DocumentReference attachment linking | | haistack-subscriptions | `pkg/subscriptions` | Done | Change-triggered workflows on `EventStore` with webhook/local delivery, FHIRPath filters, `pkg/jobs` retry, and SQLite/Postgres persistence | | haistack-analytics | `pkg/analytics` | Done | Postgres-first analytics and reporting engine — ViewDefinition refresh into reporting tables, CSV/Parquet export, incremental cursors | @@ -194,7 +196,7 @@ Operational guidance: [pkg/analytics/EDGE.md](pkg/analytics/EDGE.md) · SQL-on-F | haistack-client | `pkg/client` | Done | Go SDK for FHIR REST, HAIStack sync, SMART, bulk export, and subscriptions | | haistack-runtime | `pkg/runtime` | Done | Composition and lifecycle glue | | haistack-cli | `cmd/haistack` | Partial | Developer/operator CLI — see [cmd/haistack/README.md](cmd/haistack/README.md) | -| haistack-testkit | `pkg/testkit` | Planned | Fixtures, fakes, scenario runners | +| haistack-testkit | `pkg/testkit` | Done | Fixtures, fakes, authz scenario catalog, store/sync/view helpers | --- @@ -428,10 +430,13 @@ The public `Manager` API supports `Install`, `Upgrade`, `Uninstall`, `List`, `In - **modules** — manifest-driven bundles of resources, profiles, search params, views, AI tools, permissions - **view** — SQL-on-FHIR-style ViewDefinitions → structured rows for AI and analytics - **ai** — typed tool registry; LLMs call tools, not arbitrary FHIR commands; audit via `pkg/audit` -- **auth** — Done in v1: principals/roles/permissions, tenant/device context, policy DSL, view/AI adapters; patient-scope stub; optional decision emit via `AuditingEngine` + `pkg/audit` (auth does not own audit storage); SMART stays in `smart` +- **auth** — Done in v1: principals/roles/permissions, tenant/device context, policy DSL, view/AI adapters; production `CheckPatientScope` compartment enforcement; optional decision emit via `AuditingEngine` + `pkg/audit` (auth does not own audit storage); SMART stays in `smart` - **jobs** — Done in v1: handler/runner, retry/backoff, enqueue helpers, `InMemoryJobStore`; SQLite + Postgres `JobStore` backends - **audit** — Done in v1: canonical events, emit helpers, `StoreAdapter`; SQLite + Postgres `AuditStore` backends -- **smart** — Done in v1: SMART scope parsing/matching, launch context, token claim validation, backend-service assertions, `AuthAdapter` into `pkg/auth`; no EHR/standalone launch runtime, dynamic registration, or refresh-token lifecycle +- **smart** — Done in v1: SMART 1.x and 2.2 granular scope parsing/enforcement (CRUDS + search-parameter filters), launch context, token claim validation, backend-service assertions, `AuthAdapter` into `pkg/auth` +- **oauth** — Done: embeddable OAuth2/SMART authorization server (`/authorize`, `/token`, discovery, PKCE, refresh, revoke); hosts may still use an external IdP +- **structuremap** — Done: SDC `sourceStructureMap` extraction engine wired through `pkg/sdc` +- **testkit** — Done: `authztest` scenario catalog and shared fixtures/fakes - **http** — thin REST over core/search: CRUD, `_history`, `_search`, `metadata` - **runtime** — wires stores, core, sync, modules, HTTP into local/edge/cloud modes - **cli** — `init`, `serve`, `validate`, `import`, `read`, `delete`, `export`, `search`, `fhirpath eval`, `sync push/pull/status`, module lifecycle, config inspection, audit inspection, and reindex dry-run; YAML config with flag/env overrides; SQLite-first with Postgres support