aw-spec-cli 0.1.0 → 0.1.2

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.
Files changed (173) hide show
  1. package/assets/.agents/skills/aw-spec-addcomponent/SKILL.md +129 -0
  2. package/assets/.agents/skills/aw-spec-agent-context-update/SKILL.md +31 -0
  3. package/assets/.agents/skills/aw-spec-analyze/SKILL.md +296 -0
  4. package/assets/.agents/skills/aw-spec-checklist/SKILL.md +374 -0
  5. package/assets/.agents/skills/aw-spec-clarify/SKILL.md +320 -0
  6. package/assets/.agents/skills/aw-spec-constitution/SKILL.md +194 -0
  7. package/assets/.agents/skills/aw-spec-fast-implement/SKILL.md +268 -0
  8. package/assets/.agents/skills/aw-spec-foundation/SKILL.md +358 -0
  9. package/assets/.agents/skills/aw-spec-implement/SKILL.md +279 -0
  10. package/assets/.agents/skills/aw-spec-minimal-implementation/SKILL.md +209 -0
  11. package/assets/.agents/skills/aw-spec-plan/SKILL.md +221 -0
  12. package/assets/.agents/skills/aw-spec-select-domain/SKILL.md +73 -0
  13. package/assets/.agents/skills/aw-spec-specify/SKILL.md +382 -0
  14. package/assets/.agents/skills/aw-spec-tasks/SKILL.md +259 -0
  15. package/assets/.agents/skills/aw-spec-taskstoissues/SKILL.md +107 -0
  16. package/assets/.aw-spec/domain.json +3 -0
  17. package/assets/.aw-spec/extensions/.registry +19 -0
  18. package/assets/.aw-spec/extensions/agent-context/README.md +57 -0
  19. package/assets/.aw-spec/extensions/agent-context/agent-context-config.yml +4 -0
  20. package/assets/.aw-spec/extensions/agent-context/commands/aw-spec.agent-context.update.md +26 -0
  21. package/assets/.aw-spec/extensions/agent-context/extension.yml +34 -0
  22. package/assets/.aw-spec/extensions/agent-context/scripts/bash/update-agent-context.sh +201 -0
  23. package/assets/.aw-spec/extensions/agent-context/scripts/powershell/update-agent-context.ps1 +237 -0
  24. package/assets/.aw-spec/extensions.yml +23 -0
  25. package/assets/.aw-spec/feature.json +3 -0
  26. package/assets/.aw-spec/init-options.json +9 -0
  27. package/assets/.aw-spec/integration.json +15 -0
  28. package/assets/.aw-spec/integrations/aw-spec.manifest.json +17 -0
  29. package/assets/.aw-spec/integrations/claude.manifest.json +17 -0
  30. package/assets/.aw-spec/memory/constitution.md +50 -0
  31. package/assets/.aw-spec/scripts/bash/check-prerequisites.sh +189 -0
  32. package/assets/.aw-spec/scripts/bash/common.sh +582 -0
  33. package/assets/.aw-spec/scripts/bash/create-new-feature.sh +299 -0
  34. package/assets/.aw-spec/scripts/bash/setup-plan.sh +84 -0
  35. package/assets/.aw-spec/scripts/bash/setup-tasks.sh +91 -0
  36. package/assets/.aw-spec/templates/checklist-template.md +40 -0
  37. package/assets/.aw-spec/templates/constitution-template.md +57 -0
  38. package/assets/.aw-spec/templates/plan-template.md +113 -0
  39. package/assets/.aw-spec/templates/spec-template.md +131 -0
  40. package/assets/.aw-spec/templates/tasks-template.md +252 -0
  41. package/assets/.aw-spec/workflows/aw-spec/workflow.yml +77 -0
  42. package/assets/.aw-spec/workflows/workflow-registry.json +13 -0
  43. package/assets/.claude/skills/aw-spec-addcomponent/SKILL.md +129 -0
  44. package/assets/.claude/skills/aw-spec-agent-context-update/SKILL.md +31 -0
  45. package/assets/.claude/skills/aw-spec-analyze/SKILL.md +296 -0
  46. package/assets/.claude/skills/aw-spec-checklist/SKILL.md +374 -0
  47. package/assets/.claude/skills/aw-spec-clarify/SKILL.md +320 -0
  48. package/assets/.claude/skills/aw-spec-constitution/SKILL.md +194 -0
  49. package/assets/.claude/skills/aw-spec-fast-implement/SKILL.md +268 -0
  50. package/assets/.claude/skills/aw-spec-foundation/SKILL.md +358 -0
  51. package/assets/.claude/skills/aw-spec-implement/SKILL.md +279 -0
  52. package/assets/.claude/skills/aw-spec-minimal-implementation/SKILL.md +209 -0
  53. package/assets/.claude/skills/aw-spec-plan/SKILL.md +221 -0
  54. package/assets/.claude/skills/aw-spec-select-domain/SKILL.md +73 -0
  55. package/assets/.claude/skills/aw-spec-specify/SKILL.md +382 -0
  56. package/assets/.claude/skills/aw-spec-tasks/SKILL.md +259 -0
  57. package/assets/.claude/skills/aw-spec-taskstoissues/SKILL.md +107 -0
  58. package/assets/.kilocode/rules/specify-rules.md +4 -0
  59. package/assets/.kilocode/workflows/aw-spec-addcomponent.md +129 -0
  60. package/assets/.kilocode/workflows/aw-spec-agent-context.update.md +31 -0
  61. package/assets/.kilocode/workflows/aw-spec-analyze.md +296 -0
  62. package/assets/.kilocode/workflows/aw-spec-checklist.md +374 -0
  63. package/assets/.kilocode/workflows/aw-spec-clarify.md +320 -0
  64. package/assets/.kilocode/workflows/aw-spec-constitution.md +194 -0
  65. package/assets/.kilocode/workflows/aw-spec-fast-implement.md +263 -0
  66. package/assets/.kilocode/workflows/aw-spec-foundation.md +358 -0
  67. package/assets/.kilocode/workflows/aw-spec-implement.md +279 -0
  68. package/assets/.kilocode/workflows/aw-spec-minimal-implementation.md +204 -0
  69. package/assets/.kilocode/workflows/aw-spec-plan.md +221 -0
  70. package/assets/.kilocode/workflows/aw-spec-select-domain.md +73 -0
  71. package/assets/.kilocode/workflows/aw-spec-specify.md +382 -0
  72. package/assets/.kilocode/workflows/aw-spec-tasks.md +259 -0
  73. package/assets/.kilocode/workflows/aw-spec-taskstoissues.md +107 -0
  74. package/assets/docs/README.md +106 -0
  75. package/assets/docs/VerticalSlice/PACKAGING.md +185 -0
  76. package/assets/docs/VerticalSlice/VerticalSlice.pack.txt +2833 -0
  77. package/assets/docs/VerticalSlice/pack-foundation.ps1 +145 -0
  78. package/assets/docs/VerticalSlice/pack-foundation.sh +196 -0
  79. package/assets/docs/VerticalSlice/unpack-foundation.ps1 +126 -0
  80. package/assets/docs/VerticalSlice/unpack-foundation.sh +217 -0
  81. package/assets/docs/architecture/clean-architecture.md +71 -0
  82. package/assets/docs/architecture/cqrs.md +141 -0
  83. package/assets/docs/architecture/eventing.md +83 -0
  84. package/assets/docs/architecture/folder-structure.md +61 -0
  85. package/assets/docs/architecture/modular-monolith.md +47 -0
  86. package/assets/docs/architecture/persistence.md +269 -0
  87. package/assets/docs/architecture/testing.md +55 -0
  88. package/assets/docs/architecture/vertical-slices.md +201 -0
  89. package/assets/docs/command.txt +295 -0
  90. package/assets/docs/components/Email/README.md +112 -0
  91. package/assets/docs/components/Email/integration.md +260 -0
  92. package/assets/docs/components/Jobs/README.md +113 -0
  93. package/assets/docs/components/Jobs/integration.md +245 -0
  94. package/assets/docs/components/QrGenerator/README.md +78 -0
  95. package/assets/docs/components/QrGenerator/integration.md +185 -0
  96. package/assets/docs/components/README.md +57 -0
  97. package/assets/docs/domain/domain-driven-design.md +212 -0
  98. package/assets/docs/domainspecs/healthcare/ai-rules.domain.md +34 -0
  99. package/assets/docs/domainspecs/healthcare/api-versioning.domain.md +17 -0
  100. package/assets/docs/domainspecs/healthcare/auditing.domain.md +29 -0
  101. package/assets/docs/domainspecs/healthcare/authorization.domain.md +26 -0
  102. package/assets/docs/domainspecs/healthcare/clinical-terms.md +20 -0
  103. package/assets/docs/domainspecs/healthcare/coding-standards.domain.md +26 -0
  104. package/assets/docs/domainspecs/healthcare/comandrulemap.md +119 -0
  105. package/assets/docs/domainspecs/healthcare/consent.md +19 -0
  106. package/assets/docs/domainspecs/healthcare/cqrs.domain.md +12 -0
  107. package/assets/docs/domainspecs/healthcare/data-classification.domain.md +28 -0
  108. package/assets/docs/domainspecs/healthcare/dependency-policy.domain.md +11 -0
  109. package/assets/docs/domainspecs/healthcare/dicom.md +15 -0
  110. package/assets/docs/domainspecs/healthcare/domain-driven-design.domain.md +28 -0
  111. package/assets/docs/domainspecs/healthcare/domain-requirements.md +55 -0
  112. package/assets/docs/domainspecs/healthcare/eventing.domain.md +18 -0
  113. package/assets/docs/domainspecs/healthcare/fhir.md +36 -0
  114. package/assets/docs/domainspecs/healthcare/folder-structure.domain.md +23 -0
  115. package/assets/docs/domainspecs/healthcare/hipaa.md +34 -0
  116. package/assets/docs/domainspecs/healthcare/hl7.md +15 -0
  117. package/assets/docs/domainspecs/healthcare/integration-terms.md +21 -0
  118. package/assets/docs/domainspecs/healthcare/persistence.domain.md +20 -0
  119. package/assets/docs/domainspecs/healthcare/terminology.md +30 -0
  120. package/assets/docs/domainspecs/healthcare/testing.domain.md +15 -0
  121. package/assets/docs/domainspecs/healthcare/vertical-slices.domain.md +18 -0
  122. package/assets/docs/domainspecs/healthcare/zero-trust.domain.md +12 -0
  123. package/assets/docs/domainspecs/pharma/ai-rules.domain.md +32 -0
  124. package/assets/docs/domainspecs/pharma/api-versioning.domain.md +20 -0
  125. package/assets/docs/domainspecs/pharma/atc.md +22 -0
  126. package/assets/docs/domainspecs/pharma/auditing.domain.md +26 -0
  127. package/assets/docs/domainspecs/pharma/authorization.domain.md +25 -0
  128. package/assets/docs/domainspecs/pharma/coding-standards.domain.md +28 -0
  129. package/assets/docs/domainspecs/pharma/comandrulemap.md +136 -0
  130. package/assets/docs/domainspecs/pharma/cqrs.domain.md +16 -0
  131. package/assets/docs/domainspecs/pharma/data-classification.domain.md +24 -0
  132. package/assets/docs/domainspecs/pharma/data-provenance.md +21 -0
  133. package/assets/docs/domainspecs/pharma/dependency-policy.domain.md +11 -0
  134. package/assets/docs/domainspecs/pharma/domain-driven-design.domain.md +36 -0
  135. package/assets/docs/domainspecs/pharma/domain-requirements.md +99 -0
  136. package/assets/docs/domainspecs/pharma/eventing.domain.md +18 -0
  137. package/assets/docs/domainspecs/pharma/fhir.md +31 -0
  138. package/assets/docs/domainspecs/pharma/folder-structure.domain.md +24 -0
  139. package/assets/docs/domainspecs/pharma/hl7.md +17 -0
  140. package/assets/docs/domainspecs/pharma/idmp.md +26 -0
  141. package/assets/docs/domainspecs/pharma/integration-terms.md +21 -0
  142. package/assets/docs/domainspecs/pharma/ndc.md +28 -0
  143. package/assets/docs/domainspecs/pharma/persistence.domain.md +23 -0
  144. package/assets/docs/domainspecs/pharma/pharma-terms.md +27 -0
  145. package/assets/docs/domainspecs/pharma/product-lifecycle.domain.md +30 -0
  146. package/assets/docs/domainspecs/pharma/regulatory-compliance.md +19 -0
  147. package/assets/docs/domainspecs/pharma/terminology.md +32 -0
  148. package/assets/docs/domainspecs/pharma/testing.domain.md +19 -0
  149. package/assets/docs/domainspecs/pharma/vertical-slices.domain.md +17 -0
  150. package/assets/docs/domainspecs/pharma/zero-trust.domain.md +12 -0
  151. package/assets/docs/glossary/ai-rules.md +59 -0
  152. package/assets/docs/governance/api-versioning.md +99 -0
  153. package/assets/docs/governance/coding-standards.md +87 -0
  154. package/assets/docs/governance/dependency-policy.md +40 -0
  155. package/assets/docs/interop/ihe-conformance.md +31 -0
  156. package/assets/docs/pharma-constitution.my-ref.md +86 -0
  157. package/assets/docs/requirement-spec.txt +15 -0
  158. package/assets/docs/security/auditing.md +117 -0
  159. package/assets/docs/security/authorization-matrix.md +14 -0
  160. package/assets/docs/security/authorization.md +87 -0
  161. package/assets/docs/security/data-classification.md +38 -0
  162. package/assets/docs/security/zero-trust.md +76 -0
  163. package/assets/docs/technology-constitution.md +172 -0
  164. package/dist/commands/init.d.ts.map +1 -1
  165. package/dist/commands/init.js +3 -2
  166. package/dist/commands/init.js.map +1 -1
  167. package/dist/utils/copy-assets.d.ts +8 -1
  168. package/dist/utils/copy-assets.d.ts.map +1 -1
  169. package/dist/utils/copy-assets.js +1 -0
  170. package/dist/utils/copy-assets.js.map +1 -1
  171. package/dist/utils/paths.js +1 -1
  172. package/dist/utils/paths.js.map +1 -1
  173. package/package.json +1 -1
@@ -0,0 +1,55 @@
1
+ # DOMAIN REQUIREMENTS (project-specific)
2
+
3
+ > Project-specific input, **updated independently per project**. The engineering constitution
4
+ > (the technology base composed with `healthcare-constitution.md`) references this file; the
5
+ > constitution stays domain-agnostic and supreme. Detailed domain *rules* are expanded in
6
+ > `docs/` — this file holds the
7
+ > per-project enumeration and headline profiles.
8
+ >
9
+ > Replace `<SampleProjectName>` and the bounded-context list below for a new project.
10
+
11
+ =====================================================================
12
+ [DOMAIN: Bounded Contexts / Modules]
13
+ =====================================================================
14
+ - Patients — aggregates: Patient (master patient index), Consent, RelatedPerson; cross-references via PIX/PDQ.
15
+ - Appointments — aggregates: Appointment, Slot, Schedule, Waitlist.
16
+ - Encounters — aggregates: Encounter (inpatient, outpatient, emergency), Admission, Transfer, Discharge.
17
+ - EMR — aggregates: ClinicalNote, ProblemList, AllergyIntolerance, MedicationStatement, Observation (vitals, social history), Immunization, CarePlan, ServiceRequest, Procedure.
18
+ - Radiology — aggregates: ImagingOrder, ImagingStudy (DICOM metadata), DiagnosticReport (radiology); pixel data lives in PACS/VNA.
19
+ - Lab — aggregates: LabOrder, Specimen, Observation (lab result), DiagnosticReport (lab).
20
+ - Pharmacy — aggregates: MedicationRequest, MedicationDispense, MedicationAdministration, Formulary, ControlledSubstanceLedger.
21
+ - Billing — aggregates: ChargeItem, Invoice, Claim, ClaimResponse, PaymentReconciliation, Account, AdjustmentEntry.
22
+ - Insurance — aggregates: Coverage, Payer, Plan, EligibilityRequest, EligibilityResponse, PriorAuth.
23
+ - Inventory — aggregates: InventoryItem, Lot, StockMovement, Reservation, ExpiryAlert.
24
+ - Interoperability — aggregates: IntegrationEndpoint, MessageEnvelope (HL7v2), FhirSubscription, BulkExportJob.
25
+ - PatientPortal — aggregates: PortalAccount (identity-bound), MessageThread, AppointmentRequest, RecordAccessRequest.
26
+ - Identity — aggregates: Practitioner, PractitionerRole, Organization, Location, HealthcareService.
27
+ - Auditing — aggregates: AuditRecord (append-only, ATNA + FHIR AuditEvent shape).
28
+ - Terminology — aggregates: CodeSystem, ValueSet, ConceptMap (project-managed subsets; expansions cached from external TS).
29
+
30
+ =====================================================================
31
+ [DOMAIN: subsection pointers]
32
+ =====================================================================
33
+ [DOMAIN: Aggregates and Business Invariants] -> docs/domainspecs/healthcare/domain-driven-design.domain.md
34
+ [DOMAIN: Persistence Profile] -> docs/domainspecs/healthcare/persistence.domain.md
35
+ [DOMAIN: Security Profile] -> docs/domainspecs/healthcare/authorization.domain.md, docs/domainspecs/healthcare/data-classification.domain.md
36
+ [DOMAIN: Testing Profile] -> docs/domainspecs/healthcare/testing.domain.md
37
+ [DOMAIN: AI Policy Addenda] -> docs/domainspecs/healthcare/ai-rules.domain.md
38
+ [DOMAIN: Platform Topology] -> below
39
+
40
+ =====================================================================
41
+ [DOMAIN: Platform Topology]
42
+ =====================================================================
43
+ - Target runtime: Kubernetes (AKS, EKS, or on-prem). Single-region by default; multi-region active/passive for DR.
44
+ - External dependencies (Aspire resources): PostgreSQL (primary), Redis (cache + portal session), a message broker (Azure Service Bus, AWS SQS/SNS, or RabbitMQ) for CloudEvents, an OTel collector, the configured IdP, an external Terminology Service (optional), a FHIR validator container, a PACS/VNA endpoint (DICOMweb), an HL7v2 broker (MLLP), an SMTP/SMS gateway, an object store (S3/Blob) for binaries.
45
+ - Scale targets: P95 read latency < 200 ms at 200 RPS per module; FHIR search P95 < 500 ms; HL7v2 ingest sustains 50 messages/sec per channel.
46
+ - Disaster recovery: RPO <= 15 minutes, RTO <= 4 hours; daily encrypted backups with 35-day retention plus monthly archive >= 7 years.
47
+
48
+ =====================================================================
49
+ [DOMAIN: Governance Overrides]
50
+ =====================================================================
51
+ - Principal Engineers (approvers): TBD — fill at ratification.
52
+ - Security/Compliance Officer (mandatory approver for any PHI/security change): TBD.
53
+ - Domain Owners (per module): TBD — assign one clinical and one technical owner per bounded context.
54
+ - Quarterly review cadence: first business week of each quarter; security review additionally after every significant regulatory update.
55
+ - Exception process: a time-boxed waiver via a Waiver Request issue, approved by a Principal Engineer + the Compliance Officer, with a mandatory expiry <= 90 days and a remediation plan recorded in the issue.
@@ -0,0 +1,18 @@
1
+ # Eventing — Healthcare Domain Addenda
2
+
3
+ > Technology base: [[eventing]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
4
+
5
+ ## Inbound feeds
6
+ Each translated to internal commands via Interop adapters — never writing aggregates directly (see [[eventing]]):
7
+ - HL7 v2 (ADT/ORM/ORU/SIU/MDM/DFT) — see [[hl7]]
8
+ - External EHR FHIR pulls — see [[fhir]]
9
+ - Lab / radiology result feeds; claim adjudication responses
10
+
11
+ ## Trace propagation
12
+ - Trace context MUST propagate across **HL7v2 / DICOM / FHIR** outbound calls (beyond generic mediator/`HttpClient`/EF Core propagation).
13
+
14
+ ## Single source of truth
15
+ - Authoritative system of record; consumers use FHIR / REST / CloudEvents / Bulk `$export` — **direct DB access FORBIDDEN** (see [[hipaa]]).
16
+
17
+ ## Related
18
+ - [[eventing]] · [[hl7]] · [[fhir]] · [[dicom]] · [[hipaa]]
@@ -0,0 +1,36 @@
1
+ # FHIR Standards
2
+
3
+ > NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
4
+
5
+ ## Architecture
6
+ - **R4 is the default external contract**; R5 is **additive** under `/fhir/R5/...`.
7
+ - FHIR is the canonical interop contract; internal REST is for first-party apps. Both serve from the **same authoritative aggregates** — no duplicate write paths.
8
+
9
+ ## Projector rules (system of record)
10
+ - **FHIR resources are PROJECTIONS over the aggregates — NOT the system of record.**
11
+ - Mapping lives in `{Module}/Interop/Fhir/<Resource>Projector.cs`, hand-written + round-trip tested (`domain -> FHIR -> domain`; see [[testing]]).
12
+ - A second FHIR write path bypassing the aggregate is FORBIDDEN; FHIR representations **MUST NOT** replace internal DTOs (see [[vertical-slices]]).
13
+
14
+ ## Resources & terminology
15
+ - FHIR types come from the **official FHIR .NET SDK**, version-matched (R4/R5) to the endpoint.
16
+ - Coded fields map from `Codeable`/`Coding` VOs to FHIR `CodeableConcept`/`Coding` (see [[terminology]]).
17
+
18
+ ## Profiles & CapabilityStatement
19
+ - Honor **US Core** + project IGs; declare profiles/extensions/value-sets/search-params in `StructureDefinition` resources packaged with the service.
20
+ - Publish `CapabilityStatement` at `/fhir/metadata` (regenerates cleanly in CI; diff reviewed); `/metadata` + `/.well-known` may be `AllowAnonymous()`.
21
+ - Breaking changes require a **new version path** + published CapabilityStatement diff (see [[api-versioning.domain]]); FHIR validator passes for every modified resource/profile/example (CI gate).
22
+
23
+ ## Bundle / search / concurrency
24
+ - List endpoints use **Bundle/searchset** semantics (`_count`, `_offset`/`_page`, `_total`).
25
+ - Errors use `OperationOutcome` (HTTP 422 for validation).
26
+ - `If-Match` honored via the aggregate's concurrency token → FHIR **weak** ETag at the projection boundary (see [[persistence]]).
27
+
28
+ ## SMART & Bulk Data
29
+ - SMART app launch (EHR + standalone) MUST be supported — **PKCE mandatory; implicit flow forbidden**; scopes enforced on every endpoint (see [[authorization.domain]]).
30
+ - **Bulk `$export`** supported for authorized backend extraction; de-identification required for analytics/research (see [[hipaa]]).
31
+
32
+ ## IHE
33
+ - PIX/PDQ, XDS/XDS.b or MHD, ATNA, CT, BPPC followed where they apply; deviations in `docs/interop/ihe-conformance.md` (see [[integration-terms]], [[auditing.domain]]).
34
+
35
+ ## Related
36
+ - [[domain-driven-design.domain]] · [[terminology]] · [[hl7]] · [[dicom]] · [[consent]] · [[authorization.domain]] · [[api-versioning.domain]] · [[testing.domain]]
@@ -0,0 +1,23 @@
1
+ # Folder Structure — Healthcare Domain Addenda
2
+
3
+ > Technology base: [[folder-structure]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`. Replace `<SampleProjectName>`.
4
+
5
+ ## Additions to the base layout
6
+ ```
7
+ src/<SampleProjectName>.Service/
8
+ Infrastructure/Security/ auth handlers, scope evaluators, PHI-access pipeline
9
+ Infrastructure/Auditing/ ATNA + FHIR AuditEvent emitter
10
+ <Module>/Domain/<ValueObject>.cs coded VOs: Codeable, Coding, Quantity, HumanName, ...
11
+ <Module>/Interop/Fhir/ projectors, search-param handlers, IG profiles (see [[fhir]])
12
+ <Module>/Interop/Hl7v2/ inbound parsers + outbound emitters (see [[hl7]])
13
+ <Module>/Interop/Dicom/ DICOMweb adapters (Radiology only) (see [[dicom]])
14
+ tests/<SampleProjectName>.InteropTests/ FHIR-validator conformance (see [[testing.domain]])
15
+ tests/<SampleProjectName>.TestFixtures/ synthetic-PHI + terminology sentinels (see [[testing.domain]])
16
+ docs/interop/ihe-conformance.md · docs/interop/fhir-implementation-guide/
17
+ docs/security/hipaa-controls.md · docs/security/gdpr-controls.md
18
+ ```
19
+ - `Interop/` adapters translate to/from internal commands + projections (see [[vertical-slices.domain]]).
20
+ - Coded value objects follow the FHIR pattern (see [[terminology]], [[coding-standards.domain]]).
21
+
22
+ ## Related
23
+ - [[folder-structure]] · [[fhir]] · [[hl7]] · [[dicom]] · [[testing.domain]] · [[vertical-slices.domain]]
@@ -0,0 +1,34 @@
1
+ # HIPAA / PHI Protection Standards
2
+
3
+ > NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
4
+
5
+ ## Regime
6
+ PHI/ePHI under **HIPAA** (Privacy + Security + Breach Notification), **HITECH**, **21st Century Cures Act** anti-information-blocking, and **GDPR** where EU subjects apply, plus regional rules.
7
+
8
+ ## Minimum necessary
9
+ - Every PHI read/write endpoint enforces **minimum-necessary** — return only fields the caller's role + SMART scopes authorize.
10
+ - Field-level redaction lives in **projection extensions**, not controllers (see [[fhir]], [[authorization.domain]]).
11
+
12
+ ## Audit & consent
13
+ - Every PHI read/mutation, authentication, consent change, export, and break-the-glass MUST emit an immutable audit record (see [[auditing.domain]]).
14
+ - Consent is a first-class aggregate; the pipeline checks it before releasing PHI outside the treating-provider context (see [[consent]]).
15
+
16
+ ## Encryption
17
+ - **AES-256 at rest** (TDE + CMK), **TLS 1.2+** in transit (1.3 target), encrypted backups.
18
+ - App-level field encryption for SSN, government IDs, payment-card data, behavioral-health flags (see [[data-classification.domain]]).
19
+
20
+ ## De-identification
21
+ - Exports to analytics/research/non-prod MUST pass a **Safe-Harbor OR Expert-Determination** service.
22
+ - **Production PHI in dev/test/demo/CI is FORBIDDEN** — use synthetic-PHI fixtures (see [[testing.domain]]). De-identification without a documented method is a refusal condition (see [[ai-rules.domain]]).
23
+
24
+ ## Retention & rights
25
+ - `AuditRecord` >= 6 yrs; clinical per jurisdiction (US >= 6 yrs adult, longer for minors); financial >= 7 yrs; backups under the same CMK (see [[persistence.domain]]).
26
+ - Access, amendment, restriction, accounting-of-disclosures, erasure (GDPR Art. 17) are first-class commands with their own audit; where law forbids erasing medical records, **restriction-of-processing** is the fallback (see [[consent]]).
27
+
28
+ ## Breach, BAA, SSoT
29
+ - Anomalous access (volume spikes, off-hours mass reads, repeated denials) emits **Critical** alerts.
30
+ - Any outbound integration transmitting PHI is gated by a **BAA flag**; absence MUST refuse the integration at startup.
31
+ - Authoritative system of record; consumers use FHIR / REST / CloudEvents / Bulk `$export` — **direct DB access FORBIDDEN** (see [[eventing]]).
32
+
33
+ ## Related
34
+ - [[auditing.domain]] · [[consent]] · [[data-classification.domain]] · [[authorization.domain]] · [[zero-trust.domain]] · [[persistence.domain]] · [[testing.domain]] · [[ai-rules.domain]]
@@ -0,0 +1,15 @@
1
+ # HL7 v2 Standards
2
+
3
+ > Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
4
+
5
+ ## Adapters (not a parallel model)
6
+ - HL7 v2.x (**ADT, ORM, ORU, SIU, MDM, DFT**) MUST be supported via an **ingress adapter** → internal commands; an **egress adapter** converts domain events → outbound messages.
7
+ - Adapters live in `{Module}/Interop/Hl7v2/`; translate via `IMediator` — **MUST NOT** write aggregates directly (see [[eventing]], [[domain-driven-design]]). Bypassing them from an external feed is an AI refusal condition (see [[ai-rules.domain]]).
8
+ - Conformance tested against an **internal corpus** (see [[testing]]).
9
+
10
+ ## MLLP
11
+ - The HL7v2 broker (MLLP) is an Aspire resource referenced via `.WithReference(...)`; hosts/ports discovered through Aspire, never hard-coded.
12
+ - Ingest target: **50 messages/sec per channel**; trace context propagates across HL7v2 outbound calls (see [[auditing]]).
13
+
14
+ ## Related
15
+ - [[fhir]] · [[eventing]] · [[integration-terms]] · [[domain-driven-design]] · [[testing]]
@@ -0,0 +1,21 @@
1
+ # Glossary — Integration Terms
2
+
3
+ > Ubiquitous language for interoperability standards + IHE profiles. Commands: `/aw-spec-specify`, `/aw-spec-clarify`, `/aw-spec-plan`.
4
+
5
+ | Term | Definition |
6
+ |---|---|
7
+ | **HL7** | **HL7 v2.x** = legacy pipe-delimited messaging (ADT/ORM/ORU/SIU/MDM/DFT) via adapters (see [[hl7]]); **HL7 FHIR** = the resource-based standard (see [[fhir]]). |
8
+ | **FHIR** | Canonical external contract (R4 default, R5 additive); resources are projections over aggregates (see [[fhir]]). |
9
+ | **DICOM** | Imaging standard via DICOMweb (QIDO/WADO/STOW-RS); only metadata persisted here (see [[dicom]]). |
10
+ | **PIX / PDQ** | Patient Identifier Cross-referencing / Demographics Query (IHE) — used by Patients. |
11
+ | **ATNA** | Audit Trail + Node Authentication (IHE); audit records exportable as FHIR `AuditEvent` (see [[auditing.domain]]). |
12
+ | **MHD / XDS / XDS.b** | Document-sharing profiles (IHE); MHD is the FHIR-based lightweight alternative to XDS. |
13
+ | **CT** | Consistent Time (IHE) — synchronized clocks across nodes. |
14
+ | **BPPC** | Basic Patient Privacy Consents (IHE consent profile; see [[consent]]). |
15
+ | **SMART on FHIR** | OAuth2/OIDC app-launch for third-party apps; PKCE mandatory (see [[authorization.domain]]). |
16
+ | **Bulk Data / `$export`** | FHIR Bulk Data spec for population-level extraction; de-identified for analytics (see [[hipaa]]). |
17
+ | **CloudEvents** | CNCF durable async event-stream spec over the broker (see [[eventing]]). |
18
+ | **OpenAPI / CapabilityStatement / AsyncAPI** | Versioned machine-readable contracts for REST / FHIR / events (see [[api-versioning]]). |
19
+
20
+ ## Related
21
+ - [[clinical-terms]] · [[fhir]] · [[hl7]] · [[dicom]] · [[eventing.domain]] · [[auditing.domain]] · [[authorization.domain]] · [[api-versioning.domain]]
@@ -0,0 +1,20 @@
1
+ # Persistence — Healthcare Domain Addenda
2
+
3
+ > Technology base: [[persistence]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
4
+
5
+ ## Soft delete & retention
6
+ - Hard delete FORBIDDEN for any aggregate holding **clinical/financial/PHI** data — delete logically via `MarkAsDeleted(...)`. All aggregates are soft-deleted (no exemptions).
7
+ - `AuditRecord` is **append-only** — no delete (see [[auditing.domain]]).
8
+ - Retention: `AuditRecord` >= 6 years; clinical per jurisdiction (US >= 6 yrs adult, longer for minors); financial >= 7 years; backups under the same CMK.
9
+ - GDPR Art. 17 erasure → **restriction-of-processing** where law forbids erasing medical records (see [[consent]], [[hipaa]]).
10
+
11
+ ## Encryption
12
+ - Production PostgreSQL: **TDE with customer-managed keys (CMK)**.
13
+ - App-level field encryption for SSN, government IDs, payment-card data, behavioral-health flags (see [[data-classification.domain]], [[hipaa]]).
14
+
15
+ ## Tenancy & dev data
16
+ - Multi-hospital deployments MAY opt into tenant-per-database; default tenant-per-row.
17
+ - SQLite dev fixtures contain **no PHI** — production PHI in dev/test/CI is FORBIDDEN (see [[hipaa]]).
18
+
19
+ ## Related
20
+ - [[persistence]] · [[hipaa]] · [[auditing.domain]] · [[data-classification.domain]] · [[consent]]
@@ -0,0 +1,30 @@
1
+ # Terminology Standards
2
+
3
+ > NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
4
+
5
+ ## Coded value objects
6
+ - **Coded data MUST use industry terminologies — free-text strings for coded concepts are FORBIDDEN.**
7
+ - Every code-bearing field is a **`Codeable` value object** `{ system, code, version, display }` (mirrors FHIR `CodeableConcept`/`Coding`) — store code, code-system OID/URI, version, display.
8
+
9
+ ## Standard terminologies
10
+ | Domain | Terminology |
11
+ |---|---|
12
+ | Diagnoses | ICD-10-CM (US) / ICD-10 (WHO); ICD-11 where required |
13
+ | Procedures (billing / clinical / inpatient) | CPT, HCPCS Level II / SNOMED CT / ICD-10-PCS |
14
+ | Lab observations / document types | LOINC |
15
+ | Clinical concepts (problems, findings, body sites, allergies) | SNOMED CT |
16
+ | Medications | RxNorm (US); NDC (dispense identity); ATC (analytics) |
17
+ | Units of measure | UCUM |
18
+ | Vaccines | CVX (CDC); MVX (manufacturers) |
19
+
20
+ ## Validation
21
+ - Hard-coded coded literals FORBIDDEN outside the Terminology module's seed data.
22
+ - Never invent ICD/SNOMED/LOINC/CPT/HCPCS/RxNorm/CVX codes — confirm against the module's value sets (see [[ai-rules.domain]]).
23
+ - Free-text storage where a coded vocabulary applies is a Forbidden Pattern.
24
+
25
+ ## Terminology module
26
+ - Lookup/validation/expansion **MUST** go through a dedicated **Terminology module** (internal cache or external TS via FHIR `$expand` / `$validate-code`).
27
+ - Aggregates: `CodeSystem`, `ValueSet`, `ConceptMap` (project-managed subsets; expansions cached).
28
+
29
+ ## Related
30
+ - [[fhir]] · [[domain-driven-design.domain]] · [[clinical-terms]] · [[testing.domain]] · [[ai-rules.domain]]
@@ -0,0 +1,15 @@
1
+ # Testing — Healthcare Domain Addenda
2
+
3
+ > Technology base: [[testing]]. Commands: `/aw-spec-tasks`, `/aw-spec-implement`.
4
+
5
+ ## FHIR & interop tests
6
+ - FHIR endpoints MUST validate against the official **FHIR validator** + project IGs; profile changes ship with test updates in the **same commit** (see [[fhir]]).
7
+ - FHIR projectors MUST have a round-trip test (`domain -> FHIR -> domain`).
8
+ - Contract tests: FHIR validator + Inferno (or equiv) for US Core/the IG; HL7 v2 conformance against an internal corpus (see [[hl7]]); CloudEvents schema validation by every consumer harness (see [[eventing.domain]]).
9
+
10
+ ## Test data
11
+ - MUST use the synthetic-PHI fixture library (`<SampleProjectName>.TestFixtures`); **production PHI in dev/test/demo/CI is FORBIDDEN** (see [[hipaa]]).
12
+ - Coded values use sentinel constants (e.g. `TerminologyFixtures.IcdSampleHypertension`) — never invented ICD/SNOMED/LOINC/CPT codes (see [[terminology]], [[ai-rules.domain]]).
13
+
14
+ ## Related
15
+ - [[testing]] · [[fhir]] · [[hl7]] · [[terminology]] · [[hipaa]] · [[ai-rules.domain]]
@@ -0,0 +1,18 @@
1
+ # Vertical Slices — Healthcare Domain Addenda
2
+
3
+ > Technology base: [[vertical-slices]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
4
+
5
+ ## Interop adapters in the slice
6
+ `{Module}/Interop/` carries the external-protocol adapters:
7
+ ```
8
+ Fhir/ projectors, search-param handlers, IG profiles (see [[fhir]])
9
+ Hl7v2/ inbound parsers + outbound emitters (see [[hl7]])
10
+ Dicom/ DICOMweb adapters (Radiology only) (see [[dicom]])
11
+ ```
12
+
13
+ ## Rules
14
+ - FHIR resources live in a **parallel projection layer** and **MUST NOT** replace internal `Shared` DTOs (see [[fhir]]).
15
+ - Domain DTOs (`PatientDto`, `EncounterDto`) — no setters, required `init`, base64 `RowVersionBase64`.
16
+
17
+ ## Related
18
+ - [[vertical-slices]] · [[fhir]] · [[hl7]] · [[dicom]]
@@ -0,0 +1,12 @@
1
+ # Zero-Trust — Healthcare Domain Addenda
2
+
3
+ > Technology base: [[zero-trust]]. Commands: `/aw-spec-plan`, `/aw-spec-implement`.
4
+
5
+ ## Rules
6
+ - **PHI in transit MUST be TLS-encrypted**; at-rest encryption: see [[hipaa]], [[data-classification.domain]].
7
+ - External IdP MUST be SMART-on-FHIR-capable; tokens/scopes enforced on every FHIR endpoint and propagated through the pipeline (see [[authorization.domain]], [[fhir]]).
8
+ - IHE **ATNA** node authentication applies to inter-node communication (see [[auditing.domain]]).
9
+ - Trace context MUST propagate across outbound **HL7v2 / DICOM / FHIR** calls (see [[eventing.domain]]).
10
+
11
+ ## Related
12
+ - [[zero-trust]] · [[authorization.domain]] · [[auditing.domain]] · [[hipaa]] · [[fhir]]
@@ -0,0 +1,32 @@
1
+ # AI Operational Rules — Pharma 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 NDC/UNII/RxNorm/SNOMED/ATC/UCUM codes (see [[terminology]], [[ndc]], [[atc]]).
8
+ - Align aggregates to ISO IDMP concept boundaries, not ad-hoc shapes (see [[idmp]]).
9
+
10
+ ## Generation
11
+ - `MedicinalProduct` is the Aggregate Root. Generate `NdcCode`/`ProductName`/`GenericName`/`Strength`/`DosageForm`/`RouteOfAdministration`/`AtcCode`/`MarketingStatus`/`PackageIdentifier` as **value objects**, and `ActiveIngredient`/`PackagingConfiguration`/`MarketingAuthorization` as **entities** (see [[domain-driven-design.domain]]).
12
+ - A complete slice adds (when applicable): FHIR projector + FHIR-validator test, audit emission, version snapshot (see [[fhir]], [[auditing.domain]], [[persistence.domain]], [[testing.domain]]).
13
+ - FHIR resources are projections — never a second FHIR write path bypassing the aggregate (see [[fhir]]).
14
+ - Comments are reserved for regulatory/domain intent (generic rule in [[ai-rules]]).
15
+
16
+ ## Identifier & code safety
17
+ - MUST NOT fabricate NDC values or Labeler Codes; MUST NOT invent ATC/UNII/RxNorm/SNOMED codes — use a sentinel constant (e.g. `TerminologyFixtures.AtcSample`) or the Terminology module (see [[testing.domain]], [[terminology]], [[ndc]], [[atc]]).
18
+ - MUST attach a `ProvenanceRecord` on any external-import path (see [[data-provenance]]).
19
+
20
+ ## Security- & compliance-touching code
21
+ - MUST NOT modify audit emitters, version-history writers, lifecycle-transition guards, or identifier-uniqueness checks without an explicit reviewer-attached prompt (see [[auditing.domain]], [[persistence.domain]], [[product-lifecycle.domain]], [[ndc]]).
22
+
23
+ ## Refusal conditions — extend [[ai-rules]]; refuse to:
24
+ - Invent or hard-code NDC/ATC/UNII/RxNorm/SNOMED codes outside terminology seed data (see [[terminology]]).
25
+ - Persist a product with an invalid NDC, invalid dosage form, invalid route, or unvalidated ATC code (see [[ndc]], [[terminology]], [[atc]]).
26
+ - Hard-delete a `MedicinalProduct`, its history, or an `AuditRecord` (use lifecycle retirement / logical delete) (see [[persistence.domain]], [[auditing.domain]]).
27
+ - Allow an invalid lifecycle transition or remove a transition guard (see [[product-lifecycle.domain]]).
28
+ - Bypass Interop adapters by writing aggregates directly from an external feed (see [[hl7]], [[eventing.domain]]).
29
+ - Suppress or weaken audit emission for create/modify/retire/identifier/classification changes (see [[auditing.domain]], [[regulatory-compliance]]).
30
+
31
+ ## Related
32
+ - [[ai-rules]] · [[domain-driven-design.domain]] · [[ndc]] · [[idmp]] · [[atc]] · [[terminology]] · [[fhir]] · [[auditing.domain]] · [[persistence.domain]] · [[product-lifecycle.domain]] · [[data-provenance]] · [[testing.domain]]
@@ -0,0 +1,20 @@
1
+ # API Versioning — Pharma 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 **additive** under a versioned path (`/fhir/R5/...`).
7
+ - Breaking changes to the Medication / MedicationKnowledge / Substance / Organization surface 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
+ ## NDC identifier stability
11
+ - `NdcCode` is a **stable identifier** — never silently rewritten. A correction is an explicit, audited identifier-change emitting `ProductIdentifierChanged`, preserved in version history (see [[ndc]], [[auditing.domain]], [[persistence.domain]], [[eventing.domain]]). ATC reclassification is likewise a versioned, audited event (see [[atc]]).
12
+
13
+ ## Concurrency at the edge
14
+ - FHIR resources honor `If-Match` via the aggregate's concurrency token → FHIR **weak** ETag at the projection boundary (see [[persistence.domain]]).
15
+
16
+ ## CapabilityStatement
17
+ - Published for FHIR (beyond generic OpenAPI); regenerates cleanly in CI; diff reviewed for breaking changes (see [[fhir]], [[coding-standards.domain]]).
18
+
19
+ ## Related
20
+ - [[api-versioning]] · [[fhir]] · [[ndc]] · [[atc]] · [[persistence.domain]] · [[eventing.domain]] · [[auditing.domain]] · [[coding-standards.domain]]
@@ -0,0 +1,22 @@
1
+ # ATC — WHO Anatomical Therapeutic Chemical Classification
2
+
3
+ > NON-NEGOTIABLE. Commands: `/aw-spec-specify`, `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
4
+
5
+ ## Value Object
6
+ - ATC is the **`AtcCode` value object** — immutable, equality by value (see [[domain-driven-design.domain]]); carries code, ATC system URI, **ATC edition/version** (WHO updates annually), display.
7
+ - Free-text storage of a therapeutic class is a Forbidden Pattern.
8
+
9
+ ## Multiplicity
10
+ - **Multiple ATC codes MAY attach to one `MedicinalProduct`** (a collection of `AtcCode` VOs).
11
+ - The 7-character hierarchy (anatomical → therapeutic → pharmacological → chemical subgroup → substance) SHALL be representable; level is derivable from code length.
12
+
13
+ ## Validation
14
+ - **ATC codes SHALL be validated against configured code sets** — the bound edition is value-set data via the Terminology module (see [[terminology]]).
15
+ - An ATC code absent from the configured set is rejected; the Domain MUST NOT persist an unvalidated ATC code; never invent ATC codes (see [[ai-rules.domain]]).
16
+ - Changing a product's ATC is a **classification change** — audit-mandatory (see [[auditing.domain]]).
17
+
18
+ ## FHIR mapping
19
+ - ATC → FHIR `Medication.code` / `MedicationKnowledge` classification codings (`CodeableConcept`, ATC system URI) (see [[fhir]]).
20
+
21
+ ## Related
22
+ - [[terminology]] · [[domain-driven-design.domain]] · [[fhir]] · [[auditing.domain]] · [[ai-rules.domain]]
@@ -0,0 +1,26 @@
1
+ # Auditing — Pharma Domain Addenda
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 `MedicinalProduct` and its entities (ActiveIngredient, PackagingConfiguration, MarketingAuthorization).
7
+ - Enable via `.EnableAdvancedAuditing()` + `AddAuditing(... UseEfCoreAuditing(...).UseAppWeaverDataStore())`.
8
+ - Audit tables: shared `AppWeaver.DataStore`, schema `Auditing`, prefix `Audit_`.
9
+ - An audit pipeline behavior runs on every mediator request (see [[cqrs.domain]], [[eventing.domain]]).
10
+
11
+ ## Audit-mandatory operations
12
+ Product **creation**, **modification**, **retirement** (Discontinued/Withdrawn), **identifier changes** (NDC/Package NDC), **classification changes** (ATC) — plus every lifecycle transition and authorized admin action (see [[product-lifecycle.domain]], [[ndc]], [[atc]]).
13
+
14
+ ## Record (immutable)
15
+ ```
16
+ { user, timestamp, action, resourceType, resourceId, previousValue, newValue, correlationId }
17
+ ```
18
+ **User, Timestamp, Action, Previous Value, New Value** are spec-required and MUST always be populated.
19
+
20
+ ## Immutability & retention
21
+ - `AuditRecord` is **append-only** — no update/delete (see [[domain-driven-design.domain]], [[persistence.domain]]).
22
+ - Retained per regulatory policy, queryable for the full window; exportable, MAY project to FHIR `AuditEvent` / `Provenance` (see [[fhir]], [[data-provenance]]).
23
+ - Audit + domain events + version snapshots give end-to-end traceability (see [[regulatory-compliance]], [[eventing.domain]]).
24
+
25
+ ## Related
26
+ - [[auditing]] · [[regulatory-compliance]] · [[data-provenance]] · [[persistence.domain]] · [[product-lifecycle.domain]] · [[ndc]] · [[atc]] · [[cqrs.domain]] · [[eventing.domain]] · [[fhir]] · [[domain-driven-design.domain]]
@@ -0,0 +1,25 @@
1
+ # Authorization — Pharma Domain Addenda
2
+
3
+ > Technology base: [[authorization]]. Commands: `/aw-spec-plan`, `/aw-spec-tasks`, `/aw-spec-implement`.
4
+
5
+ ## Roles
6
+ `SystemAdmin`, `RegulatoryOfficer`, `ProductSteward`, `TerminologyManager`, `DataManager`, `ReadOnlyConsumer`, `ExternalSystem`. Per-route matrix: `docs/security/authorization-matrix.md`.
7
+
8
+ ## Change authority
9
+ - **Only `RegulatoryOfficer`** performs guarded lifecycle transitions — approve / activate / discontinue / withdraw (see [[product-lifecycle.domain]]).
10
+ - `ProductSteward` creates/edits a `Draft` and submits for review; MUST NOT approve/activate/retire.
11
+ - **NDC and ATC changes require `RegulatoryOfficer`** authority (or `ProductSteward` + documented `RegulatoryOfficer` sign-off) (see [[ndc]], [[atc]], [[auditing.domain]]).
12
+ - `TerminologyManager` owns `CodeSystem`/`ValueSet`/`ConceptMap` + version changes (see [[terminology]]).
13
+ - `DataManager` runs external imports; each attaches a `ProvenanceRecord` (see [[data-provenance]]).
14
+
15
+ ## Scope enforcement
16
+ - FHIR endpoints scope-enforced (`system/Medication.read`, `system/Substance.read`, `system/*.write` for authorized backends). **No patient-context (SMART) scope** — product master data, not patient data (see [[fhir]], [[zero-trust.domain]]).
17
+
18
+ ## Audit-mandatory
19
+ Every product create/modify/retire, identifier change, classification change, lifecycle transition, terminology change, external import, privileged admin/role change (see [[auditing.domain]]).
20
+
21
+ ## Anonymous allowlist
22
+ - `/fhir/metadata` (CapabilityStatement) and `/health`; no write or product-data endpoint is anonymous (see [[fhir]]).
23
+
24
+ ## Related
25
+ - [[authorization]] · [[product-lifecycle.domain]] · [[ndc]] · [[atc]] · [[terminology]] · [[data-provenance]] · [[auditing.domain]] · [[data-classification.domain]] · [[fhir]] · [[zero-trust.domain]]
@@ -0,0 +1,28 @@
1
+ # Coding Standards — Pharma 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`, `Ratio`, `Identifier` (see [[terminology]], [[fhir]]).
7
+ - Spec-mandated names: `NdcCode`, `ProductName`, `GenericName`, `Strength`, `DosageForm`, `RouteOfAdministration`, `AtcCode`, `MarketingStatus`, `PackageIdentifier` (see [[domain-driven-design.domain]]).
8
+ - Domain may throw `InvalidNdcException`, `InvalidLifecycleTransitionException`, `UnvalidatedCodeException` (see [[ndc]], [[product-lifecycle.domain]], [[terminology]]).
9
+
10
+ ## Forbidden patterns — extend [[coding-standards]]
11
+ - **P1.** Hard delete of a `MedicinalProduct`, version history, or `AuditRecord` — use lifecycle retirement / logical delete (see [[persistence.domain]], [[product-lifecycle.domain]]).
12
+ - **P2.** Hard-coded NDC/Labeler/ATC/UNII/RxNorm/SNOMED literals outside the Terminology seed (see [[terminology]], [[ndc]], [[atc]]).
13
+ - **P3.** Storing NDC, dosage form, route, ATC, or strength as **free text** when a value object/code applies (see [[terminology]]).
14
+ - **P4.** A second FHIR write path bypassing the aggregate (see [[fhir]]).
15
+ - **P5.** Persisting a product with an invalid NDC, dosage form, route, or unvalidated ATC code (see [[ndc]], [[atc]], [[terminology]]).
16
+ - **P6.** Mutating a contained entity (`ActiveIngredient`/`PackagingConfiguration`/`MarketingAuthorization`) outside the aggregate root (see [[domain-driven-design.domain]]).
17
+ - **P7.** Allowing an invalid lifecycle transition or removing a transition guard (see [[product-lifecycle.domain]]).
18
+ - **P8.** Exposing `Draft`/pre-market product data on the public surface (see [[data-classification.domain]]).
19
+
20
+ ## Quality gates — extend [[coding-standards]]
21
+ - **PG1.** FHIR CapabilityStatement regenerates cleanly; FHIR validator passes for every modified Medication/MedicationKnowledge/Substance/Organization resource (see [[fhir]]).
22
+ - **PG2.** No invented NDC/ATC/UNII/RxNorm/SNOMED codes — codes resolve against value sets (grep + tests; see [[terminology]]).
23
+ - **PG3.** NDC uniqueness + format + duplicate-detection tests pass (see [[ndc]]).
24
+ - **PG4.** Lifecycle state-machine tests pass — every allowed + every rejected transition (see [[product-lifecycle.domain]], [[testing.domain]]).
25
+ - **PG5.** Audit-emission tests cover create/modify/retire/identifier/classification with required fields (see [[auditing.domain]]).
26
+
27
+ ## Related
28
+ - [[coding-standards]] · [[terminology]] · [[ndc]] · [[atc]] · [[fhir]] · [[domain-driven-design.domain]] · [[product-lifecycle.domain]] · [[persistence.domain]] · [[data-classification.domain]] · [[auditing.domain]] · [[testing.domain]]
@@ -0,0 +1,136 @@
1
+ # Pharma Domain — Command → Rule-File Map
2
+
3
+ Per-AW-Spec-command list of the **pharma 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 medicinal-product-registration project.
6
+
7
+ - All paths are workspace-relative and live in this folder: `docs/domainspecs/pharma/`.
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 pharma domain mapping; `/aw-spec-select-domain`
10
+ selects this folder as active.
11
+
12
+ ---
13
+
14
+ ## /aw-spec-constitution
15
+ - docs/domainspecs/pharma/domain-requirements.md
16
+ - docs/domainspecs/pharma/regulatory-compliance.md
17
+ - docs/domainspecs/pharma/ai-rules.domain.md
18
+
19
+ ## /aw-spec-specify
20
+ - docs/domainspecs/pharma/domain-requirements.md
21
+ - docs/domainspecs/pharma/pharma-terms.md
22
+ - docs/domainspecs/pharma/integration-terms.md
23
+ - docs/domainspecs/pharma/domain-driven-design.domain.md
24
+ - docs/domainspecs/pharma/product-lifecycle.domain.md
25
+ - docs/domainspecs/pharma/ndc.md
26
+ - docs/domainspecs/pharma/idmp.md
27
+ - docs/domainspecs/pharma/terminology.md
28
+ - docs/domainspecs/pharma/atc.md
29
+ - docs/domainspecs/pharma/fhir.md
30
+ - docs/domainspecs/pharma/hl7.md
31
+ - docs/domainspecs/pharma/regulatory-compliance.md
32
+ - docs/domainspecs/pharma/data-provenance.md
33
+ - docs/domainspecs/pharma/data-classification.domain.md
34
+ - docs/domainspecs/pharma/ai-rules.domain.md
35
+
36
+ ## /aw-spec-clarify
37
+ - docs/domainspecs/pharma/domain-driven-design.domain.md
38
+ - docs/domainspecs/pharma/product-lifecycle.domain.md
39
+ - docs/domainspecs/pharma/ndc.md
40
+ - docs/domainspecs/pharma/terminology.md
41
+ - docs/domainspecs/pharma/atc.md
42
+ - docs/domainspecs/pharma/regulatory-compliance.md
43
+ - docs/domainspecs/pharma/pharma-terms.md
44
+ - docs/domainspecs/pharma/integration-terms.md
45
+
46
+ ## /aw-spec-plan
47
+ - docs/domainspecs/pharma/folder-structure.domain.md
48
+ - docs/domainspecs/pharma/cqrs.domain.md
49
+ - docs/domainspecs/pharma/vertical-slices.domain.md
50
+ - docs/domainspecs/pharma/persistence.domain.md
51
+ - docs/domainspecs/pharma/testing.domain.md
52
+ - docs/domainspecs/pharma/eventing.domain.md
53
+ - docs/domainspecs/pharma/domain-driven-design.domain.md
54
+ - docs/domainspecs/pharma/product-lifecycle.domain.md
55
+ - docs/domainspecs/pharma/ndc.md
56
+ - docs/domainspecs/pharma/idmp.md
57
+ - docs/domainspecs/pharma/fhir.md
58
+ - docs/domainspecs/pharma/hl7.md
59
+ - docs/domainspecs/pharma/terminology.md
60
+ - docs/domainspecs/pharma/atc.md
61
+ - docs/domainspecs/pharma/regulatory-compliance.md
62
+ - docs/domainspecs/pharma/data-provenance.md
63
+ - docs/domainspecs/pharma/zero-trust.domain.md
64
+ - docs/domainspecs/pharma/authorization.domain.md
65
+ - docs/domainspecs/pharma/auditing.domain.md
66
+ - docs/domainspecs/pharma/data-classification.domain.md
67
+ - docs/domainspecs/pharma/coding-standards.domain.md
68
+ - docs/domainspecs/pharma/dependency-policy.domain.md
69
+ - docs/domainspecs/pharma/api-versioning.domain.md
70
+ - docs/domainspecs/pharma/ai-rules.domain.md
71
+
72
+ ## /aw-spec-tasks
73
+ - docs/domainspecs/pharma/folder-structure.domain.md
74
+ - docs/domainspecs/pharma/vertical-slices.domain.md
75
+ - docs/domainspecs/pharma/cqrs.domain.md
76
+ - docs/domainspecs/pharma/persistence.domain.md
77
+ - docs/domainspecs/pharma/testing.domain.md
78
+ - docs/domainspecs/pharma/eventing.domain.md
79
+ - docs/domainspecs/pharma/domain-driven-design.domain.md
80
+ - docs/domainspecs/pharma/product-lifecycle.domain.md
81
+ - docs/domainspecs/pharma/ndc.md
82
+ - docs/domainspecs/pharma/fhir.md
83
+ - docs/domainspecs/pharma/hl7.md
84
+ - docs/domainspecs/pharma/authorization.domain.md
85
+ - docs/domainspecs/pharma/auditing.domain.md
86
+ - docs/domainspecs/pharma/coding-standards.domain.md
87
+ - docs/domainspecs/pharma/ai-rules.domain.md
88
+
89
+ ## /aw-spec-analyze
90
+ - docs/domainspecs/pharma/ndc.md
91
+ - docs/domainspecs/pharma/terminology.md
92
+ - docs/domainspecs/pharma/product-lifecycle.domain.md
93
+ - docs/domainspecs/pharma/regulatory-compliance.md
94
+ - docs/domainspecs/pharma/auditing.domain.md
95
+ - docs/domainspecs/pharma/coding-standards.domain.md
96
+ - docs/domainspecs/pharma/ai-rules.domain.md
97
+
98
+ ## /aw-spec-implement
99
+ - docs/domainspecs/pharma/folder-structure.domain.md
100
+ - docs/domainspecs/pharma/vertical-slices.domain.md
101
+ - docs/domainspecs/pharma/cqrs.domain.md
102
+ - docs/domainspecs/pharma/persistence.domain.md
103
+ - docs/domainspecs/pharma/testing.domain.md
104
+ - docs/domainspecs/pharma/eventing.domain.md
105
+ - docs/domainspecs/pharma/domain-driven-design.domain.md
106
+ - docs/domainspecs/pharma/product-lifecycle.domain.md
107
+ - docs/domainspecs/pharma/ndc.md
108
+ - docs/domainspecs/pharma/idmp.md
109
+ - docs/domainspecs/pharma/fhir.md
110
+ - docs/domainspecs/pharma/hl7.md
111
+ - docs/domainspecs/pharma/terminology.md
112
+ - docs/domainspecs/pharma/atc.md
113
+ - docs/domainspecs/pharma/regulatory-compliance.md
114
+ - docs/domainspecs/pharma/data-provenance.md
115
+ - docs/domainspecs/pharma/authorization.domain.md
116
+ - docs/domainspecs/pharma/auditing.domain.md
117
+ - docs/domainspecs/pharma/data-classification.domain.md
118
+ - docs/domainspecs/pharma/zero-trust.domain.md
119
+ - docs/domainspecs/pharma/coding-standards.domain.md
120
+ - docs/domainspecs/pharma/dependency-policy.domain.md
121
+ - docs/domainspecs/pharma/api-versioning.domain.md
122
+ - docs/domainspecs/pharma/ai-rules.domain.md
123
+
124
+ ---
125
+
126
+ ## Quick reference (command → file count)
127
+
128
+ | Command | Domain rule files |
129
+ |---|---|
130
+ | /aw-spec-constitution | 3 |
131
+ | /aw-spec-specify | 15 |
132
+ | /aw-spec-clarify | 8 |
133
+ | /aw-spec-plan | 24 |
134
+ | /aw-spec-tasks | 15 |
135
+ | /aw-spec-analyze | 7 |
136
+ | /aw-spec-implement | 24 |