Page 1 of 17
System Requirements Document
1. Introduction
This System Requirements Document (SRD) specifies the requirements for a Healthcare Ecosystem Operating System — an event-native, federated platform built by a healthcare integrator to orchestrate the full spectrum of participants across the healthcare value chain: manufacturers, wholesalers, distributors, warehouses, transporters, hospitals, clinics, labs, pharmacies, doctors, physiotherapists, nutritionists, caregivers, patients, consent managers, FHIR stores, and the ABDM HIE.
The platform is aligned with the National Digital Health Blueprint (NDHB) and ABDM regulator expectations: federated architecture, single source of truth, open APIs, consent-driven exchange, registries, longitudinal health records, health analytics, wellness-centric healthcare, HIE routing, data fiduciaries and processors, point-of-care data ownership, FHIR-based interoperability, and health lockers with consent management.
The central architectural premise is that the marketplace is only 10–15% of the system; the remaining complexity is orchestrating thousands of independent actors through a consistent event model. The platform is therefore modeled as event-native: everything becomes an Event rather than a State, and every business process is defined as an event stream that is immutable, append-only, and replayable. Complexity is organized into 18 bounded contexts, with notifications treated as first-class citizens.
Page 2 of 17
1a. Scope of This SRD (v1)
The immediate deliverable of this SRD is the functional specification and the backend architecture for the 18 bounded contexts plus the notification context. The following scope rules apply:
- In scope (v1): the functional specification of all 18 bounded contexts and the notification context; the backend architecture (event backbone, canonical domain model, FHIR domain layer, supply chain domain layer, consent & HIE layer, read-model projections, rules/workflow engine, notification engine, AI recommendation layer); the HTTP/event API surface; storage, projections, graphs, faults, manual overrides and operational runbooks per domain; and the backend runtime/datapath architecture described in Section 4.
- Out of scope (v1): UI pages are explicitly out of scope for v1. No UI pages are to be generated and no credits are to be spent on page design. The UI is a downstream consumer of the SDUI config contract served through the connector; it is not part of this SRD's deliverable. Any page, screen or interaction surface referenced elsewhere in this document is a downstream consumer contract, not a v1 build commitment.
- Page manifest cleared (v1): the page manifest for this project is cleared to zero entries so the design stage has nothing queued. No page, screen or interaction surface is scheduled, planned or generated for v1, and no credits are to be spent on page design. The requirements deliverable is the functional specification and the backend architecture only.
- Priority: where a trade-off arises, the functional spec and backend take priority over any UI/page work.
Page 3 of 17
2. System Overview
The platform is organized as a chain of trust-and-meaning bounded contexts, each building on the previous:
- Domain 01 — Identity & Registry: establishes trust (who exists, who owns, who can act).
- Domain 02 — Product Lifecycle: establishes meaning (what a thing is).
- Domain 03 — Manufacturing: establishes physical provenance.
- Domain 04 — Cold Chain: establishes environmental integrity.
- Domain 05 — Warehousing: establishes availability and fulfillment readiness.
- Domain 06 — Recall Management: establishes patient safety enforcement.
- Domain 07 — Procurement: establishes supply assurance.
- Domain 08 — Demand Forecasting: establishes predictive intelligence.
- Domain 09 — Logistics: establishes movement.
- Domain 10 — Patient Care: establishes the longitudinal health timeline.
- Domain 11 — Prescription Lifecycle: establishes medication intent.
- Domain 12 — Diagnostics: establishes clinical evidence.
- Domain 13 — FHIR Integration: establishes clinical interoperability.
- Domain 14 — ABDM Consent Management: establishes clinical trust / authorized data access.
- Domain 15 — Health Information Exchange (HIE): establishes coordinated healthcare action.
- Domain 16 — Longitudinal Health: establishes the continuous health timeline across HIPs.
- Domain 17 — Wellness: establishes wellness-centric healthcare beyond treatment.
- Domain 18 — Population Health: establishes national/regional surveillance and analytics.
A marketplace for participants (e.g., manufacturers engaging warehousers; wholesalers supplying pharmacies and clinics) is one application layer on top of this orchestration backbone.
The platform composes the following architectural layers:
- Event Backbone (Kafka/Pulsar)
- Canonical Healthcare Domain Model
- FHIR Domain Layer
- Supply Chain Domain Layer
- Consent & HIE Layer
- Read-model Projections (Search, Inventory, Patient Timeline, Analytics, Population Health)
- Rules/Workflow Engine
- Notification Engine
- AI Recommendation Layer
A byte-oriented message-handling framework (ZOCZC) is used in the Python implementation for session handling and message-bus contracts across the event backbone.
Page 4 of 17
2b. Backend Runtime & Datapath Architecture (v1)
The backend is specified as follows:
- Datapath / control-path split: the RSGI datapath (request/response data plane) is separated from the ASGI-to-RSGI control path, with the Granian multiplexer bridging the two.
- GraphQL on both ends: GraphQL is exposed on both the client-facing and internal ends of the backend.
- JSON-config-driven frontend via connector: the frontend is driven by a JSON configuration contract served through the connector; the UI is a downstream consumer of this SDUI config contract and is out of scope for v1.
- CDN offload: static and cacheable delivery is offloaded to a CDN.
- Rust-Kafka ↔ Python ZOCZC byte-message bridge: a bridge connects Rust-Kafka to the Python ZOCZC byte-message layer, with topic-ID partitioning, a
memory_bus abstraction, and a pytransitions boot orchestrator.
- Event backbone: Kafka/Pulsar carries immutable, append-only, replayable event streams; notifications are first-class citizens on the backbone.
2a. Source Content Inventory
This inventory records the authoritative source material supplied by the user for starry-healthcare. It is the downstream source of truth for content, domain facts, and feature scope; it must not be replaced with generic category names or invented examples.
Source: DPES_outline.txt (authoritative — content_source, feature_reference, domain_context)
- Identity: Functional specification of the healthcare integrator application ("DPES outline").
- Scope: 18 bounded contexts, with notifications treated as a first-class citizen.
- Named items: the 18 bounded contexts — Domain 01 Identity & Registry; Domain 02 Product Lifecycle; Domain 03 Manufacturing; Domain 04 Cold Chain; Domain 05 Warehousing; Domain 06 Recall Management; Domain 07 Procurement; Domain 08 Demand Forecasting; Domain 09 Logistics; Domain 10 Patient Care; Domain 11 Prescription Lifecycle; Domain 12 Diagnostics; Domain 13 FHIR Integration; Domain 14 ABDM Consent Management; Domain 15 Health Information Exchange (HIE); Domain 16 Longitudinal Health; Domain 17 Wellness; Domain 18 Population Health.
- Descriptions: each context is specified with a mission, participants, commands, domain events, system-generated events, workflows, APIs, notifications, faults, manual overrides, storage/projections, graphs, and operational runbooks (captured in Section 3).
- Media references: none.
- Dates / contacts / links: none supplied.
Page 5 of 17
Source: zoczc_framework.txt (authoritative — content_source, feature_reference)
- Identity: The ZOCZC framework for Python, for dealing with byte-oriented messages.
- Named items: byte-oriented message handling; session handling; message-bus contracts.
- Descriptions: ZOCZC is the mandated Python framework for session handling and message-bus contracts across the event backbone.
- Media references: none.
- Dates / contacts / links: none supplied.
Source: ideas.txt (authoritative — content_source, feature_reference)
- Identity: Supplementary ideas file read and analyzed alongside the outline and framework.
- Named items / descriptions: captured as supporting ideas for the platform; where a specific idea is not restated verbatim in this SRD it remains unverified rather than replaced with an invented placeholder.
- Media references: none.
- Dates / contacts / links: none supplied.
Generated / Default Assumptions
- Sample content, example identifiers, and illustrative values used in this SRD that are not present in the authoritative sources are generated/default assumptions and are marked as such where they appear.
- Facts that could not be confirmed from the authoritative sources are marked unverified rather than invented.
3. Functional Requirements
Page 6 of 17
Domain 01 — Identity & Registry
Mission: answer who/what an entity is, who owns it, who can access and act on it, how it relates, whether it can be trusted, and whether it is currently valid.
Identity Management
- As a platform integrator, I want a unique identity maintained for every human participant (patient, doctor, pharmacist, nurse, physiotherapist, lab technician, nutritionist, caregiver, administrator).
- As a platform integrator, I want a unique identity maintained for every organization (manufacturer, wholesaler, distributor, hospital, clinic, diagnostic center, pharmacy, insurance entity, government authority).
- As a platform integrator, I want a unique identity maintained for every facility (hospital, clinic, lab, pharmacy, warehouse).
- As a platform integrator, I want a unique identity maintained for every system participant (HIP, HIU, Consent Manager, Integrator, FHIR Gateway, HIE Gateway).
- As a platform integrator, I want a unique identity maintained for every asset (drug, batch, warehouse, vehicle, storage unit, IoT sensor, prescription template, diagnostic template).
Registry
- As a platform integrator, I want searchable registries for people, organizations, facilities, products, assets, network participants, IoT devices, and digital services.
Trust Management
- As a compliance officer, I want trust management covering verification, certification, accreditation, licensing, compliance, and trust scores.
Relationship Management
- As a platform integrator, I want relationships maintained for Doctor works at Hospital, Patient belongs to Family, Drug belongs to Manufacturer, Shipment belongs to Warehouse, and Professional belongs to Organization.
Access Management
- As a security administrator, I want access management covering authentication, authorization, privileges, and roles.
- As a security administrator, I want API Keys to be issued as part of credential management for system-to-system integrations.
Registration Commands
- As a patient, I want to
register_patient().
- As a doctor, I want to
register_doctor().
- As a pharmacy, I want to
register_pharmacy().
- As a facility administrator, I want to
register_facility().
- As a manufacturer, I want to
register_manufacturer().
- As an integrator, I want to
register_integrator().
Verification Commands
- As a compliance officer, I want to
verify_identity(), verify_facility(), verify_license(), verify_document(), and verify_registry_match().
Relationship Commands
- As a hospital administrator, I want to
assign_doctor_to_facility().
- As a manufacturer, I want to
link_manufacturer_to_product().
- As a caregiver coordinator, I want to
assign_caregiver().
- As a platform integrator, I want to
assign_integrator().
Access Commands
- As a security administrator, I want
grant_role(), revoke_role(), assign_permission(), and delegate_access().
Lifecycle Commands
- As a platform operator, I want
activate_identity(), suspend_identity(), deactivate_identity(), and archive_identity().
Credential Aggregate
- As a security administrator, I want a Credential Aggregate that tracks Certificates, Licenses, API Keys, and OAuth Clients.
Domain Events
- As a platform integrator, I want registration events (RegistrationInitiated, PatientRegistered, DoctorRegistered, ManufacturerRegistered, FacilityRegistered, IntegratorRegistered, WarehouseRegistered).
- As a platform integrator, I want verification events (VerificationStarted, VerificationCompleted, VerificationRejected, DocumentVerified, LicenseVerified, RegistryVerified).
- As a platform integrator, I want identity events (IdentityCreated, IdentityMerged, IdentitySplit, IdentityCorrected, IdentityUpdated).
- As a platform integrator, I want credential events (CredentialIssued, CredentialRenewed, CredentialExpired, CredentialRevoked).
- As a platform integrator, I want relationship events (RelationshipCreated, RelationshipChanged, RelationshipRemoved, DoctorAssignedToFacility, ManufacturerAssignedProduct, PatientAssignedCaregiver).
- As a platform integrator, I want access events (RoleGranted, RoleRevoked, PermissionGranted, PermissionRevoked, EmergencyAccessGranted).
- As a platform integrator, I want lifecycle events (IdentityActivated, IdentitySuspended, IdentityReactivated, IdentityArchived, IdentityDeactivated).
System-Generated Identity Events
- As a platform operator, I want a
DuplicateDetected event.
- As a compliance officer, I want a
LicenseExpiringSoon event.
- As a platform operator, I want a
VerificationTimeout event.
- As a platform operator, I want a
RegistrySyncRequired event.
- As a compliance officer, I want a
TrustScoreChanged event.
- As a platform operator, I want an
InactiveAccountDetected event.
- As a platform operator, I want a
DormantFacilityDetected event.
- As a compliance officer, I want a
CertificateExpiring event.
Primary Workflows
- As a new participant, I want a Registration Workflow (Registration Request → Validation → Duplicate Detection → Registry Verification → Identity Creation → Role Assignment → Activation → Notification).
- As a doctor, I want a Professional Verification Workflow (Doctor Registration → Document Upload → License Verification → HPR Match → Approval → Credential Issued → Facility Assignment).
- As a facility administrator, I want a Facility Workflow (Facility Registration → HFR Verification → Geo Validation → Compliance Verification → Activation → Integrator Assignment).
- As a platform operator, I want a Deactivation Workflow (Deactivation Requested → Dependency Analysis → Open Work Checks → Credentials Revoked → Relationships Archived → Entity Deactivated).
API Surface
- As an integrator, I want HTTP APIs: POST /identity/register, POST /organization/register, POST /facility/register, POST /professional/register.
- As an integrator, I want verification APIs: POST /verification/start, POST /verification/approve, POST /verification/reject.
- As an integrator, I want relationship APIs: POST /relationships, DELETE /relationships/{id}, GET /relationships.
- As an integrator, I want registry APIs: GET /registry/patient, GET /registry/doctor, GET /registry/facility, GET /registry/manufacturer.
Notifications
- As a participant, I want domain notifications (Registration Approved, Registration Rejected, Verification Approved, Verification Failed, Role Granted, Role Revoked).
- As a participant, I want system notifications (License Expiring, Credential Expiring, Registry Sync Failed, Duplicate Identity Detected, Trust Score Reduced, Certificate Expiry).
System Faults
- As a platform operator, I want faults detected (Registry Unreachable, ABHA Sync Failure, HPR Sync Failure, HFR Sync Failure, Duplicate Identity Conflict, Permission Resolution Failure, Credential Corruption).
Manual Controls
- As an authorized operator, I want to Force Merge Identity, Force Split Identity, Suspend Participant, trigger Emergency Re-Verification, run a Manual Trust Override, initiate Facility Lockdown, and perform Registry Mapping Override — all event-sourced.
Graph & Projections
- As an operations analyst, I want an Identity Graph (Patient → Doctor → Facility → Organization; Drug → Manufacturer; Facility → Integrator; HIP → Facility).
- As an operations analyst, I want queries: doctors affiliated with facility X; facilities operated by manufacturer Y; pharmacists accessing inventory Z; caregivers linked to patient P; integrators serving hospitals in a region.
- As a platform operator, I want Static Projections (Identity Directory, Doctor Directory, Facility Directory, Manufacturer Directory).
- As a compliance officer, I want Dynamic Temporal Projections (Historical Facility Membership, Historical Credential State, Historical Relationship State).
- As a compliance officer, I want Compliance Projections (License Expiry View, Expired Credentials, Verification Failures, Dormant Participants).
Operational Runbook
- As an operations team, I want Daily tasks: Verification backlog, Registry synchronization, Duplicate resolution, Credential monitoring.
- As an operations team, I want Weekly tasks: Trust audits, License expiry audits, Relationship consistency checks.
- As an operations team, I want Monthly tasks: Identity reconciliation, Registry reconciliation, Abandoned account review, Compliance review.
Page 7 of 17
Domain 02 — Product Lifecycle
Mission: answer what the medication is, its composition, manufacturer, diseases addressed, contraindicating conditions, storage conditions, substitution eligibility, regulatory status, and whether it can be prescribed, dispensed, recalled, exported, or discontinued.
Regulatory Participants
- As a manufacturer, I want my products to be onboarded with identities spanning Drug Manufacturer, Medical Device Manufacturer, and Biological Manufacturer types.
- As a regulator, I want regulatory authorities supported including CDSCO, State Drug Authorities, and Pharmacopoeia.
Product & Formulation
- As a manufacturer, I want to
create_product().
- As a manufacturer, I want to
create_formulation() for composition, dosage, strength, and route.
- As a manufacturer, I want to
create_package().
- As a manufacturer, I want to
create_therapeutic classes.
- As a platform integrator, I want a Product Hierarchy (Therapeutic Class → Product Family → Product → Formulation → Package → Batch).
Composition Operations
- As a manufacturer, I want
add_component(), remove_component(), and change_strength().
Regulatory Operations
- As a regulator, I want
approve_product(), suspend_product(), ban_product(), and withdraw_product().
- As a regulator, I want Bans and Warnings recorded in the Regulatory Aggregate.
Safety Operations
- As a manufacturer/regulator, I want
add_warning(), add_contraindication(), add_adverse_effect(), and remove_warning().
Lifecycle Operations
- As a manufacturer, I want
activate_product(), discontinue_product(), and retire_product().
Domain Events
- As a platform integrator, I want product registration events (ProductCreated, ProductRegistered, FormulationCreated, PackageCreated).
- As a platform integrator, I want classification events (ProductCategorized, ClassificationChanged, TherapeuticClassAssigned).
- As a platform integrator, I want composition events (CompositionAdded, CompositionRemoved, FormulationModified, PotencyChanged, ExcipientChanged).
- As a platform integrator, I want regulatory events (ApprovalGranted, ApprovalRevoked, ApprovalUpdated, RestrictionAdded, RestrictionRemoved, ProductBanned).
- As a platform integrator, I want safety events (WarningAdded, ContraindicationAdded, AdverseEventDiscovered, SafetyProfileUpdated).
- As a platform integrator, I want lifecycle events (ProductActivated, ProductDiscontinued, ProductRetired).
- As a platform integrator, I want commercial events (PriceUpdated, PackagingUpdated, ManufacturerChanged).
System-Generated Product Events
- As a regulator, I want RegulatoryExpiryApproaching.
- As a safety officer, I want WarningReviewRequired.
- As a safety officer, I want SafetySignalDetected.
- As a safety officer, I want DrugInteractionDetected.
- As a supply analyst, I want MarketShortageDetected.
- As a commercial analyst, I want PriceAnomalyDetected.
- As a prescriber support system, I want SubstitutionCandidateDetected.
- As a catalog manager, I want DuplicateProductDetected.
Workflows
- As a manufacturer, I want a New Product Introduction Workflow (create → composition validation → classification → regulatory review → approval → activation → available for manufacturing).
- As a regulator, I want a Regulatory Update Workflow (notice → impact analysis → update regulatory profile → update product status → notify participants).
- As a regulator, I want a Product Withdrawal Workflow (withdrawal request → impact assessment → inventory discovery → participant notification → manufacturing halt → sales halt → completed).
Notifications
- As a participant, I want domain notifications (Product Approved, Product Modified, Product Withdrawn, Warning Added, Restriction Added).
- As a participant, I want system notifications (Approval Expiring, Safety Signal Detected, Shortage Predicted, Price Spike Detected, Duplicate Product Discovered).
Faults & Failures
- As a platform operator, I want faults detected: Product Registry Corruption, Classification Failure, Approval Synchronization Failure, Restriction Synchronization Failure, Product Validation Failure, Composition Inconsistency.
Manual Overrides
- As an authorized user, I want to Force Classification, Force Suspension, Force Activation, perform Emergency Withdrawal, and perform Manual Product Merge/Split — all producing events.
Graph & Projections
- As an analyst, I want a Product Relationship Graph (Manufacturer → Produces → Product → Contains → Ingredient → Treats → Disease; Alternative Drug, Contraindicated Drug, Related Adverse Event).
- As an analyst, I want Clinical queries (alternative drugs, interacting drugs, drugs affecting diabetes), Supply Chain queries (equivalent manufacturers, scarce-ingredient dependency, regulator action impact), and Recall Analysis (Product → Batch → Inventory → Facility → Patient; how many downstream entities impacted).
- As a platform operator, I want Static, Dynamic, Compliance, and Adverse Event Trends analytics projections.
- As an operations team, I want Daily tasks (Catalog Updates, Approval Updates, Classification Audits, Safety Signal Monitoring).
- As an operations team, I want Weekly tasks (Duplicate Product Review, Warning Review, Market Intelligence Review).
- As an operations team, I want Monthly tasks (Regulatory Compliance Audit, Formulation Consistency Audit, Product Graph Consistency Audit).
Page 8 of 17
Domain 03 — Manufacturing
Mission: create a complete digital twin of the manufacturing process with the guiding principle Traceability > Throughput.
Participants
- As a manufacturer, I want organizational types supported including Manufacturer, Contract Manufacturer, and Third-Party Manufacturer.
- As a manufacturer, I want facilities represented including Plant, Production Facility, Clean Room, Sterile Production Facility, and Packaging Unit.
- As a manufacturer, I want human participants (Production Supervisor, Operator, Quality Analyst, Quality Manager).
- As a manufacturer, I want digital participants (MES Systems, SCADA Systems, PLC Controllers, Temperature Sensors, Humidity Sensors, Vibration Sensors).
Planning Commands
- As a manufacturing planner, I want
create_manufacturing_order(), schedule_production_run(), allocate_materials(), and reserve_equipment().
Production Commands
- As a production supervisor, I want
start_production_run(), pause_run(), resume_run(), record_production_output(), and complete_run().
Batch Commands
- As a quality manager, I want
create_batch(), update_batch(), split_batch(), merge_batch(), and destroy_batch().
Quality Commands
- As a quality analyst, I want
start_quality_review(), approve_batch(), reject_batch(), and quarantine_batch().
Release Commands
- As a quality manager, I want
release_batch(), hold_batch(), and withdraw_batch().
Domain Events
- As a platform integrator, I want planning events (ManufacturingOrderCreated, ProductionScheduled, MaterialReserved, EquipmentReserved).
- As a platform integrator, I want execution events (ProductionStarted, ProductionPaused, ProductionResumed, ProductionCompleted, ProductionCancelled).
- As a platform integrator, I want batch events (BatchCreated, BatchProduced, BatchPackaged, BatchReleased, BatchHeld, BatchRejected, BatchDestroyed).
- As a platform integrator, I want material events (MaterialAllocated, MaterialConsumed, MaterialShortageDetected, MaterialSubstituted).
- As a platform integrator, I want quality events (QCStarted, QCSampleCollected, QCMeasurementRecorded, QCPassed, QCFailed, QCReviewCompleted).
- As a platform integrator, I want compliance events (AuditInitiated, AuditCompleted, DeviationDetected, CAPAInitiated, CAPACompleted).
System-Generated Manufacturing Events
- As a production manager, I want YieldBelowThreshold and YieldAboveThreshold.
- As a production manager, I want ProductionDelayDetected.
- As a maintenance engineer, I want EquipmentFailureDetected.
- As a maintenance engineer, I want CalibrationRequired.
- As a quality officer, I want EnvironmentalAnomalyDetected.
- As a compliance officer, I want TemperatureViolationDetected and HumidityViolationDetected.
- As a quality officer, I want ContaminationRiskDetected.
Workflows
- As a manufacturer, I want a Manufacturing Workflow (Order Created → Materials Reserved → Equipment Reserved → Production Started → Material Consumption → Output Generated → Batch Created → QC → Approval → Released).
- As a manufacturer of sterile products, I want a Sterile Product Workflow (Clean Room Validation → Environmental Validation → Material Validation → Production → Sterility Testing → Approval → Release).
- As a quality manager, I want a Batch Failure Workflow (Batch Produced → QC Failure → Investigate → Root Cause → Rework OR Destroy).
APIs & Event Schemas
- As an integrator, I want POST /manufacturing/orders and GET /manufacturing/orders/{id}.
- As an integrator, I want POST /production/start, /production/stop, /production/pause.
- As an integrator, I want POST /batches, GET /batches, GET /batches/{id}.
- As an integrator, I want POST /qc/start, /qc/result, /qc/approve.
- As a manufacturer, I want event payloads such as
{eventType: BatchProduced, batchId, productId, plantId, timestamp} stored immutably in Kafka.
Notifications
- As a participant, I want domain notifications (Order Approved, Batch Created, Batch Released, QC Passed, QC Failed).
- As a participant, I want system notifications (Machine Down, Material Shortage, Temperature Violation, Humidity Violation, Contamination Risk, Calibration Due).
Faults
- As a platform operator, I want faults detected: MES Unreachable, Sensor Offline, Telemetry Corrupted, Production Run Lost, Batch Event Gap, Event Stream Delay, Equipment State Conflict.
Storage & Projections
- As a platform operator, I want Batch Objects, Production Objects, and QC Objects retrievable from DiskHash with O(1) access.
- As a platform operator, I want Object Storage for Certificates, Images, SOPs, QC Reports, and Audit Documents.
- As an analyst, I want Static (Batch Directory, Equipment Directory, Facility Directory), Dynamic (Current Production, Current Utilization, Current Batch State), Compliance (Failed QC, Open CAPA, Regulatory Investigations), and Analytics projections (Yield Trends, Machine Reliability, Operator Efficiency, Batch Failure Rates).
Manual Overrides
- As an authorized person, I want to Force Batch Hold, Force Batch Release, Force Destruction, Override Production Stop, Override Equipment Lock, and perform an Emergency Manufacturing Halt — every override becoming an immutable event.
Graph
- As a quality analyst, I want a Manufacturing Graph (nodes: Product, Batch, Facility, Equipment, Operator, Material, QC Sample; edges: Batch PRODUCED_AT Facility, Batch CONSUMED Material, Batch CREATED_BY Run, Batch PACKAGED_BY Line, Batch TESTED_BY QC Sample).
- As a quality analyst, I want queries for contamination analysis (which batches touched Machine A), ingredient impact (which products contain ingredient X), recall blast radius (Batch Origin lineage), and production risk (products created during temperature violations).
Operational Runbook
- As an operations team, I want Continuous tasks (Monitor production, sensors, telemetry).
- As an operations team, I want Daily tasks (QC reviews, Yield review, Deviation review).
- As an operations team, I want Weekly tasks (Calibration audits, Equipment audits, Production performance audits).
- As an operations team, I want Monthly tasks (CAPA review, Regulatory review, Lineage verification, Graph consistency verification).
Page 9 of 17
Domain 04 — Cold Chain
Mission: guarantee cold-chain product integrity across space and time — proving continuous environmental compliance, quantifying risk, identifying impacted products, predicting failure, and enabling automatic rerouting.
Participants
- As a cold-chain operator, I want organizational types (Manufacturer, Wholesaler, Warehouse Operator, Transport Operator).
- As a cold-chain operator, I want facilities (Cold Warehouse, Regional Warehouse, Hub, Hospital Pharmacy, Storage Rooms).
- As a cold-chain operator, I want IoT participants (Temperature Sensor, Humidity Sensor, Air Pressure Sensor, Refrigeration Unit, Power Monitor, UPS Monitor, Generator Controller, GPS Tracker, Door Sensor, Motion Sensor, Vibration Sensor).
- As a cold-chain operator, I want human participants (Cold Chain Operator, Warehouse Manager, Transport Manager, Compliance Officer, Quality Officer).
Asset & Sensor Commands
- As a cold-chain operator, I want
register_cold_asset(), activate_asset(), deactivate_asset(), and service_asset().
- As a cold-chain operator, I want
register_sensor(), replace_sensor(), calibrate_sensor(), and disable_sensor().
Monitoring Commands
- As a monitoring system, I want
record_temperature(), record_humidity(), record_power_event(), and record_door_event().
Operational Commands
- As a cold-chain operator, I want
quarantine_batch(), release_batch(), reroute_shipment(), transfer_inventory(), and destroy_batch().
Domain Sensor Events
- As a platform integrator, I want TemperatureRecorded, HumidityRecorded, LocationRecorded, PowerUsageRecorded, DoorStateChanged, GPSUpdated, ShockDetected, VibrationDetected.
Domain Asset Events
- As a platform integrator, I want ColdAssetActivated, ColdAssetFailed, ColdAssetServiced, ColdAssetDegraded.
Domain Batch Events
- As a platform integrator, I want BatchEnteredColdStorage, BatchExitedColdStorage, BatchQuarantined, BatchReleased, BatchDestroyed.
Domain Shipment Events
- As a platform integrator, I want ShipmentEnteredTransit, ShipmentTemperatureTracked, ShipmentDelayed, ShipmentRerouted.
Compliance Events
- As a compliance officer, I want CompliancePassed, ComplianceFailed, AuditPerformed, AuditExceptionRaised.
System-Generated Environmental Events
- As a cold-chain operator, I want TemperatureThresholdExceeded, HumidityThresholdExceeded, PowerFailureDetected, CoolingFailureDetected, SensorOfflineDetected.
System-Generated Risk Events
- As a quality officer, I want SpoilageRiskDetected, ContaminationRiskDetected, IntegrityScoreReduced, IntegrityScoreRecovered.
Predictive Events
- As a cold-chain operator, I want CoolingFailurePredicted, BatteryFailurePredicted, RefrigerationFailurePredicted, ProductLossPredicted.
Workflows
- As a cold-chain operator, I want a Storage Monitoring Workflow (Sensor Reading → Validation → Rule Evaluation → Threshold Check → Violation Detection → Risk Evaluation → Notification → Action).
- As a cold-chain operator, I want a Shipment Monitoring Workflow (Shipment Starts → GPS Tracking → Temperature Monitoring → Route Monitoring → Delay Monitoring → Integrity Calculation → Arrival).
- As a cold-chain operator, I want a Violation Workflow (Violation Detected → Risk Assessment → Inventory Impact Analysis → Batch Identification → Quarantine → Investigation → Disposition).
APIs & Event Schemas
- As an integrator, I want POST /sensors/readings, POST /sensors/register, GET /sensors/status.
- As an integrator, I want GET /cold-assets, POST /cold-assets, PATCH /cold-assets/{id}.
- As an integrator, I want GET /coldchain/batches, POST /coldchain/quarantine, POST /coldchain/release.
- As an integrator, I want GET /shipments/environment, POST /shipments/reroute.
- As a platform operator, I want a Temperature Event schema
{eventType: TemperatureRecorded, sensorId, assetId, value, unit, timestamp} at million-per-day scale (5-minute frequency).
Notifications
- As a participant, I want domain notifications (Batch Quarantined, Shipment Released, Shipment Rerouted, Compliance Passed).
- As a participant, I want system notifications (Temperature Excursion, Sensor Offline, Power Failure, Cooling Failure, Integrity Score Low, Spoilage Risk High).
Faults
- As a platform operator, I want faults detected: Sensor Failure, Calibration Failure, Data Gap, GPS Failure, Cold Asset Failure, Communication Failure, Kafka Consumer Lag, Integrity Computation Failure.
Storage & Projections
- As a platform operator, I want Sensor Objects, Asset Objects, and Batch Integrity Objects retrievable from DiskHash with O(1) access.
- As a platform operator, I want Object Storage for Calibration Certificates, Compliance Reports, Audit Reports, and Inspection Images.
- As an analyst, I want Static (Cold Asset Directory, Sensor Directory, Storage Profile Catalog), Dynamic (Current Asset State, Current Route Integrity, Current Risk View, Current Violations), Compliance (Open Violations, Regulatory Breaches, Failed Audits), and Analytics projections (Asset Reliability, Sensor Reliability, Cold Zone Performance, Regional Failure Patterns).
Manual Overrides
- As an authorized operator, I want to Force Quarantine, Force Release, Override Sensor, Override Risk Decision, perform Emergency Reroute, Emergency Disposal, and Manual Integrity Approval — every override producing immutable events.
Graph
- As an analyst, I want a Cold Chain Graph (nodes: Product, Batch, Shipment, Container, Vehicle, Warehouse, Sensor, ColdAsset, Facility; edges: Batch STORED_IN ColdAsset, Batch SHIPPED_IN Container, Container LOCATED_IN Vehicle, Vehicle ARRIVED_AT Facility).
- As an analyst, I want queries for recall risk, impact analysis on failed refrigeration, full lineage from freezer failure to patients, and dynamic routing minimizing spoilage risk.
Operational Runbook
- As an operations team, I want Continuous tasks (Monitor telemetry, asset health, route health, integrity scores).
- As an operations team, I want Hourly tasks (Violation reconciliation, Sensor health audit, Cooling system audit).
- As an operations team, I want Daily tasks (Spoilage review, Quarantine review, Compliance review).
- As an operations team, I want Weekly tasks (Calibration audits, Asset maintenance audits, Route optimization review).
- As an operations team, I want Monthly tasks (Regulatory compliance review, Cold-chain graph consistency review, Facility performance benchmarking).
Page 10 of 17
Domain 05 — Warehousing
Mission: maintain the continuously changing physical state of inventory to achieve inventory optimization — right product, batch, location, time, condition, and cost.
Participants
- As an inventory manager, I want Digital Participants supported (WMS, Barcode Scanner, RFID Reader, Shelf Sensor, AGV Robot, Picking Automation System).
- As an inventory manager, I want human participants (Warehouse Supervisor, Inventory Manager, Fulfillment Manager, Auditor, Picker, Packer, Forklift Operator).
Inventory Commands
- As an inventory manager, I want
receive_inventory(), adjust_inventory(), reserve_inventory(), release_inventory(), quarantine_inventory(), and destroy_inventory().
Transfer Commands
- As a warehouse supervisor, I want
transfer_inventory(), accept_transfer(), reject_transfer(), and complete_transfer().
Optimization Commands
- As an inventory manager, I want
rebalance_inventory(), redistribute_stock(), and replenish_inventory().
Audit Commands
- As an auditor, I want
start_cycle_count(), record_count(), and close_audit().
Domain Events
- As a platform integrator, I want receiving events (InventoryReceived, ReceivingStarted, ReceivingCompleted, InventoryRejected).
- As a platform integrator, I want storage events (InventoryStored, InventoryMoved, ZoneChanged, WarehouseChanged).
- As a platform integrator, I want reservation events (InventoryReserved, ReservationExpired, ReservationReleased).
- As a platform integrator, I want allocation events (InventoryAllocated, InventoryReallocated, InventoryDeallocated).
- As a platform integrator, I want transfer events (TransferInitiated, TransferAccepted, TransferDispatched, TransferCompleted).
- As a platform integrator, I want inventory state events (InventoryQuarantined, InventoryReleased, InventoryDestroyed, InventoryExpired).
- As a platform integrator, I want audit events (CycleCountStarted, CycleCountCompleted, DiscrepancyDetected, InventoryAdjusted).
System-Generated Warehousing Events
- As an inventory manager, I want ExpiryWarningGenerated, ExpiryRiskDetected, InventoryNearExpiry.
- As an inventory manager, I want StockoutPredicted, OverstockDetected, UnderstockDetected, RebalanceSuggested.
- As a demand planner, I want DemandSpikeDetected, DemandCollapseDetected, InventoryShortageDetected.
- As a warehouse supervisor, I want WarehouseNearCapacity, WarehouseOverCapacity, ZoneCapacityExceeded.
Workflows
- As a warehouse operator, I want a Receiving Workflow (Shipment Arrives → Integrity Validation → Inventory Verification → Warehouse Assignment → Storage Assignment → Inventory Available).
- As a warehouse operator, I want an Allocation Workflow (Demand Arrives → Availability Check → Batch Selection → Allocation → Reservation → Picking Ready).
- As an inventory manager, I want an Expiry Workflow (Expiry Detected → Risk Scoring → Redistribution Evaluation → Discount / Reallocate → Destroy If Necessary).
- As an inventory manager, I want a Rebalancing Workflow (Demand Forecast → Excess Inventory Found → Target Warehouse Selection → Transfer Initiated → Transfer Completed).
APIs
- As an integrator, I want GET /inventory, POST /inventory/receive, POST /inventory/adjust.
- As an integrator, I want POST /reservations, DELETE /reservations/{id}.
- As an integrator, I want POST /transfers, GET /transfers/{id}.
- As an integrator, I want POST /audits/start, POST /audits/complete.
Notifications
- As a participant, I want domain notifications (Inventory Received, Inventory Allocated, Transfer Completed, Reservation Expired).
- As a participant, I want system notifications (Stockout Risk, Overstock Risk, Expiry Risk, Warehouse Full, Capacity Warning, Allocation Failure).
Faults
- As a platform operator, I want faults detected: Inventory Drift, Double Allocation, Reservation Leak, Transfer Failure, Audit Mismatch, Capacity Miscalculation, State Reconstruction Failure, Kafka Lag.
Manual Overrides
- As an authorized operator, I want to Force Allocation, Force Release, Force Inventory Adjustment, Force Transfer, Force Quarantine, and perform Emergency Stock Release — every override event-sourced.
Projections
- As a platform operator, I want Inventory Objects, Warehouse Objects, and Transfer Objects retrievable from DiskHash with O(1) access.
- As a platform operator, I want Object Storage for Receiving Documents, Invoices, Transfer Certificates, and Audit Reports.
- As an analyst, I want Static (Warehouse Directory, Facility Directory, Storage Capability Catalog), Dynamic (Current Inventory, Current Available Stock, Current Reservations, Current Capacity), Compliance (Expired Inventory, Quarantined Inventory, Missing Inventory, Audit Exceptions), and Analytics projections (Warehouse Utilization, Inventory Turns, Carrying Costs, Transfer Efficiency, Forecast Accuracy).
Graph
- As an analyst, I want a Warehouse Graph (nodes: Warehouse, Zone, Bin, Inventory, Batch, Product, Reservation, Transfer, Demand Center; relationships: Warehouse CONTAINS Zone, Zone CONTAINS Bin, Bin STORES Inventory, Inventory BELONGS_TO Batch, Batch BELONGS_TO Product).
- As an analyst, I want queries for nearest inventory, allocation optimization minimizing spoilage and transport cost, inventory network paths, recall analysis, and congestion-reducing movements.
Operational Runbook
- As an operations team, I want Continuous tasks (Inventory, Reservation, Capacity monitoring).
- As an operations team, I want Hourly tasks (Stockout analysis, Allocation optimization, Expiry assessment).
- As an operations team, I want Daily tasks (Cycle counting, Inventory reconciliation, Transfer review).
- As an operations team, I want Weekly tasks (Capacity review, Warehouse performance review, Rebalancing review).
- As an operations team, I want Monthly tasks (Audit review, Forecast review, Network optimization review, Inventory accuracy audit).
Page 11 of 17
Domain 06 — Recall Management
Mission: answer what is unsafe, why, how unsafe, who is affected, where it is, how quickly harm can be stopped, and what corrective actions must occur.
Recall Types
- As a recall officer, I want support for Product Recall (wrong formulation, incorrect dosage, impurity discovered, counterfeit).
- As a recall officer, I want support for Batch Recall (specific lot affected).
- As a recall officer, I want support for Cold Chain Recall (temperature excursion, storage violation, transport violation).
- As a recall officer, I want support for Manufacturing Recall (contamination, equipment defect, cleaning failure, incorrect process parameters).
- As a recall officer, I want support for Regulatory Recall (government suspension, regulatory withdrawal, emergency ban).
- As a recall officer, I want support for Safety Recall (unexpected adverse events, new contraindications, patient safety alert).
Recall Initiation Commands
- As a recall officer, I want
initiate_recall(), cancel_recall(), and escalate_recall().
Impact Analysis Commands
- As a recall officer, I want
start_impact_assessment(), calculate_recall_radius(), and identify_affected_batches().
Containment Commands
- As a recall officer, I want
quarantine_inventory(), block_dispensing(), block_shipping(), and destroy_inventory().
Communication Commands
- As a recall officer, I want
notify_facilities(), notify_pharmacies(), notify_patients(), and notify_regulators().
Closure Commands
- As a recall officer, I want
verify_containment(), close_recall(), and archive_recall().
Domain Events
- As a platform integrator, I want recall lifecycle events (RecallInitiated, RecallApproved, RecallPublished, RecallEscalated, RecallClosed).
- As a platform integrator, I want impact analysis events (ImpactAssessmentStarted, AffectedBatchDetected, AffectedInventoryDetected, AffectedPatientDetected, AffectedFacilityDetected).
- As a platform integrator, I want containment events (InventoryQuarantined, DispensingBlocked, ShipmentStopped, InventoryDestroyed, InventoryRecovered).
- As a platform integrator, I want communication events (FacilityNotified, PatientNotified, RegulatorNotified, AcknowledgementReceived).
- As a platform integrator, I want compliance events (ComplianceReviewStarted, ComplianceReviewCompleted, ContainmentVerified).
System-Generated Recall Events
- As a recall officer, I want RecallCandidateDetected, TemperatureViolationLinked, ManufacturingDefectDetected, AdverseEventSpikeDetected, BlastRadiusExpanded, UncontainedInventoryDetected, PatientRiskDetected, DispensingAttemptBlocked.
Workflows
- As a recall officer, I want a Manufacturing Recall Workflow (Quality Defect → Recall Created → Impact Assessment → Affected Batches Identified → Affected Inventory Located → Shipments Frozen → Facilities Notified → Patients Identified → Containment → Closure).
- As a recall officer, I want a Cold Chain Recall Workflow (Temperature Violation → Risk Analysis → Affected Batch Identification → Integrity Scoring → Recall Decision → Inventory Quarantine).
- As a recall officer, I want a Patient Safety Recall Workflow (Adverse Event Report → Root Cause Analysis → Product Correlation → Recall Decision → Patient Notification → Care Path Guidance).
APIs
- As an integrator, I want POST /recalls, GET /recalls, GET /recalls/{id}.
- As an integrator, I want POST /recalls/{id}/analyze and GET /recalls/{id}/impact.
- As an integrator, I want POST /recalls/{id}/quarantine and POST /recalls/{id}/block.
- As an integrator, I want POST /recalls/{id}/notify.
- As an integrator, I want POST /recalls/{id}/close.
Projections
- As a platform operator, I want Recall Objects, Impact Objects, and Containment Objects retrievable from DiskHash.
- As a platform operator, I want Active Recalls, Recall Status, and Participant Risk State cached in Redis.
- As a platform operator, I want Object Storage for Recall Notices, Root Cause Reports, Regulatory Reports, and Investigation Reports.
- As a recall officer, I want Static (Recall Directory, Recall Categories, Severity Catalog), Dynamic (Current Recall Status, Containment Progress, Open Risks, Remaining Exposure), Compliance (Unacknowledged Recalls, Incomplete Containment, Missed Notifications, Regulatory Violations), and Analytics (Recall Trends, Facility Compliance, Response Time, Containment Efficiency, Product Risk Ranking) projections.
Notifications
- As a participant, I want domain notifications (Recall Issued, Recall Escalated, Recall Closed, Containment Verified).
- As a participant, I want system notifications (Affected Patient Found, Affected Facility Found, Inventory Still Active, Blast Radius Increased, Dispensing Blocked, Shipment Blocked).
Faults
- As a platform operator, I want faults detected: Recall Not Delivered, Impact Calculation Failure, Graph Traversal Failure, Inventory Visibility Gap, Patient Discovery Failure, Kafka Event Loss, Notification Failure, State Reconstruction Failure.
Manual Overrides
- As an authorized officer, I want to Force Recall, Emergency Recall, Force Quarantine, Force Release, Patient Notification Override, and Regulatory Escalation Override — every action creating immutable events.
Graph
- As a recall officer, I want a Memgraph recall engine (nodes: Product, Batch, Shipment, Warehouse, Facility, Pharmacy, Patient, TemperatureViolation, Recall, Manufacturer; relationships: Manufacturer PRODUCED Batch, Batch SHIPPED_TO Warehouse, Warehouse SUPPLIED Pharmacy, Pharmacy DISPENSED_TO Patient, Batch AFFECTED_BY Recall).
- As a recall officer, I want critical queries: which patients received this recalled batch; which batches were exposed to a failed refrigeration unit; which facilities still possess unquarantined inventory; how far contaminated inventory has spread; and blast radius (Recall → Batch → Inventory → Facility → Patient).
Operational Runbook
- As an operations team, I want Continuous tasks (Monitor recall candidates, active recalls, blast radius).
- As an operations team, I want Hourly tasks (Containment checks, Inventory visibility checks, Notification audits).
- As an operations team, I want Daily tasks (Recall progress review, Facility compliance review, Open risk review).
- As an operations team, I want Weekly tasks (Containment verification, Response effectiveness analysis, Regulatory review).
- As an operations team, I want Monthly tasks (Recall simulation exercises, Infrastructure resilience testing, Graph consistency audits).
Page 12 of 17
Domain 07 — Procurement
Mission: continuously maintain optimal inventory levels while minimizing stockouts, wastage, expiry, spoilage, cost, and delivery time, and maximizing availability, service levels, patient outcomes, and supply continuity.
Regulatory Participants
- As a procurement officer, I want regulatory participants supported including CDSCO and Licensing Authorities.
Demand Commands
- As a procurement officer, I want
create_procurement_request(), create_replenishment_request(), and adjust_forecast().
Supplier Management Commands
- As a procurement officer, I want
register_supplier(), approve_supplier(), and suspend_supplier().
RFQ Commands
- As a procurement officer, I want
create_rfq(), submit_quote(), award_quote(), and cancel_rfq().
Purchase Order Commands
- As a procurement officer, I want
create_po(), approve_po(), amend_po(), cancel_po(), and close_po().
Emergency Operations
- As a procurement officer, I want
emergency_procurement(), activate_backup_supplier(), and activate_regional_rebalancing().
Domain Events
- As a platform integrator, I want supplier events (SupplierRegistered, SupplierApproved, SupplierSuspended, SupplierReactivated).
- As a platform integrator, I want RFQ events (RFQCreated, RFQPublished, QuoteSubmitted, QuoteAccepted, QuoteRejected).
- As a platform integrator, I want procurement events (ProcurementRequested, ProcurementApproved, ProcurementRejected).
- As a platform integrator, I want PO events (POCreated, POApproved, PODispatched, POReceived, POClosed).
- As a platform integrator, I want supply events (SupplyCommitted, SupplyDelayed, SupplyRejected, SupplyCompleted).
System-Generated Procurement Events
- As a procurement officer, I want inventory events (ReplenishmentTriggered, StockoutRiskDetected, ReorderPointReached).
- As a procurement officer, I want forecast events (DemandSpikeDetected, DemandDropDetected, SeasonalDemandIncreaseDetected).
- As a procurement officer, I want risk events (SupplierRiskIncreased, RegionalSupplyRiskDetected, ShortagePredicted, DeliveryFailurePredicted).
- As a procurement officer, I want recommendation events (AlternativeSupplierSuggested, AlternativeProductSuggested, EmergencySourcingSuggested).
Workflows
- As a procurement officer, I want a Standard Procurement Workflow (Inventory Falls Below Threshold → Demand Analysis → Supplier Selection → RFQ → Quotes → Award → PO → Supply Commitment → Delivery).
- As a hospital procurement officer, I want an Emergency Procurement Workflow (Medicine Shortage → Emergency Trigger → Supplier Pool Search → Availability Check → Best Candidate Selection → PO Creation → Expedited Logistics).
- As a procurement officer, I want a Pandemic Workflow (Demand Spike → Forecast Update → Regional Inventory Scan → National Supplier Analysis → Allocation Strategy → Mass Procurement).
APIs
- As an integrator, I want GET /suppliers, POST /suppliers, PATCH /suppliers/{id}.
- As an integrator, I want POST /rfq, GET /rfq/{id}, POST /rfq/{id}/award.
- As an integrator, I want POST /procurement, GET /procurement/{id}.
- As an integrator, I want POST /purchase-orders, GET /purchase-orders/{id}, PATCH /purchase-orders/{id}.
Projections
- As a platform operator, I want Active Procurement Requests cached in Redis alongside Hot Supplier Rankings and Hot Demand Signals.
- As a platform operator, I want Supplier Objects, Contract Objects, and PO Objects retrievable from DiskHash.
- As a platform operator, I want Object Storage for Contracts, Tender Documents, Compliance Certificates, and Supplier Audits.
- As a procurement officer, I want Static (Supplier Directory, Contract Catalog, Pricing Catalog), Dynamic (Current Demand, Current Procurement Pipeline, Current Supplier Availability), Compliance (Expired Contracts, Supplier Violations, Open Audits), and Analytics (Lead Time Trends, Supplier Reliability, Price Trends, Procurement Effectiveness) projections.
Notifications
- As a participant, I want domain notifications (RFQ Issued, Quote Received, PO Approved, PO Delivered, Contract Renewed).
- As a participant, I want system notifications (Supplier Risk Increased, Demand Spike Detected, Stockout Risk, Contract Expiring, Shortage Predicted, Emergency Procurement Triggered).
Faults
- As a platform operator, I want faults detected: Supplier Unreachable, PO Lost, Contract Conflict, Demand Forecast Failure, Pricing Synchronization Failure, Risk Computation Failure, Event Replay Failure.
Manual Overrides
- As an authorized officer, I want to Force Procure, Force Supplier Approval, Emergency Supplier Activation, Emergency Contract Override, Manual Allocation Override, and Manual Risk Override — all event-sourced.
Graph
- As a procurement officer, I want a Procurement Graph (nodes: Supplier, Manufacturer, Warehouse, Contract, Product, Purchase Order, Region, Facility; relationships: Supplier SUPPLIES Product, Product STORED_AT Warehouse, Warehouse SERVES Facility, Facility DEMANDS Product).
- As a procurement officer, I want queries for supplier risk, alternative sourcing, fastest demand fulfillment, regional vulnerability, and recall impact on contracts.
- As a procurement officer, I want the graph to act as a procurement advisor (e.g., "need insulin 1M units in 7 days with cold chain" → optimal allocation across suppliers, transport, and capacity).
Operational Runbook
- As an operations team, I want Continuous tasks (Monitor demand signals, supplier health, procurement pipeline).
- As an operations team, I want Hourly tasks (Check stockout risks, open RFQs, supplier availability).
- As an operations team, I want Daily tasks (Review procurement backlog, emergency requests, contract changes).
- As an operations team, I want Weekly tasks (Supplier performance review, Procurement efficiency review, Risk review).
- As an operations team, I want Monthly tasks (Contract audit, Supplier audit, Regional supply resilience assessment, Procurement graph optimization review).
Page 13 of 17
Domain 08 — Demand Forecasting
Mission: convert historical events + current state + external signals into future demand predictions before shortages, spikes, outbreaks, procurement needs, manufacturing targets, and redistribution needs occur.
Forecast Generation Commands
- As a demand analyst, I want
generate_forecast(), refresh_forecast(), and recalculate.
Signals Commands
- As a demand analyst, I want
register_signal(), activate_signal(), and disable_signal().
Simulations Commands
- As a demand analyst, I want
run_scenario() and run_pandemic_model().
Learning Commands
- As a demand analyst, I want
evaluate_accuracy() and retrain_model().
Domain Events
- As a platform integrator, I want forecast events (ForecastGenerated, ForecastUpdated, ForecastExpired).
- As a platform integrator, I want signal events (DemandSignalDetected, DemandSignalRemoved, AnomalyDetected).
- As a platform integrator, I want capacity events (ShortagePredicted, ExcessPredicted, StockoutPredicted, SurplusPredicted).
- As a platform integrator, I want forecast quality events (ForecastValidated, ForecastDeviationDetected).
System-Generated Forecast Events
- As a public health analyst, I want epidemiological events (DiseaseClusterDetected, OutbreakDetected, AdmissionSpikeDetected).
- As a demand analyst, I want market events (DemandSpikeDetected, DemandCollapseDetected, SubstitutionTrendDetected).
- As a supply analyst, I want supply events (SupplyConstraintPredicted, ManufacturerCapacityRiskDetected, ProcurementRiskDetected).
- As a demand analyst, I want environmental events (WeatherImpactPredicted, HeatwaveImpactPredicted, SeasonalDemandPredicted).
Workflows
- As a demand analyst, I want a Daily Forecast Workflow (New Events Arrive → Event Aggregation → Feature Generation → Forecast Models → Prediction → Confidence Scoring).
- As a demand analyst, I want a Stockout Prediction Workflow (Inventory State → Consumption Velocity → Demand Forecast → Safety Stock Calculation → Risk Scoring → Stockout Warning).
- As a demand analyst, I want an Outbreak Forecast Workflow (Lab Activity Increase → Prescription Increase → Admission Increase → Region Analysis → Outbreak Probability → Healthcare Alerts).
Scenarios
- As a demand analyst, I want Scenario A (Normal Demand) using history, seasonality, and consumption.
- As a demand analyst, I want Scenario B (Heat Wave) predicting IV fluids, electrolytes, emergency care supplies.
- As a demand analyst, I want Scenario C (Recall) predicting replacement product demand.
- As a demand analyst, I want Scenario D (Supplier Failure) predicting regional stockouts.
- As a demand analyst, I want Scenario E (Epidemic) predicting hospital load, medication demand, and diagnostic demand.
APIs
- As an integrator, I want GET /forecasts, POST /forecasts/run, GET /forecasts/{id}.
- As an integrator, I want POST /scenarios, POST /simulations.
- As an integrator, I want GET /demand/trends, GET /risk/stockouts.
Notifications
- As a participant, I want domain notifications (Forecast Published, Scenario Completed, Model Updated).
- As a participant, I want system notifications (Stockout Predicted, Demand Spike Predicted, Outbreak Risk Detected, Supplier Risk Predicted, Procurement Required).
Controls & Overrides
- As an authorized analyst, I want Manual Forecast Override, Model Selection Override, Emergency Demand Override, Scenario Injection, Forecast Suppression, and Risk Suppression — all event-sourced.
Graph
- As a demand analyst, I want a predictive Memgraph (nodes: Product, Supplier, Warehouse, Hospital, Region, Disease, Patient Cohort, Forecast, Signal; relationships: Disease IMPACTS Demand, Hospital CONSUMES Product, Product REQUIRES Manufacturer, Manufacturer SUPPLIES Region).
- As a demand analyst, I want queries for shortage propagation, demand cascade from influenza, optimal inventory placement, and outbreak preparedness.
Page 14 of 17
Domain 09 — Logistics
Mission: move the right inventory from the optimal source to the optimal destination while minimizing cost, transit time, spoilage risk, cold chain risk, recall exposure, and inventory imbalance, and maximizing availability, integrity, service level, and patient outcomes.
Shipment Commands
- As a dispatcher, I want to
create_shipment(), dispatch_shipment(), pause_shipment(), cancel_shipment(), and complete_shipment().
Route Commands
- As a route planner, I want to
generate_route(), optimize_route(), and reroute_shipment().
Vehicle Commands
- As a fleet manager, I want to
assign_vehicle(), release_vehicle(), and retire vehicles.
Delivery Commands
- As a delivery agent, I want to
confirm_delivery(), reject_delivery(), and record delays.
Emergency Commands
- As a dispatcher, I want
activate_emergency_route(), activate_recovery_route(), and to freeze shipments.
Domain Events
- As a platform integrator, I want shipment events (ShipmentCreated, ShipmentAssigned, ShipmentDispatched, ShipmentArrived, ShipmentDelivered, ShipmentClosed).
- As a platform integrator, I want route events (RouteGenerated, RouteOptimized, RouteChanged, RouteBlocked).
- As a platform integrator, I want transit events (TransitStarted, CheckpointReached, FacilityReached, CrossDockCompleted).
- As a platform integrator, I want delivery events (DeliveryConfirmed, DeliveryRejected, DeliveryRescheduled).
- As a platform integrator, I want exception events (DelayDetected, VehicleFailureDetected, RouteFailureDetected, ColdChainRiskDetected, ShipmentLost).
System-Generated Logistics Events
- As a logistics operator, I want predictive events (DelayPredicted, SpoilageRiskPredicted, TrafficImpactDetected, VehicleBreakdownPredicted).
- As a logistics operator, I want optimization events (BetterRouteDetected, ShipmentConsolidationSuggested, CrossDockSuggestionGenerated).
- As a logistics operator, I want risk events (RouteRiskIncreased, WeatherRiskDetected, SecurityRiskDetected).
Workflows
- As a logistics operator, I want a Standard Shipment Workflow (Shipment Required → Source Selection → Route Generation → Vehicle Assignment → Dispatch → Transit → Delivery → Closure).
- As a cold-chain logistics operator, I want a Cold Chain Shipment Workflow (Shipment Created → Cold Vehicle Assignment → Sensor Verification → Transit Monitoring → Integrity Verification → Delivery).
- As a dispatcher, I want an Emergency Redistribution Workflow (Hospital Shortage → Inventory Discovery → Nearest Source Found → Expedited Route → Priority Dispatch → Delivery).
APIs
- As an integrator, I want POST /shipments, GET /shipments/{id}, PATCH /shipments/{id}.
- As an integrator, I want GET /routes, POST /routes/optimize.
- As an integrator, I want GET /tracking/{shipmentId}, POST /tracking/update.
- As an integrator, I want POST /deliveries/confirm.
Projections
- As a platform operator, I want Shipment Objects, Route Objects, and Vehicle Objects retrievable from DiskHash.
- As a platform operator, I want Object Storage for Proof of Delivery, Delivery Images, Transport Certifications, and Signed Documents.
- As a logistics operator, I want Static (Vehicle Directory, Route Catalog, Carrier Catalog), Dynamic (Current Shipments, Current ETAs, Current Route Risks, Fleet Location), Compliance (Cold Chain Violations, Delivery Delays, Carrier Breaches), Analytics (Transit Time, Fleet Efficiency, Carrier Reliability, Route Success Rate) projections.
Notifications
- As a participant, I want domain notifications (Shipment Created, Shipment Delivered, Route Updated, Vehicle Assigned).
- As a participant, I want system notifications (Delay Predicted, ETA Missed, Shipment Lost, Cold Chain Risk Detected, Reroute Recommended).
Faults
- As a platform operator, I want faults detected: GPS Offline, Vehicle Failure, Tracking Failure, Route Calculation Failure, Kafka Event Delay, Location Inconsistency, Carrier Communication Failure.
Manual Overrides
- As an authorized operator, I want to Force Dispatch, Force Reroute, Force Delivery, create Emergency Shipments, Manual ETA Override, and Fleet Override — all producing immutable events.
Graph
- As a logistics operator, I want a Memgraph route optimizer (nodes: Shipment, Warehouse, Vehicle, Facility, Route, Driver, Product, Batch, Region; relationships: Warehouse SHIPS Shipment, Shipment CARRIES Batch, Shipment FOLLOWS Route, Route CONNECTS Facility, Vehicle TRANSPORTS Shipment).
- As a logistics operator, I want queries for route optimization, recall recovery, dynamic rerouting, shortage prevention, and fleet optimization, with the graph continuously recalculating route risk, ETA, fulfillment probability, cold chain risk, and stockout prevention from Kafka GPS/vehicle/traffic/weather events.
Page 15 of 17
Domain 10 — Patient Care
Mission: answer why the patient is seeking care, what condition exists, what care was delivered, what outcome occurred, what should happen next, and how the patient's health evolves — building the Longitudinal Health Timeline.
Commands
- As a registration clerk, I want
register_patient(), link_abha(), and update_demographics().
- As a clinician, I want
create_encounter(), close_encounter(), and cancel_encounter().
- As a clinician, I want
record_assessment(), record_diagnosis(), and record_observation().
- As a care coordinator, I want
create_care_plan(), amend_care_plan(), and close_care_plan().
- As a clinician, I want
create_referral(), accept_referral(), and complete_referral().
Domain Events
- As a platform integrator, I want encounter events (EncounterCreated, EncounterStarted, EncounterCompleted, EncounterCancelled).
- As a platform integrator, I want clinical events (SymptomsRecorded, VitalsRecorded, AssessmentRecorded, ClinicalNoteRecorded).
- As a platform integrator, I want diagnosis events (DiagnosisCreated, DiagnosisConfirmed, DiagnosisUpdated, DiagnosisResolved).
- As a platform integrator, I want care events (CarePlanCreated, CarePlanUpdated, CarePlanCompleted).
- As a platform integrator, I want referral events (ReferralCreated, ReferralAccepted, ReferralClosed).
System-Generated Clinical Events
- As a clinician, I want clinical risk events (HighRiskPatientDetected, ReadmissionRiskDetected, CareGapDetected, FollowUpOverdue).
- As a clinician, I want disease events (DiseaseProgressionDetected, DiseaseRemissionDetected, ComplicationDetected).
- As a clinician, I want wellness events (LifestyleRiskDetected, PreDiabetesDetected, ObesityRiskDetected).
- As a public health analyst, I want population events (HighRiskCohortDetected, RegionalDiseasePatternDetected).
Workflows
- As a clinician, I want a Consultation Workflow (Patient Arrives → Encounter Created → Assessment → Vitals → Diagnosis → Care Plan → Orders Generated → Encounter Closed).
- As a clinician, I want a Chronic Condition Workflow (Diabetes Diagnosis → Care Plan → Prescriptions → Diagnostics → Follow-Ups → Risk Monitoring → Outcome Tracking).
- As a clinician, I want a Referral Workflow (Primary Physician → Referral → Specialist → Evaluation → Feedback → Care Continuation).
APIs
- As an integrator, I want GET /patients, POST /patients, GET /patients/{id}.
- As an integrator, I want POST /encounters, GET /encounters/{id}.
- As an integrator, I want POST /diagnoses, GET /diagnoses.
- As an integrator, I want POST /careplans, PATCH /careplans/{id}.
Notifications
- As a participant, I want domain notifications (Encounter Completed, Referral Assigned, Care Plan Updated).
- As a participant, I want system notifications (Critical Risk Detected, Follow-Up Due, Care Gap Detected, High-Risk Patient Identified).
Faults
- As a platform operator, I want faults detected: FHIR Resource Failure, Patient Matching Failure, Encounter State Corruption, Clinical Note Failure, Referral Routing Failure, Timeline Reconstruction Failure.
Manual Overrides
- As an authorized clinician, I want Manual Diagnosis Override, Care Plan Override, Referral Override, Risk Override, Encounter Correction, and Patient Merge/Split — all event-sourced.
FHIR Mapping
- As an integrator, I want mappings (Patient Aggregate → FHIR Patient, Encounter → FHIR Encounter, Diagnosis → FHIR Condition, Care Plan → FHIR CarePlan, Clinical Observation → FHIR Observation).
Graph
- As a clinician, I want a citizen-centric Memgraph (nodes: Patient, Encounter, Condition, CarePlan, Practitioner, Facility, Medication, Diagnostic Report, Referral).
- As a clinician, I want queries for longitudinal care, clinical context, care coordination, risk detection against similar patients, and best-outcome care pathways.
Page 16 of 17
Domain 11 — Prescription Lifecycle
Mission: safely manage the path from clinical decision → prescription → validation → dispensing → consumption → monitoring → adjustment → completion, treating prescriptions as long-running workflows.
Authoring Commands
- As a prescriber, I want
create_prescription(), modify_prescription(), and cancel_prescription().
Validation Commands
- As a prescriber, I want
validate_interactions(), validate_allergies(), and validate_availability().
Dispensing Commands
- As a pharmacist, I want
authorize_dispense(), reject_dispense(), and partial_dispense().
Therapy Commands
- As a clinician, I want
start_therapy(), pause_therapy(), and resume_therapy().
Refill Commands
- As a patient or pharmacist, I want
request_refill(), approve_refill(), and deny_refill().
Domain Events
- As a platform integrator, I want prescription events (PrescriptionCreated, PrescriptionUpdated, PrescriptionCancelled, PrescriptionExpired).
- As a platform integrator, I want validation events (InteractionCheckCompleted, AllergyCheckCompleted, ContraindicationDetected).
- As a platform integrator, I want dispensing events (MedicationAuthorized, MedicationDispensed, MedicationRejected, PartialDispenseCompleted).
- As a platform integrator, I want therapy events (TherapyStarted, TherapyPaused, TherapyModified, TherapyCompleted).
- As a platform integrator, I want refill events (RefillRequested, RefillApproved, RefillDenied).
System-Generated Prescription Events
- As a prescriber, I want safety events (DrugInteractionDetected, SevereInteractionDetected, AllergyRiskDetected, DosageRiskDetected, PregnancyContraindicationDetected).
- As a care coordinator, I want compliance events (MedicationAdherenceLow, MissedDoseDetected, RefillOverdueDetected).
- As a pharmacist, I want recall events (RecalledMedicationDetected, AffectedPrescriptionDetected).
- As a pharmacist, I want availability events (InventoryUnavailable, AlternativeMedicationSuggested).
Workflows
- As a prescriber, I want a Standard Prescription Flow (Encounter → Diagnosis → Prescription Created → Safety Analysis → Validation → Authorization → Dispensing → Therapy Begins).
- As a patient, I want a Refill Flow (Refill Request → Eligibility Check → Clinical Check → Approval → Dispense).
- As a prescriber, I want an Interaction Workflow (New Medication Added → Interaction Analysis → Risk Evaluation → Provider Alert → Decision).
- As a pharmacist, I want a Recall Workflow (Recall Issued → Prescriptions Impacted → Affected Patients Found → Provider Notified → Alternative Therapy).
APIs
- As an integrator, I want POST /prescriptions, GET /prescriptions/{id}, PATCH /prescriptions/{id}.
- As an integrator, I want POST /therapy/start, POST /therapy/pause.
- As an integrator, I want POST /validate/interactions, POST /validate/allergies.
- As an integrator, I want POST /refills/request, POST /refills/approve.
FHIR Mapping
- As an integrator, I want mappings (Prescription → MedicationRequest, Dispense → MedicationDispense, Medication → Medication, Patient → Patient).
Notifications
- As a participant, I want domain notifications (Prescription Created, Prescription Approved, Prescription Updated, Refill Approved).
- As a participant, I want system notifications (Interaction Detected, Allergy Risk, Medication Recall, Therapy Overdue, Refill Due, Missed Dose Risk).
Faults
- As a platform operator, I want faults detected: Interaction Engine Failure, FHIR Save Failure, Prescription Authorization Failure, Therapy State Corruption, Medication Mapping Failure, Duplicate Prescription Detection Failure.
Manual Overrides
- As an authorized clinician/pharmacist, I want to Override Interaction, Override Allergy Warning, Force Prescription Cancellation, Emergency Medication Approval, Emergency Substitution, and Manual Therapy Closure — all explicitly audited with immutable events.
Graph
- As a clinician, I want a rich prescription graph (nodes: Patient, Doctor, Condition, Prescription, Medication, Dispense, Pharmacy, Facility, CarePlan; relationships: Patient HAS Prescription, Prescription PRESCRIBES Medication, Doctor CREATED Prescription, Medication INTERACTS_WITH Medication, Condition TREATED_BY Medication).
- As a clinician, I want queries for interactions, recall impact, alternative therapies, therapy optimization, and chronic care medication history.
Page 17 of 17
Domain 12 — Diagnostics
Mission: transform uncertainty into evidence — what tests should be performed, what was measured, what were findings, whether they are normal or critical, how they compare over time, and whether they support a diagnosis.
Ordering Commands
- As an ordering clinician, I want
create_diagnostic_order(), amend_order(), and cancel_order().
Sample Management Commands
- As a lab technician, I want
collect_sample(), reject_sample(), transfer_sample(), and receive_sample().
Processing Commands
- As a lab technician, I want
start_analysis(), complete_analysis(), and repeat_analysis().
Reporting Commands
- As a pathologist, I want
create_report(), sign_report(), publish_report(), and correct_report().
Escalation Commands
- As a lab technician, I want
escalate_critical_result() and notify_provider().
Domain Events
- As a platform integrator, I want order events (DiagnosticOrderCreated, DiagnosticOrderUpdated, DiagnosticOrderCancelled).
- As a platform integrator, I want sample events (SampleCollected, SampleReceived, SampleRejected, SampleDestroyed, SampleExpired).
- As a platform integrator, I want processing events (AnalysisStarted, AnalysisCompleted, AnalysisRepeated).
- As a platform integrator, I want result events (ResultGenerated, ResultReviewed, ResultApproved, ResultPublished, ResultCorrected).
- As a platform integrator, I want imaging events (ImagingRequested, ImagingCompleted, ImagingInterpreted, ImagingPublished).
System-Generated Diagnostic Events
- As a clinician, I want clinical risk events (CriticalResultDetected, AbnormalResultDetected, TrendDeteriorationDetected, EscalationRequired).
- As a public health analyst, I want population events (ClusterDetected, OutbreakSignalDetected, AnomalyDetected).
- As a lab technician, I want technical events (AnalyzerFailureDetected, SampleIntegrityFailure, CalibrationFailureDetected).
- As a clinician, I want predictive events (HighRiskPatientDetected, DiseaseProgressionDetected, RepeatedAbnormalityDetected).
Workflows
- As a lab technician, I want a Laboratory Workflow (Order Created → Sample Collection → Sample Reception → Analysis → Result Validation → Approval → Publication).
- As a radiologist, I want an Imaging Workflow (Order → Imaging Acquisition → Interpretation → Review → Publication).
- As a lab technician, I want a Critical Result Workflow (Result Generated → Critical Value Check → Immediate Escalation → Provider Notification → Acknowledgement → Care Intervention).
APIs
- As an integrator, I want POST /diagnostics/orders, GET /diagnostics/orders/{id}.
- As an integrator, I want POST /samples, GET /samples/{id}.
- As an integrator, I want GET /results, GET /results/{id}.
- As an integrator, I want POST /reports/publish.
HL7 v2 → FHIR Integration
- As an integrator, I want the platform to consume legacy HL7 v2 messages including ORU^R01, ADT, ORM, SIU, ORM, and ADT.
- As an integrator, I want legacy formats supported including CSV and XML.
- As an integrator, I want these translated to FHIR resources: Observation, DiagnosticReport, ServiceRequest, Specimen, Patient, Encounter, Appointment.
- As an
No comments yet. Be the first!