aw-spec-cli 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/.agents/agent.json +28 -0
- package/assets/.agents/skills/appweaver/SKILL.md +56 -0
- package/assets/.agents/skills/appweaver-demo/SKILL.md +59 -0
- package/assets/.claude/agent.json +27 -0
- package/assets/.claude/skills/appweaver/SKILL.md +55 -0
- package/assets/.claude/skills/appweaver-demo/SKILL.md +59 -0
- package/assets/.kilocode/agent.json +28 -0
- package/assets/.kilocode/workflows/appweaver-demo.md +59 -0
- package/assets/.kilocode/workflows/appweaver.md +55 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +7 -54
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/assets/.agents/skills/aw-spec-addcomponent/SKILL.md +0 -129
- package/assets/.agents/skills/aw-spec-agent-context-update/SKILL.md +0 -31
- package/assets/.agents/skills/aw-spec-analyze/SKILL.md +0 -296
- package/assets/.agents/skills/aw-spec-checklist/SKILL.md +0 -374
- package/assets/.agents/skills/aw-spec-clarify/SKILL.md +0 -320
- package/assets/.agents/skills/aw-spec-constitution/SKILL.md +0 -194
- package/assets/.agents/skills/aw-spec-fast-implement/SKILL.md +0 -268
- package/assets/.agents/skills/aw-spec-foundation/SKILL.md +0 -358
- package/assets/.agents/skills/aw-spec-implement/SKILL.md +0 -279
- package/assets/.agents/skills/aw-spec-minimal-implementation/SKILL.md +0 -209
- package/assets/.agents/skills/aw-spec-plan/SKILL.md +0 -221
- package/assets/.agents/skills/aw-spec-select-domain/SKILL.md +0 -73
- package/assets/.agents/skills/aw-spec-specify/SKILL.md +0 -382
- package/assets/.agents/skills/aw-spec-tasks/SKILL.md +0 -259
- package/assets/.agents/skills/aw-spec-taskstoissues/SKILL.md +0 -107
- package/assets/.aw-spec/domain.json +0 -3
- package/assets/.aw-spec/extensions/.registry +0 -19
- package/assets/.aw-spec/extensions/agent-context/README.md +0 -57
- package/assets/.aw-spec/extensions/agent-context/agent-context-config.yml +0 -4
- package/assets/.aw-spec/extensions/agent-context/commands/aw-spec.agent-context.update.md +0 -26
- package/assets/.aw-spec/extensions/agent-context/extension.yml +0 -34
- package/assets/.aw-spec/extensions/agent-context/scripts/bash/update-agent-context.sh +0 -201
- package/assets/.aw-spec/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +0 -237
- package/assets/.aw-spec/extensions.yml +0 -23
- package/assets/.aw-spec/feature.json +0 -3
- package/assets/.aw-spec/init-options.json +0 -9
- package/assets/.aw-spec/integration.json +0 -15
- package/assets/.aw-spec/integrations/aw-spec.manifest.json +0 -17
- package/assets/.aw-spec/integrations/claude.manifest.json +0 -17
- package/assets/.aw-spec/memory/constitution.md +0 -50
- package/assets/.aw-spec/scripts/bash/check-prerequisites.sh +0 -189
- package/assets/.aw-spec/scripts/bash/common.sh +0 -582
- package/assets/.aw-spec/scripts/bash/create-new-feature.sh +0 -299
- package/assets/.aw-spec/scripts/bash/setup-plan.sh +0 -84
- package/assets/.aw-spec/scripts/bash/setup-tasks.sh +0 -91
- package/assets/.aw-spec/templates/checklist-template.md +0 -40
- package/assets/.aw-spec/templates/constitution-template.md +0 -57
- package/assets/.aw-spec/templates/plan-template.md +0 -113
- package/assets/.aw-spec/templates/spec-template.md +0 -131
- package/assets/.aw-spec/templates/tasks-template.md +0 -252
- package/assets/.aw-spec/workflows/aw-spec/workflow.yml +0 -77
- package/assets/.aw-spec/workflows/workflow-registry.json +0 -13
- package/assets/.claude/skills/aw-spec-addcomponent/SKILL.md +0 -129
- package/assets/.claude/skills/aw-spec-agent-context-update/SKILL.md +0 -31
- package/assets/.claude/skills/aw-spec-analyze/SKILL.md +0 -296
- package/assets/.claude/skills/aw-spec-checklist/SKILL.md +0 -374
- package/assets/.claude/skills/aw-spec-clarify/SKILL.md +0 -320
- package/assets/.claude/skills/aw-spec-constitution/SKILL.md +0 -194
- package/assets/.claude/skills/aw-spec-fast-implement/SKILL.md +0 -268
- package/assets/.claude/skills/aw-spec-foundation/SKILL.md +0 -358
- package/assets/.claude/skills/aw-spec-implement/SKILL.md +0 -279
- package/assets/.claude/skills/aw-spec-minimal-implementation/SKILL.md +0 -209
- package/assets/.claude/skills/aw-spec-plan/SKILL.md +0 -221
- package/assets/.claude/skills/aw-spec-select-domain/SKILL.md +0 -73
- package/assets/.claude/skills/aw-spec-specify/SKILL.md +0 -382
- package/assets/.claude/skills/aw-spec-tasks/SKILL.md +0 -259
- package/assets/.claude/skills/aw-spec-taskstoissues/SKILL.md +0 -107
- package/assets/.kilocode/rules/specify-rules.md +0 -4
- package/assets/.kilocode/workflows/aw-spec-addcomponent.md +0 -129
- package/assets/.kilocode/workflows/aw-spec-agent-context.update.md +0 -31
- package/assets/.kilocode/workflows/aw-spec-analyze.md +0 -296
- package/assets/.kilocode/workflows/aw-spec-checklist.md +0 -374
- package/assets/.kilocode/workflows/aw-spec-clarify.md +0 -320
- package/assets/.kilocode/workflows/aw-spec-constitution.md +0 -194
- package/assets/.kilocode/workflows/aw-spec-fast-implement.md +0 -263
- package/assets/.kilocode/workflows/aw-spec-foundation.md +0 -358
- package/assets/.kilocode/workflows/aw-spec-implement.md +0 -279
- package/assets/.kilocode/workflows/aw-spec-minimal-implementation.md +0 -204
- package/assets/.kilocode/workflows/aw-spec-plan.md +0 -221
- package/assets/.kilocode/workflows/aw-spec-select-domain.md +0 -73
- package/assets/.kilocode/workflows/aw-spec-specify.md +0 -382
- package/assets/.kilocode/workflows/aw-spec-tasks.md +0 -259
- package/assets/.kilocode/workflows/aw-spec-taskstoissues.md +0 -107
- package/assets/docs/ModularMonolith/ModularMonolith.Reference.pack.txt +0 -25248
- package/assets/docs/ModularMonolith/ModularMonolith.pack.txt +0 -5726
- package/assets/docs/ModularMonolith/pack-foundation.ps1 +0 -145
- package/assets/docs/ModularMonolith/pack-foundation.sh +0 -196
- package/assets/docs/ModularMonolith/pack-reference-foundation.ps1 +0 -157
- package/assets/docs/ModularMonolith/pack-reference-foundation.sh +0 -209
- package/assets/docs/ModularMonolith/unpack-foundation.ps1 +0 -126
- package/assets/docs/ModularMonolith/unpack-foundation.sh +0 -217
- package/assets/docs/ModularMonolith/unpack-reference-foundation.ps1 +0 -129
- package/assets/docs/ModularMonolith/unpack-reference-foundation.sh +0 -218
- package/assets/docs/README.md +0 -106
- package/assets/docs/UI.Visualization/PACKAGING.md +0 -191
- package/assets/docs/UI.Visualization/UI.Visualization.Reference.pack.txt +0 -11768
- package/assets/docs/UI.Visualization/UI.Visualization.pack.txt +0 -11214
- package/assets/docs/UI.Visualization/pack-foundation.ps1 +0 -165
- package/assets/docs/UI.Visualization/pack-foundation.sh +0 -206
- package/assets/docs/UI.Visualization/pack-reference-foundation.ps1 +0 -159
- package/assets/docs/UI.Visualization/pack-reference-foundation.sh +0 -205
- package/assets/docs/UI.Visualization/unpack-foundation.ps1 +0 -126
- package/assets/docs/UI.Visualization/unpack-foundation.sh +0 -217
- package/assets/docs/UI.Visualization/unpack-reference-foundation.ps1 +0 -129
- package/assets/docs/UI.Visualization/unpack-reference-foundation.sh +0 -218
- package/assets/docs/VerticalSlice/PACKAGING.md +0 -185
- package/assets/docs/VerticalSlice/VerticalSlice.Reference.pack.txt +0 -19318
- package/assets/docs/VerticalSlice/VerticalSlice.pack.txt +0 -2833
- package/assets/docs/VerticalSlice/pack-foundation.ps1 +0 -145
- package/assets/docs/VerticalSlice/pack-foundation.sh +0 -196
- package/assets/docs/VerticalSlice/pack-reference-foundation.ps1 +0 -157
- package/assets/docs/VerticalSlice/pack-reference-foundation.sh +0 -209
- package/assets/docs/VerticalSlice/unpack-foundation.ps1 +0 -126
- package/assets/docs/VerticalSlice/unpack-foundation.sh +0 -217
- package/assets/docs/VerticalSlice/unpack-reference-foundation.ps1 +0 -129
- package/assets/docs/VerticalSlice/unpack-reference-foundation.sh +0 -218
- package/assets/docs/architecture/clean-architecture.md +0 -71
- package/assets/docs/architecture/cqrs.md +0 -141
- package/assets/docs/architecture/eventing.md +0 -83
- package/assets/docs/architecture/folder-structure.md +0 -61
- package/assets/docs/architecture/modular-monolith.md +0 -47
- package/assets/docs/architecture/persistence.md +0 -269
- package/assets/docs/architecture/testing.md +0 -55
- package/assets/docs/architecture/vertical-slices.md +0 -201
- package/assets/docs/command.txt +0 -295
- package/assets/docs/components/Email/README.md +0 -119
- package/assets/docs/components/Email/ReferenceEndpoints/SendEmailEndpoint.cs +0 -84
- package/assets/docs/components/Email/integration.md +0 -300
- package/assets/docs/components/Jobs/README.md +0 -113
- package/assets/docs/components/Jobs/integration.md +0 -259
- package/assets/docs/components/QrGenerator/README.md +0 -85
- package/assets/docs/components/QrGenerator/ReferenceEndpoints/GenerateQrEndpoint.cs +0 -57
- package/assets/docs/components/QrGenerator/integration.md +0 -230
- package/assets/docs/components/README.md +0 -74
- package/assets/docs/domain/domain-driven-design.md +0 -212
- package/assets/docs/domainspecs/UIVisualization/chart-bubble.md +0 -70
- package/assets/docs/domainspecs/UIVisualization/chart-dimred.md +0 -58
- package/assets/docs/domainspecs/UIVisualization/chart-heatmap.md +0 -62
- package/assets/docs/domainspecs/UIVisualization/chart-network.md +0 -69
- package/assets/docs/domainspecs/UIVisualization/chart-parallel.md +0 -75
- package/assets/docs/domainspecs/UIVisualization/chart-scurve.md +0 -66
- package/assets/docs/domainspecs/UIVisualization/chart-survival.md +0 -69
- package/assets/docs/domainspecs/UIVisualization/chart-trellis.md +0 -68
- package/assets/docs/domainspecs/UIVisualization/chart-violin.md +0 -61
- package/assets/docs/domainspecs/UIVisualization/chart-volcano.md +0 -63
- package/assets/docs/domainspecs/UIVisualization/charting-standards.domain.md +0 -80
- package/assets/docs/domainspecs/UIVisualization/clean-architecture.domain.md +0 -87
- package/assets/docs/domainspecs/UIVisualization/coding-standards.domain.md +0 -47
- package/assets/docs/domainspecs/UIVisualization/comandrulemap.md +0 -130
- package/assets/docs/domainspecs/UIVisualization/component-contracts.domain.md +0 -67
- package/assets/docs/domainspecs/UIVisualization/data-source.domain.md +0 -68
- package/assets/docs/domainspecs/UIVisualization/domain-requirements.md +0 -110
- package/assets/docs/domainspecs/UIVisualization/folder-structure.domain.md +0 -55
- package/assets/docs/domainspecs/UIVisualization/state-management.domain.md +0 -67
- package/assets/docs/domainspecs/UIVisualization/testing.domain.md +0 -52
- package/assets/docs/domainspecs/UIVisualization/ui-viz-terms.md +0 -39
- package/assets/docs/domainspecs/healthcare/ai-rules.domain.md +0 -34
- package/assets/docs/domainspecs/healthcare/api-versioning.domain.md +0 -17
- package/assets/docs/domainspecs/healthcare/auditing.domain.md +0 -29
- package/assets/docs/domainspecs/healthcare/authorization.domain.md +0 -26
- package/assets/docs/domainspecs/healthcare/clinical-terms.md +0 -20
- package/assets/docs/domainspecs/healthcare/coding-standards.domain.md +0 -26
- package/assets/docs/domainspecs/healthcare/comandrulemap.md +0 -166
- package/assets/docs/domainspecs/healthcare/consent.md +0 -19
- package/assets/docs/domainspecs/healthcare/cqrs.domain.md +0 -12
- package/assets/docs/domainspecs/healthcare/data-classification.domain.md +0 -28
- package/assets/docs/domainspecs/healthcare/dependency-policy.domain.md +0 -11
- package/assets/docs/domainspecs/healthcare/dicom.md +0 -15
- package/assets/docs/domainspecs/healthcare/domain-driven-design.domain.md +0 -28
- package/assets/docs/domainspecs/healthcare/domain-requirements.md +0 -55
- package/assets/docs/domainspecs/healthcare/eventing.domain.md +0 -18
- package/assets/docs/domainspecs/healthcare/fhir.md +0 -36
- package/assets/docs/domainspecs/healthcare/folder-structure.domain.md +0 -23
- package/assets/docs/domainspecs/healthcare/hipaa.md +0 -34
- package/assets/docs/domainspecs/healthcare/hl7.md +0 -15
- package/assets/docs/domainspecs/healthcare/integration-terms.md +0 -21
- package/assets/docs/domainspecs/healthcare/persistence.domain.md +0 -20
- package/assets/docs/domainspecs/healthcare/terminology.md +0 -30
- package/assets/docs/domainspecs/healthcare/testing.domain.md +0 -15
- package/assets/docs/domainspecs/healthcare/vertical-slices.domain.md +0 -18
- package/assets/docs/domainspecs/healthcare/zero-trust.domain.md +0 -12
- package/assets/docs/domainspecs/pharma/ai-rules.domain.md +0 -32
- package/assets/docs/domainspecs/pharma/api-versioning.domain.md +0 -20
- package/assets/docs/domainspecs/pharma/atc.md +0 -22
- package/assets/docs/domainspecs/pharma/auditing.domain.md +0 -26
- package/assets/docs/domainspecs/pharma/authorization.domain.md +0 -25
- package/assets/docs/domainspecs/pharma/coding-standards.domain.md +0 -28
- package/assets/docs/domainspecs/pharma/comandrulemap.md +0 -186
- package/assets/docs/domainspecs/pharma/cqrs.domain.md +0 -16
- package/assets/docs/domainspecs/pharma/data-classification.domain.md +0 -24
- package/assets/docs/domainspecs/pharma/data-provenance.md +0 -21
- package/assets/docs/domainspecs/pharma/dependency-policy.domain.md +0 -11
- package/assets/docs/domainspecs/pharma/domain-driven-design.domain.md +0 -36
- package/assets/docs/domainspecs/pharma/domain-requirements.md +0 -99
- package/assets/docs/domainspecs/pharma/eventing.domain.md +0 -18
- package/assets/docs/domainspecs/pharma/fhir.md +0 -31
- package/assets/docs/domainspecs/pharma/folder-structure.domain.md +0 -24
- package/assets/docs/domainspecs/pharma/hl7.md +0 -17
- package/assets/docs/domainspecs/pharma/idmp.md +0 -26
- package/assets/docs/domainspecs/pharma/integration-terms.md +0 -21
- package/assets/docs/domainspecs/pharma/ndc.md +0 -28
- package/assets/docs/domainspecs/pharma/persistence.domain.md +0 -23
- package/assets/docs/domainspecs/pharma/pharma-terms.md +0 -27
- package/assets/docs/domainspecs/pharma/product-lifecycle.domain.md +0 -30
- package/assets/docs/domainspecs/pharma/regulatory-compliance.md +0 -19
- package/assets/docs/domainspecs/pharma/terminology.md +0 -32
- package/assets/docs/domainspecs/pharma/testing.domain.md +0 -19
- package/assets/docs/domainspecs/pharma/vertical-slices.domain.md +0 -17
- package/assets/docs/domainspecs/pharma/zero-trust.domain.md +0 -12
- package/assets/docs/glossary/ai-rules.md +0 -59
- package/assets/docs/governance/api-versioning.md +0 -99
- package/assets/docs/governance/coding-standards.md +0 -87
- package/assets/docs/governance/dependency-policy.md +0 -40
- package/assets/docs/interop/ihe-conformance.md +0 -31
- package/assets/docs/security/auditing.md +0 -117
- package/assets/docs/security/authorization-matrix.md +0 -14
- package/assets/docs/security/authorization.md +0 -87
- package/assets/docs/security/data-classification.md +0 -38
- package/assets/docs/security/zero-trust.md +0 -76
- package/assets/docs/technology-constitution.md +0 -172
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# State Management (CQRS analog) — UI Visualization Domain
|
|
2
|
-
|
|
3
|
-
> The front-end read/write separation. NON-NEGOTIABLE.
|
|
4
|
-
> Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
|
|
5
|
-
|
|
6
|
-
## Read / write separation
|
|
7
|
-
|
|
8
|
-
CQRS maps to the client store as **queries = selectors** and **commands = actions**:
|
|
9
|
-
|
|
10
|
-
- **Queries (reads)** — components read slices of the Zustand store via the hook
|
|
11
|
-
(`const { compounds } = useDataStore()`). Reads are pure; no side effects in render.
|
|
12
|
-
- **Commands (writes)** — every mutation is a **named store action**, never a raw `set` from a
|
|
13
|
-
component. Actions: `loadExcel(partial)`, `resetToSample()`, `toggleCurve(id)`,
|
|
14
|
-
`setSourceMode(mode, fileName)`.
|
|
15
|
-
|
|
16
|
-
A component MUST NOT mutate store state directly — it dispatches an action, exactly as a backend
|
|
17
|
-
endpoint dispatches a command via the mediator instead of touching the `DbContext`.
|
|
18
|
-
|
|
19
|
-
## Store shape
|
|
20
|
-
|
|
21
|
-
- A single `useDataStore` (Zustand) holds: the active **dataset** (the project's chart data), the
|
|
22
|
-
**source mode** (`'sample' | 'excel' | 'api'`), and any **view state** (e.g. selected series ids).
|
|
23
|
-
- The store seeds from **sample data** so charts render on first paint with zero backend
|
|
24
|
-
(see [[data-source.domain]]).
|
|
25
|
-
- Loading new data is a single command that swaps the dataset and flips `sourceMode` — charts
|
|
26
|
-
re-render reactively with no per-chart wiring.
|
|
27
|
-
|
|
28
|
-
## Canonical example (agent reference)
|
|
29
|
-
|
|
30
|
-
```ts
|
|
31
|
-
// store/data-store.ts
|
|
32
|
-
'use client'
|
|
33
|
-
import { create } from 'zustand'
|
|
34
|
-
import { SAMPLE } from '@/lib/sample-data'
|
|
35
|
-
|
|
36
|
-
type SourceMode = 'sample' | 'excel' | 'api'
|
|
37
|
-
|
|
38
|
-
interface DataStore {
|
|
39
|
-
dataset: typeof SAMPLE
|
|
40
|
-
sourceMode: SourceMode
|
|
41
|
-
// commands (writes) — the ONLY way to mutate
|
|
42
|
-
loadExcel: (partial: Partial<typeof SAMPLE>) => void
|
|
43
|
-
resetToSample: () => void
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export const useDataStore = create<DataStore>((set) => ({
|
|
47
|
-
dataset: SAMPLE,
|
|
48
|
-
sourceMode: 'sample',
|
|
49
|
-
loadExcel: (partial) =>
|
|
50
|
-
set(s => ({ dataset: { ...s.dataset, ...partial }, sourceMode: 'excel' })),
|
|
51
|
-
resetToSample: () => set({ dataset: SAMPLE, sourceMode: 'sample' }),
|
|
52
|
-
}))
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Rules
|
|
56
|
-
|
|
57
|
-
- One store module (`store/data-store.ts`). Split into slices only when it exceeds ~150 lines.
|
|
58
|
-
- Actions are the command surface — name them as verbs; keep them pure-ish (compute → `set`).
|
|
59
|
-
- Cross-component data load may also broadcast a `window` `CustomEvent`
|
|
60
|
-
(`appweaver:excel-loaded`) — the front-end analog of a **domain event**.
|
|
61
|
-
- No data fetching inside the store for Phase 1; the **data-source** layer owns ingest and hands
|
|
62
|
-
the result to a command (see [[data-source.domain]]).
|
|
63
|
-
|
|
64
|
-
## Related
|
|
65
|
-
- [[data-source.domain]] — where datasets come from
|
|
66
|
-
- [[clean-architecture.domain]] — the data layer feeds pages, never imports charts
|
|
67
|
-
- [[component-contracts.domain]]
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# Testing — UI Visualization Domain
|
|
2
|
-
|
|
3
|
-
> Test profile for the viz front-end. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
|
|
4
|
-
|
|
5
|
-
## What to test (priority order)
|
|
6
|
-
|
|
7
|
-
1. **Adapters** (highest value) — pure mapping functions: domain type → generic props. Assert the
|
|
8
|
-
produced `series`/`arms`/`curves`/`matrix` and labels match the input. No DOM needed.
|
|
9
|
-
2. **Data layer** — the Excel parser and any workbook→domain mapper: given a fixture workbook (or
|
|
10
|
-
row array), assert the parsed dataset (counts, fields, null handling, derived curves).
|
|
11
|
-
3. **Store actions** — `loadExcel`, `resetToSample`, `toggleCurve` change state as specified
|
|
12
|
-
(see [[state-management.domain]]).
|
|
13
|
-
4. **Smoke render** — each selected chart renders without throwing when given representative data
|
|
14
|
-
(mock `plotly.js-dist-min` so no real canvas is needed).
|
|
15
|
-
|
|
16
|
-
## How
|
|
17
|
-
|
|
18
|
-
- **Vitest** (or Jest) + **@testing-library/react** for component smoke tests.
|
|
19
|
-
- **Mock Plotly**: `vi.mock('plotly.js-dist-min', () => ({ react: vi.fn(), purge: vi.fn() }))` —
|
|
20
|
-
assert the wrapper called `react` with the expected trace count, not pixels.
|
|
21
|
-
- Adapters and parsers are plain functions — unit-test them directly, no mocks.
|
|
22
|
-
- A `build` (type-check + `next build`) is the compile-time gate; keep it green.
|
|
23
|
-
|
|
24
|
-
## Example (agent reference)
|
|
25
|
-
|
|
26
|
-
```ts
|
|
27
|
-
import { describe, it, expect } from 'vitest'
|
|
28
|
-
import { compoundsToBubbleSeries } from '@/components/charts/CompoundScatterPlot'
|
|
29
|
-
|
|
30
|
-
it('groups compounds by target into series with log-scaled y', () => {
|
|
31
|
-
const series = compoundsToBubbleSeries([
|
|
32
|
-
{ name: 'A', target: 'EGFR', molecularWeight: 393, ic50_nM: 10, selectivityRatio: 40 },
|
|
33
|
-
])
|
|
34
|
-
expect(series).toHaveLength(1)
|
|
35
|
-
expect(series[0].seriesLabel).toBe('EGFR')
|
|
36
|
-
expect(series[0].points[0].y).toBeCloseTo(1) // log10(10)
|
|
37
|
-
})
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
> Tip: export the mapping function from the adapter (e.g. `compoundsToBubbleSeries`) so it is
|
|
41
|
-
> unit-testable without rendering.
|
|
42
|
-
|
|
43
|
-
## Rules
|
|
44
|
-
|
|
45
|
-
- Don't assert on Plotly's internal DOM — assert on the **inputs** you hand Plotly.
|
|
46
|
-
- One fixture workbook per project lives beside the parser tests; mirror the shipped
|
|
47
|
-
`public/sample-data.xlsx` columns.
|
|
48
|
-
- Only test charts that are **selected** for the project (see [[domain-requirements]]).
|
|
49
|
-
|
|
50
|
-
## Related
|
|
51
|
-
- [[component-contracts.domain]] · [[state-management.domain]] · [[data-source.domain]] ·
|
|
52
|
-
[[coding-standards.domain]]
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Ubiquitous Language — UI Visualization Domain
|
|
2
|
-
|
|
3
|
-
> Shared vocabulary for the visualization front-end. Commands: `/aw-spec-specify`, `/aw-spec-clarify`.
|
|
4
|
-
|
|
5
|
-
## Core terms
|
|
6
|
-
|
|
7
|
-
- **Generic chart** — a domain-agnostic, props-driven Plotly component in
|
|
8
|
-
`components/charts/generic/`. Knows nothing about any project domain. The 10 in the catalog.
|
|
9
|
-
- **Adapter** — a thin component mapping a project/domain type into a generic chart's props; lives
|
|
10
|
-
in `components/charts/` (not `generic/`). The only place domain vocabulary meets a chart.
|
|
11
|
-
- **Base wrapper** — `PlotlyChart`; the single SSR-safe Plotly mount every chart renders through.
|
|
12
|
-
- **Data source** — origin of chart data: `sample` (hard-coded), `excel` (client upload), or
|
|
13
|
-
`api` (Phase-2 REST). The store's `sourceMode`.
|
|
14
|
-
- **Dataset** — the project's chart-ready data held in the store; the contract between data source
|
|
15
|
-
and charts.
|
|
16
|
-
- **Command (action)** — a named store mutation (`loadExcel`, `resetToSample`, `toggleCurve`).
|
|
17
|
-
- **Query (selector)** — a read of store state from a component via `useDataStore`.
|
|
18
|
-
- **Chart selection** — the developer-specified subset of the catalog to scaffold (or "all plots").
|
|
19
|
-
- **Fill-height** — responsive sizing: a chart with no `height` fills its flex parent.
|
|
20
|
-
- **Series / arm / curve / panel / trace** — per-chart data groupings (see each `chart-*` file).
|
|
21
|
-
- **meta / metadata** — open key/value bag for tooltip enrichment; never a typed domain field.
|
|
22
|
-
|
|
23
|
-
## Chart friendly-name ↔ component
|
|
24
|
-
|
|
25
|
-
| Friendly name(s) | Component |
|
|
26
|
-
|---|---|
|
|
27
|
-
| Heatmap | `Heatmap` |
|
|
28
|
-
| Bubble / Bubble chart | `BubbleChart` |
|
|
29
|
-
| S-Curve / Sigmoid / Dose-Response | `SCurveChart` |
|
|
30
|
-
| Survival / Kaplan-Meier / KM / Retention | `SurvivalCurveChart` |
|
|
31
|
-
| Volcano | `VolcanoPlot` |
|
|
32
|
-
| Dim. Reduction / PCA / t-SNE / UMAP | `DimRedPlot` |
|
|
33
|
-
| Parallel Coords / parcoords | `ParallelCoordinatesPlot` |
|
|
34
|
-
| Violin / Distribution | `ViolinPlot` |
|
|
35
|
-
| Network / Graph / Node-Edge | `NetworkGraph` |
|
|
36
|
-
| Trellis / Facet / Small-multiples | `TrellisGrid` |
|
|
37
|
-
|
|
38
|
-
## Related
|
|
39
|
-
- [[domain-requirements]] · [[component-contracts.domain]] · [[charting-standards.domain]]
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# AI Operational Rules — Healthcare Domain Addenda
|
|
2
|
-
|
|
3
|
-
> Technology base: [[ai-rules]]. Commands: **ALL**.
|
|
4
|
-
|
|
5
|
-
## Context & codes
|
|
6
|
-
- FHIR types: use the **official FHIR .NET SDK**, version-matched (R4/R5) to the endpoint (see [[fhir]]).
|
|
7
|
-
- Confirm coded values against the Terminology module's value sets; never invent ICD/SNOMED/LOINC/CPT codes (see [[terminology]]).
|
|
8
|
-
|
|
9
|
-
## Generation
|
|
10
|
-
- A complete slice adds a FHIR projector + FHIR-validator test when applicable (see [[fhir]], [[testing.domain]]).
|
|
11
|
-
- Generated FHIR resources MUST honor declared IG profiles and pass the FHIR validator (see [[fhir]]).
|
|
12
|
-
- Comments are reserved for clinical intent (generic rule in [[ai-rules]]).
|
|
13
|
-
|
|
14
|
-
## PHI masking
|
|
15
|
-
- MUST NOT log, echo, or commit any field of `Patient`/`Encounter`/`Observation`/`MedicationRequest`/`ClinicalNote`/`DiagnosticReport`/`Claim`/`Coverage` other than the strongly-typed ID.
|
|
16
|
-
- Apply field-level redaction in every generated example payload (see [[data-classification.domain]], [[hipaa]]).
|
|
17
|
-
|
|
18
|
-
## Tests
|
|
19
|
-
- MUST use the synthetic-PHI fixture library (`<SampleProjectName>.TestFixtures`); never inline fabricated PHI.
|
|
20
|
-
- Never invent ICD/SNOMED/LOINC/CPT/HCPCS/RxNorm/CVX codes — use a sentinel constant (see [[testing.domain]], [[terminology]]).
|
|
21
|
-
|
|
22
|
-
## Security-touching code
|
|
23
|
-
- MUST NOT modify authorization handlers, scope evaluators, consent checks, audit emitters, or encryption code without an explicit security-reviewer-attached prompt (see [[authorization.domain]], [[auditing.domain]], [[consent]]).
|
|
24
|
-
- FHIR profile changes: regenerate the IG artifacts + CapabilityStatement in the **same commit** (see [[fhir]], [[api-versioning.domain]]).
|
|
25
|
-
|
|
26
|
-
## Refusal conditions — extend [[ai-rules]]; refuse to:
|
|
27
|
-
- Embed any PHI test fixture in code/config.
|
|
28
|
-
- Disable a consent check globally.
|
|
29
|
-
- Bypass Interop adapters by writing aggregates directly from an external feed (see [[hl7]], [[eventing.domain]]).
|
|
30
|
-
- Generate de-identification logic without a documented method (Safe Harbor / Expert Determination) (see [[hipaa]]).
|
|
31
|
-
- Return PHI in error messages, logs, or trace attributes (see [[data-classification.domain]]).
|
|
32
|
-
|
|
33
|
-
## Related
|
|
34
|
-
- [[ai-rules]] · [[fhir]] · [[terminology]] · [[hipaa]] · [[consent]] · [[data-classification.domain]] · [[auditing.domain]] · [[authorization.domain]] · [[testing.domain]]
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# API Versioning — Healthcare Domain Addenda (FHIR)
|
|
2
|
-
|
|
3
|
-
> Technology base: [[api-versioning]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
|
|
4
|
-
|
|
5
|
-
## FHIR versioning
|
|
6
|
-
- R4 default; R5 is **additive** under a versioned path (`/fhir/R5/...`).
|
|
7
|
-
- Breaking FHIR changes require a **new version path** + a published CapabilityStatement diff (see [[fhir]]).
|
|
8
|
-
- FHIR list endpoints use Bundle/searchset semantics (`_count`, `_offset`/`_page`, `_total`).
|
|
9
|
-
|
|
10
|
-
## Concurrency at the edge
|
|
11
|
-
- FHIR resources honor `If-Match` via the aggregate's concurrency token → FHIR **weak** ETag at the projection boundary (see [[persistence.domain]]).
|
|
12
|
-
|
|
13
|
-
## CapabilityStatement
|
|
14
|
-
- Published for FHIR (beyond generic OpenAPI/AsyncAPI); regenerates cleanly in CI; diff reviewed for breaking changes (see [[fhir]], [[coding-standards.domain]]).
|
|
15
|
-
|
|
16
|
-
## Related
|
|
17
|
-
- [[api-versioning]] · [[fhir]] · [[persistence.domain]] · [[coding-standards.domain]]
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Auditing — Healthcare Domain Addenda (ATNA)
|
|
2
|
-
|
|
3
|
-
> Technology base: [[auditing]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
|
|
4
|
-
|
|
5
|
-
## Setup
|
|
6
|
-
- Auditing is **MANDATORY** for every PHI-bearing aggregate.
|
|
7
|
-
- Enable via `.EnableAdvancedAuditing()` + `AddAuditing(... UseEfCoreAuditing(...).UseAppWeaverDataStore())`.
|
|
8
|
-
- Audit tables: shared `AppWeaver.DataStore`, schema `Auditing`, prefix `Audit_`.
|
|
9
|
-
- A **PHI-access-audit** pipeline behavior runs on every mediator request (see [[cqrs.domain]]).
|
|
10
|
-
|
|
11
|
-
## Record (immutable)
|
|
12
|
-
Every PHI read/mutation, authentication, consent change, export, and break-the-glass MUST emit:
|
|
13
|
-
```
|
|
14
|
-
{ timestamp, subjectId, subjectRole, patientId, action, resourceType,
|
|
15
|
-
resourceId, outcome, sourceIp, correlationId, reason }
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Audit-mandatory operations
|
|
19
|
-
Every PHI read/write; every authentication; every consent change; every export (`$export`, bulk/report download); every break-the-glass; every privileged admin action; every IdP/role change. See [[authorization.domain]].
|
|
20
|
-
|
|
21
|
-
## Retention & format
|
|
22
|
-
- **Append-only**; retained **>= 6 years**; exportable as FHIR `AuditEvent` (see [[domain-driven-design.domain]], [[persistence.domain]]).
|
|
23
|
-
|
|
24
|
-
## Telemetry & breach
|
|
25
|
-
- **PHI, full SSN, payment-card numbers, government IDs MUST NEVER** appear in logs, metric labels, exception messages, or traces (see [[data-classification.domain]]).
|
|
26
|
-
- Anomalous PHI access (volume spikes, off-hours mass reads, repeated denials) emits **Critical** alerts (see [[hipaa]]).
|
|
27
|
-
|
|
28
|
-
## Related
|
|
29
|
-
- [[auditing]] · [[hipaa]] · [[data-classification.domain]] · [[authorization.domain]] · [[consent]] · [[fhir]] · [[cqrs.domain]] · [[persistence.domain]]
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# Authorization — Healthcare Domain Addenda
|
|
2
|
-
|
|
3
|
-
> Technology base: [[authorization]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
|
|
4
|
-
|
|
5
|
-
## Roles
|
|
6
|
-
`SystemAdmin`, `ComplianceOfficer`, `Physician`, `Nurse`, `LabTechnician`, `Radiologist`, `Pharmacist`, `BillingClerk`, `FrontDesk`, `Patient`, `ExternalSystem`, `ResearchAnalyst` (de-identified scope only). Per-route matrix: `docs/security/authorization-matrix.md`.
|
|
7
|
-
|
|
8
|
-
## SMART-on-FHIR scopes
|
|
9
|
-
- Scopes (`patient/*.read`, `user/Observation.read`, `system/*.write`, `launch/patient`) MUST be enforced on **every FHIR endpoint**.
|
|
10
|
-
- App launch (EHR + standalone): **PKCE mandatory; implicit flow FORBIDDEN** (see [[fhir]]).
|
|
11
|
-
|
|
12
|
-
## PHI minimum-necessary
|
|
13
|
-
- The PHI-access pipeline returns only fields the caller's role + scopes authorize; field-level redaction lives in projection extensions (see [[hipaa]], [[data-classification.domain]]).
|
|
14
|
-
|
|
15
|
-
## Consent & break-the-glass
|
|
16
|
-
- Pipeline checks **consent state** before releasing PHI outside the treating-provider context (see [[consent]]).
|
|
17
|
-
- Break-the-glass = explicit emergency-access command: documented reason + high-priority audit + real-time alert (see [[consent]], [[auditing.domain]]).
|
|
18
|
-
|
|
19
|
-
## Audit-mandatory
|
|
20
|
-
Every PHI read/write, authentication, consent change, export, break-the-glass, privileged admin action, IdP/role change (see [[auditing.domain]]).
|
|
21
|
-
|
|
22
|
-
## Anonymous allowlist
|
|
23
|
-
- Adds `/metadata` (FHIR CapabilityStatement) to the generic allowlist (see [[fhir]]).
|
|
24
|
-
|
|
25
|
-
## Related
|
|
26
|
-
- [[authorization]] · [[hipaa]] · [[consent]] · [[auditing.domain]] · [[data-classification.domain]] · [[fhir]]
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# Glossary — Clinical Terms
|
|
2
|
-
|
|
3
|
-
> Ubiquitous language for clinical aggregates. Commands: `/aw-spec-specify`, `/aw-spec-clarify`, `/aw-spec-plan`. See [[domain-driven-design.domain]] (modeling) + [[terminology]] (coding).
|
|
4
|
-
|
|
5
|
-
| Term | Definition |
|
|
6
|
-
|---|---|
|
|
7
|
-
| **MRN** | Patient identifier, **unique per tenant** on `Patient` (Patients); cross-referenced via PIX/PDQ (see [[integration-terms]]). |
|
|
8
|
-
| **Encounter** | Clinical interaction (inpatient/outpatient/emergency); owns Admission/Transfer/Discharge; not Closeable with open Orders/Results/ChargeItems/unsigned ClinicalNotes (Encounters). |
|
|
9
|
-
| **Observation** | A discrete measurement/finding — vitals/social history (EMR) or lab result (Lab); coded LOINC/SNOMED (see [[terminology]]). |
|
|
10
|
-
| **Coverage** | Patient insurance record (Insurance); required (or documented self-pay) before admission. |
|
|
11
|
-
| **PractitionerRole** | A Practitioner's role within an Organization/Location (Identity) — drives role-based auth (see [[authorization.domain]]). |
|
|
12
|
-
| **CarePlan** | A planned set of clinical activities (EMR). |
|
|
13
|
-
| **DiagnosticReport** | A finalized result set with interpretation — radiology (Radiology) or lab (Lab). |
|
|
14
|
-
| **ClinicalNote** | Documentation entry; once **Signed** immutable; corrections are addenda; deletion forbidden (supersede via Amend). |
|
|
15
|
-
| **ProblemList / AllergyIntolerance / MedicationStatement / Immunization / Procedure / ServiceRequest** | EMR aggregates; coded SNOMED/ICD/RxNorm/CVX as applicable. |
|
|
16
|
-
| **MedicationRequest / MedicationDispense / MedicationAdministration** | Pharmacy aggregates; dispense blocked on allergy/interaction/contraindication without documented override. |
|
|
17
|
-
| **Consent** | First-class aggregate governing PHI disclosure; withdrawal blocks disclosure immediately (see [[consent]]). |
|
|
18
|
-
|
|
19
|
-
## Related
|
|
20
|
-
- [[integration-terms]] · [[domain-driven-design.domain]] · [[terminology]] · [[fhir]]
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# Coding Standards — Healthcare Domain Addenda
|
|
2
|
-
|
|
3
|
-
> Technology base: [[coding-standards]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
|
|
4
|
-
|
|
5
|
-
## Coded value objects
|
|
6
|
-
- Follow the FHIR pattern: `Codeable`, `Coding`, `Quantity`, `Period`, `Range`, `Ratio`, `Identifier`, `HumanName`, `Address`, `ContactPoint` (see [[terminology]]).
|
|
7
|
-
- The Domain may additionally throw `ConsentDeniedException` (see [[consent]]).
|
|
8
|
-
|
|
9
|
-
## Forbidden patterns — extend [[coding-standards]]
|
|
10
|
-
- **H1.** Hard delete of any clinical/financial/audit/PHI-bearing aggregate (see [[persistence.domain]]).
|
|
11
|
-
- **H2.** Hard-coded IdP issuer / FHIR server / HL7 endpoint URLs, or PHI test fixtures, in source.
|
|
12
|
-
- **H3.** Logging/emitting any PHI element, full SSN/government ID (see [[data-classification.domain]]).
|
|
13
|
-
- **H4.** Storing patient data (names, MRNs, DOBs, diagnoses, meds, labs, imaging) as free text when a coded vocabulary applies (see [[terminology]]).
|
|
14
|
-
- **H5.** A second FHIR write path bypassing the canonical aggregate (see [[fhir]]).
|
|
15
|
-
- **H6.** Storing/transmitting PHI to any non-production environment (see [[hipaa]]).
|
|
16
|
-
- **H7.** FHIR errors not using `OperationOutcome` with HTTP 422 (see [[fhir]]).
|
|
17
|
-
|
|
18
|
-
## Quality gates — extend [[coding-standards]]
|
|
19
|
-
- **HG1.** FHIR CapabilityStatement regenerates cleanly; diff reviewed (see [[fhir]]).
|
|
20
|
-
- **HG2.** FHIR validator passes for every modified resource/profile/example.
|
|
21
|
-
- **HG3.** Grep: no PHI string literals in tests outside sanctioned fixtures; no MediatR/AutoMapper.
|
|
22
|
-
- **HG4.** PHI-logging analyzer passes — no Patient/Encounter/Observation/MedicationRequest field logged except the ID (see [[data-classification.domain]]).
|
|
23
|
-
- **HG5.** Security-reviewer sign-off for any PHI-access change.
|
|
24
|
-
|
|
25
|
-
## Related
|
|
26
|
-
- [[coding-standards]] · [[terminology]] · [[fhir]] · [[hipaa]] · [[consent]] · [[data-classification.domain]] · [[persistence.domain]]
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
# Healthcare Domain — Command → Rule-File Map
|
|
2
|
-
|
|
3
|
-
Per-AW-Spec-command list of the **healthcare domain** rule files in this folder.
|
|
4
|
-
Technology standards already auto-load inside each command; the files below are the
|
|
5
|
-
domain-specific ones to load **in addition** for a healthcare project.
|
|
6
|
-
|
|
7
|
-
- All paths are workspace-relative and live in this folder: `docs/domainspecs/healthcare/`.
|
|
8
|
-
- A skill can read this file and load every path under the matching command heading.
|
|
9
|
-
- This file is the **canonical source** for the healthcare domain mapping;
|
|
10
|
-
`/aw-spec-select-domain` selects this folder as active.
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## /aw-spec-constitution
|
|
15
|
-
- docs/domainspecs/healthcare/domain-requirements.md
|
|
16
|
-
- docs/domainspecs/healthcare/ai-rules.domain.md
|
|
17
|
-
|
|
18
|
-
## /aw-spec-specify
|
|
19
|
-
- docs/domainspecs/healthcare/domain-requirements.md
|
|
20
|
-
- docs/domainspecs/healthcare/clinical-terms.md
|
|
21
|
-
- docs/domainspecs/healthcare/integration-terms.md
|
|
22
|
-
- docs/domainspecs/healthcare/domain-driven-design.domain.md
|
|
23
|
-
- docs/domainspecs/healthcare/fhir.md
|
|
24
|
-
- docs/domainspecs/healthcare/hl7.md
|
|
25
|
-
- docs/domainspecs/healthcare/dicom.md
|
|
26
|
-
- docs/domainspecs/healthcare/terminology.md
|
|
27
|
-
- docs/domainspecs/healthcare/hipaa.md
|
|
28
|
-
- docs/domainspecs/healthcare/consent.md
|
|
29
|
-
- docs/domainspecs/healthcare/data-classification.domain.md
|
|
30
|
-
- docs/domainspecs/healthcare/ai-rules.domain.md
|
|
31
|
-
|
|
32
|
-
## /aw-spec-clarify
|
|
33
|
-
- docs/domainspecs/healthcare/domain-driven-design.domain.md
|
|
34
|
-
- docs/domainspecs/healthcare/hl7.md
|
|
35
|
-
- docs/domainspecs/healthcare/hipaa.md
|
|
36
|
-
- docs/domainspecs/healthcare/consent.md
|
|
37
|
-
- docs/domainspecs/healthcare/clinical-terms.md
|
|
38
|
-
- docs/domainspecs/healthcare/integration-terms.md
|
|
39
|
-
|
|
40
|
-
## /aw-spec-plan
|
|
41
|
-
- docs/domainspecs/healthcare/folder-structure.domain.md
|
|
42
|
-
- docs/domainspecs/healthcare/cqrs.domain.md
|
|
43
|
-
- docs/domainspecs/healthcare/vertical-slices.domain.md
|
|
44
|
-
- docs/domainspecs/healthcare/persistence.domain.md
|
|
45
|
-
- docs/domainspecs/healthcare/testing.domain.md
|
|
46
|
-
- docs/domainspecs/healthcare/eventing.domain.md
|
|
47
|
-
- docs/domainspecs/healthcare/domain-driven-design.domain.md
|
|
48
|
-
- docs/domainspecs/healthcare/fhir.md
|
|
49
|
-
- docs/domainspecs/healthcare/hl7.md
|
|
50
|
-
- docs/domainspecs/healthcare/dicom.md
|
|
51
|
-
- docs/domainspecs/healthcare/terminology.md
|
|
52
|
-
- docs/domainspecs/healthcare/hipaa.md
|
|
53
|
-
- docs/domainspecs/healthcare/consent.md
|
|
54
|
-
- docs/domainspecs/healthcare/zero-trust.domain.md
|
|
55
|
-
- docs/domainspecs/healthcare/authorization.domain.md
|
|
56
|
-
- docs/domainspecs/healthcare/auditing.domain.md
|
|
57
|
-
- docs/domainspecs/healthcare/data-classification.domain.md
|
|
58
|
-
- docs/domainspecs/healthcare/coding-standards.domain.md
|
|
59
|
-
- docs/domainspecs/healthcare/dependency-policy.domain.md
|
|
60
|
-
- docs/domainspecs/healthcare/api-versioning.domain.md
|
|
61
|
-
- docs/domainspecs/healthcare/ai-rules.domain.md
|
|
62
|
-
|
|
63
|
-
## /aw-spec-tasks
|
|
64
|
-
- docs/domainspecs/healthcare/folder-structure.domain.md
|
|
65
|
-
- docs/domainspecs/healthcare/vertical-slices.domain.md
|
|
66
|
-
- docs/domainspecs/healthcare/cqrs.domain.md
|
|
67
|
-
- docs/domainspecs/healthcare/persistence.domain.md
|
|
68
|
-
- docs/domainspecs/healthcare/testing.domain.md
|
|
69
|
-
- docs/domainspecs/healthcare/eventing.domain.md
|
|
70
|
-
- docs/domainspecs/healthcare/domain-driven-design.domain.md
|
|
71
|
-
- docs/domainspecs/healthcare/fhir.md
|
|
72
|
-
- docs/domainspecs/healthcare/hl7.md
|
|
73
|
-
- docs/domainspecs/healthcare/authorization.domain.md
|
|
74
|
-
- docs/domainspecs/healthcare/auditing.domain.md
|
|
75
|
-
- docs/domainspecs/healthcare/coding-standards.domain.md
|
|
76
|
-
- docs/domainspecs/healthcare/ai-rules.domain.md
|
|
77
|
-
|
|
78
|
-
## /aw-spec-analyze
|
|
79
|
-
- docs/domainspecs/healthcare/hl7.md
|
|
80
|
-
- docs/domainspecs/healthcare/hipaa.md
|
|
81
|
-
- docs/domainspecs/healthcare/auditing.domain.md
|
|
82
|
-
- docs/domainspecs/healthcare/coding-standards.domain.md
|
|
83
|
-
- docs/domainspecs/healthcare/ai-rules.domain.md
|
|
84
|
-
|
|
85
|
-
## /aw-spec-implement
|
|
86
|
-
- docs/domainspecs/healthcare/folder-structure.domain.md
|
|
87
|
-
- docs/domainspecs/healthcare/vertical-slices.domain.md
|
|
88
|
-
- docs/domainspecs/healthcare/cqrs.domain.md
|
|
89
|
-
- docs/domainspecs/healthcare/persistence.domain.md
|
|
90
|
-
- docs/domainspecs/healthcare/testing.domain.md
|
|
91
|
-
- docs/domainspecs/healthcare/eventing.domain.md
|
|
92
|
-
- docs/domainspecs/healthcare/domain-driven-design.domain.md
|
|
93
|
-
- docs/domainspecs/healthcare/fhir.md
|
|
94
|
-
- docs/domainspecs/healthcare/hl7.md
|
|
95
|
-
- docs/domainspecs/healthcare/terminology.md
|
|
96
|
-
- docs/domainspecs/healthcare/hipaa.md
|
|
97
|
-
- docs/domainspecs/healthcare/consent.md
|
|
98
|
-
- docs/domainspecs/healthcare/authorization.domain.md
|
|
99
|
-
- docs/domainspecs/healthcare/auditing.domain.md
|
|
100
|
-
- docs/domainspecs/healthcare/data-classification.domain.md
|
|
101
|
-
- docs/domainspecs/healthcare/zero-trust.domain.md
|
|
102
|
-
- docs/domainspecs/healthcare/coding-standards.domain.md
|
|
103
|
-
- docs/domainspecs/healthcare/dependency-policy.domain.md
|
|
104
|
-
- docs/domainspecs/healthcare/api-versioning.domain.md
|
|
105
|
-
- docs/domainspecs/healthcare/ai-rules.domain.md
|
|
106
|
-
|
|
107
|
-
## /aw-spec-fast-implement
|
|
108
|
-
|
|
109
|
-
> Fast path that collapses plan + tasks + analyze + implement into one pass. This list is the
|
|
110
|
-
> **deduplicated union** of those four commands' headings above (here, equal to `/aw-spec-plan`).
|
|
111
|
-
> Load it **once** for the whole pass — do not reload per phase.
|
|
112
|
-
|
|
113
|
-
- docs/domainspecs/healthcare/folder-structure.domain.md
|
|
114
|
-
- docs/domainspecs/healthcare/cqrs.domain.md
|
|
115
|
-
- docs/domainspecs/healthcare/vertical-slices.domain.md
|
|
116
|
-
- docs/domainspecs/healthcare/persistence.domain.md
|
|
117
|
-
- docs/domainspecs/healthcare/testing.domain.md
|
|
118
|
-
- docs/domainspecs/healthcare/eventing.domain.md
|
|
119
|
-
- docs/domainspecs/healthcare/domain-driven-design.domain.md
|
|
120
|
-
- docs/domainspecs/healthcare/fhir.md
|
|
121
|
-
- docs/domainspecs/healthcare/hl7.md
|
|
122
|
-
- docs/domainspecs/healthcare/dicom.md
|
|
123
|
-
- docs/domainspecs/healthcare/terminology.md
|
|
124
|
-
- docs/domainspecs/healthcare/hipaa.md
|
|
125
|
-
- docs/domainspecs/healthcare/consent.md
|
|
126
|
-
- docs/domainspecs/healthcare/zero-trust.domain.md
|
|
127
|
-
- docs/domainspecs/healthcare/authorization.domain.md
|
|
128
|
-
- docs/domainspecs/healthcare/auditing.domain.md
|
|
129
|
-
- docs/domainspecs/healthcare/data-classification.domain.md
|
|
130
|
-
- docs/domainspecs/healthcare/coding-standards.domain.md
|
|
131
|
-
- docs/domainspecs/healthcare/dependency-policy.domain.md
|
|
132
|
-
- docs/domainspecs/healthcare/api-versioning.domain.md
|
|
133
|
-
- docs/domainspecs/healthcare/ai-rules.domain.md
|
|
134
|
-
|
|
135
|
-
## /aw-spec-minimal-implementation
|
|
136
|
-
|
|
137
|
-
> Single-step set for healthcare — the **per-domain knob** (edit freely). `/aw-spec-minimal-implementation`
|
|
138
|
-
> loads these to interpret and implement the requirement in one pass; genuinely-external runtime
|
|
139
|
-
> services (terminology server, FHIR endpoint) are stubbed behind ports. For an audited build use
|
|
140
|
-
> `## /aw-spec-fast-implement`.
|
|
141
|
-
|
|
142
|
-
- docs/domainspecs/healthcare/clinical-terms.md
|
|
143
|
-
- docs/domainspecs/healthcare/domain-driven-design.domain.md
|
|
144
|
-
- docs/domainspecs/healthcare/folder-structure.domain.md
|
|
145
|
-
- docs/domainspecs/healthcare/vertical-slices.domain.md
|
|
146
|
-
- docs/domainspecs/healthcare/fhir.md
|
|
147
|
-
- docs/domainspecs/healthcare/hl7.md
|
|
148
|
-
- docs/domainspecs/healthcare/terminology.md
|
|
149
|
-
- docs/domainspecs/healthcare/hipaa.md
|
|
150
|
-
- docs/domainspecs/healthcare/ai-rules.domain.md
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## Quick reference (command → file count)
|
|
155
|
-
|
|
156
|
-
| Command | Domain rule files |
|
|
157
|
-
|---|---|
|
|
158
|
-
| /aw-spec-constitution | 2 |
|
|
159
|
-
| /aw-spec-specify | 12 |
|
|
160
|
-
| /aw-spec-clarify | 6 |
|
|
161
|
-
| /aw-spec-plan | 21 |
|
|
162
|
-
| /aw-spec-tasks | 13 |
|
|
163
|
-
| /aw-spec-analyze | 5 |
|
|
164
|
-
| /aw-spec-implement | 20 |
|
|
165
|
-
| /aw-spec-fast-implement | 21 |
|
|
166
|
-
| /aw-spec-minimal-implementation | 9 |
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# Consent Standards
|
|
2
|
-
|
|
3
|
-
> NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
|
|
4
|
-
|
|
5
|
-
## First-class aggregate
|
|
6
|
-
- Consent is a **first-class aggregate** (Patients module). A **withdrawn consent MUST block downstream PHI disclosure** for the purpose-of-use **immediately**; state changes emit `ConsentChangedEvent` (see [[eventing]]).
|
|
7
|
-
- The access-control pipeline **MUST check consent before releasing PHI** outside the treating-provider context. Denial surfaces as `ConsentDeniedException` from the Domain (see [[domain-driven-design.domain]], [[authorization.domain]]).
|
|
8
|
-
|
|
9
|
-
## Break-the-glass
|
|
10
|
-
- Explicit **emergency-access command**: documented reason + high-priority audit + real-time alert; audit-mandatory (see [[auditing.domain]]).
|
|
11
|
-
|
|
12
|
-
## Restriction-of-processing
|
|
13
|
-
- GDPR restriction (Art. 18) + erasure (Art. 17) are first-class audited commands. Where law forbids erasing medical records, **restriction-of-processing is the fallback** (see [[hipaa]], [[persistence.domain]]).
|
|
14
|
-
|
|
15
|
-
## FHIR mapping
|
|
16
|
-
- **BPPC** + **FHIR Consent** profiles honored; Consent projects to the FHIR `Consent` resource (see [[fhir]]).
|
|
17
|
-
|
|
18
|
-
## Related
|
|
19
|
-
- [[hipaa]] · [[authorization.domain]] · [[auditing.domain]] · [[fhir]] · [[domain-driven-design.domain]]
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# CQRS — Healthcare Domain Addenda
|
|
2
|
-
|
|
3
|
-
> Technology base: [[cqrs]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
|
|
4
|
-
|
|
5
|
-
## Pipeline
|
|
6
|
-
- Append a **PHI-access-audit behavior** to the mediator pipeline (beyond generic logging + FluentValidation): emit an audit record for every command/query touching PHI (see [[auditing.domain]]).
|
|
7
|
-
|
|
8
|
-
## Error codes
|
|
9
|
-
Dot-namespaced slugs (see [[cqrs]]). Examples: `patient.not_found` · `claim.duplicate_submission` · `consent.denied` · `concurrency.conflict`.
|
|
10
|
-
|
|
11
|
-
## Related
|
|
12
|
-
- [[cqrs]] · [[auditing.domain]] · [[hipaa]] · [[domain-driven-design.domain]]
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# Data Classification — Healthcare Domain Addenda
|
|
2
|
-
|
|
3
|
-
> Technology base: [[data-classification]]. NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-implement`.
|
|
4
|
-
|
|
5
|
-
## Categories
|
|
6
|
-
| Class | Extra rules |
|
|
7
|
-
|---|---|
|
|
8
|
-
| **PHI** (clinical, demographic, identifiers) | Minimum-necessary; audited; encrypted |
|
|
9
|
-
| **PII** (non-clinical identifiers) | Encrypted; minimum-necessary |
|
|
10
|
-
| **PCI** (payment) | **Out of scope** — route to a PCI-DSS processor |
|
|
11
|
-
| **Behavioral Health** (42 CFR Part 2) | Extra-sensitive; field-level encryption |
|
|
12
|
-
| **Genetic** (GINA) | Extra-sensitive |
|
|
13
|
-
| **Pediatric** (minors) | Extended retention; heightened protection |
|
|
14
|
-
|
|
15
|
-
## Field-level encryption (required)
|
|
16
|
-
SSN, government IDs, payment-card data, behavioral-health flags (see [[hipaa]], [[persistence.domain]]).
|
|
17
|
-
|
|
18
|
-
## Logging
|
|
19
|
-
- **NEVER** log/emit any PHI element, full SSN, government ID, or full payment-card data.
|
|
20
|
-
- PHI-logging analyzer (CI gate): no Patient/Encounter/Observation/MedicationRequest field logged except the ID (see [[coding-standards.domain]]).
|
|
21
|
-
|
|
22
|
-
## Export
|
|
23
|
-
- Analytics/research/non-prod exports MUST pass **Safe-Harbor or Expert-Determination** de-identification.
|
|
24
|
-
- **Production PHI in non-production is FORBIDDEN** (see [[hipaa]], [[testing.domain]]).
|
|
25
|
-
- Bulk `$export` gated by authorization + de-identification (see [[fhir]]).
|
|
26
|
-
|
|
27
|
-
## Related
|
|
28
|
-
- [[data-classification]] · [[hipaa]] · [[auditing.domain]] · [[authorization.domain]] · [[persistence.domain]] · [[coding-standards.domain]]
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# Dependency Policy — Healthcare Domain Addenda
|
|
2
|
-
|
|
3
|
-
> Technology base: [[dependency-policy]]. Commands: `/aw-spec-plan`, `/aw-spec-implement`.
|
|
4
|
-
|
|
5
|
-
## Reviews & libraries
|
|
6
|
-
- Every new dependency gets a **HIPAA-suitability** review beyond the generic license/supply-chain check — e.g. reject a logging package that ships analytics by default (PHI-exfiltration risk) (see [[hipaa]], [[data-classification.domain]]).
|
|
7
|
-
- FHIR: the **official FHIR .NET SDK**, version-matched to the endpoint (R4/R5; see [[fhir]]).
|
|
8
|
-
- HL7 v2 / DICOM libraries are added **only** on explicit developer request — no AI-introduced healthcare-protocol dependencies (see [[hl7]], [[dicom]], [[ai-rules.domain]]).
|
|
9
|
-
|
|
10
|
-
## Related
|
|
11
|
-
- [[dependency-policy]] · [[fhir]] · [[hl7]] · [[dicom]] · [[hipaa]] · [[ai-rules.domain]]
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# DICOM Standards
|
|
2
|
-
|
|
3
|
-
> Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
|
|
4
|
-
|
|
5
|
-
## DICOMweb façade
|
|
6
|
-
- Supported via a **DICOMweb façade** — **QIDO-RS** (query), **WADO-RS** (retrieve), **STOW-RS** (store) — fronting a separately deployed PACS/VNA. Adapters live in `{Module}/Interop/Dicom/` (Radiology only).
|
|
7
|
-
- The PACS/VNA endpoint is an Aspire resource referenced via `.WithReference(...)`; hosts/ports discovered through Aspire, never hard-coded.
|
|
8
|
-
|
|
9
|
-
## Metadata only
|
|
10
|
-
- **Only DICOM METADATA is persisted here** — pixel data lives in the PACS/VNA, referenced by study/series/instance UIDs.
|
|
11
|
-
- Radiology aggregates: `ImagingOrder`, `ImagingStudy` (metadata), `DiagnosticReport`; results surface via FHIR projections (`ImagingStudy`, `DiagnosticReport`; see [[fhir]]).
|
|
12
|
-
- Trace context propagates across DICOM outbound calls (see [[auditing]]).
|
|
13
|
-
|
|
14
|
-
## Related
|
|
15
|
-
- [[fhir]] · [[integration-terms]] · [[domain-driven-design]]
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# Domain-Driven Design — Healthcare Domain Model
|
|
2
|
-
|
|
3
|
-
> Technology base: [[domain-driven-design]]. NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
|
|
4
|
-
|
|
5
|
-
## Modeling
|
|
6
|
-
- Use the clinical/interop ubiquitous language (see [[clinical-terms]], [[integration-terms]]).
|
|
7
|
-
- FHIR-aligned, but **FHIR resources are projections, not the system of record** (see [[fhir]]).
|
|
8
|
-
- Coded concepts use industry terminologies, never free text (see [[terminology]]); coded value objects follow the FHIR pattern (`Codeable`, `Coding`, `Quantity`, `Period`, `Range`, `Ratio`, `Identifier`, `HumanName`, `Address`, `ContactPoint`).
|
|
9
|
-
- Domain may throw `ConsentDeniedException` beyond generic Domain exceptions (see [[consent]]).
|
|
10
|
-
|
|
11
|
-
## Aggregates & invariants
|
|
12
|
-
- **Patient** — MRN unique per tenant; DOB <= today; merge only via `MergePatientsCommand` preserving audit; minimum-necessary projection by role/scope.
|
|
13
|
-
- **Consent** — withdrawal blocks downstream PHI disclosure for the purpose-of-use immediately; emits `ConsentChangedEvent` (see [[consent]]).
|
|
14
|
-
- **Appointment** — no overlap with a booked slot for the same Practitioner/Resource; no past booking; late cancellation (< N hrs) emits `LateCancellationEvent`.
|
|
15
|
-
- **Encounter** — not Closed/Discharged while any open Order/Result/ChargeItem/unsigned ClinicalNote exists; admission requires active Coverage or documented self-pay.
|
|
16
|
-
- **ClinicalNote** — Signed = immutable; addendum is a new linked note; deletion forbidden (supersede via Amend).
|
|
17
|
-
- **MedicationRequest** — dispense forbidden on active allergy match, lethal interaction, or pediatric/renal contraindication without a documented override (prescriber, reason, timestamp).
|
|
18
|
-
- **ControlledSubstanceLedger** — every dispense/waste must balance; append-only; daily reconciliation.
|
|
19
|
-
- **LabOrder/ImagingOrder** — not Cancellable once a Specimen/Image is acquired; transition to Aborted with a reason.
|
|
20
|
-
- **Claim** — total billed = sum(ChargeItem.amount); resubmission needs a new ClaimVersion; none after final adjudication unless an Appeal is opened.
|
|
21
|
-
- **InventoryItem** — stock <= 0 forbidden; dispensing an expired Lot rejected; near-expiry emits `ExpiryAlertEvent`.
|
|
22
|
-
- **AuditRecord** — append-only; no update/delete; retention >= 6 years (see [[auditing.domain]]).
|
|
23
|
-
|
|
24
|
-
## AI guidance
|
|
25
|
-
See [[ai-rules.domain]] — confirm signatures, use the official FHIR SDK, never invent codes, mask PHI.
|
|
26
|
-
|
|
27
|
-
## Related
|
|
28
|
-
- [[domain-driven-design]] · [[fhir]] · [[terminology]] · [[consent]] · [[clinical-terms]] · [[integration-terms]] · [[auditing.domain]] · [[persistence.domain]] · [[ai-rules.domain]]
|