Signal/README.md
Kisa c2141a127a Update Signal brand language and add pitch/build artifacts
- Remove 'coverage' from worklist description across all docs
- Add whitepaper v2, documentation gap whitepaper, gate demo, sample
- Add TERAX.md, Claude Code settings, test-data generator
- Add settings.local.json to .gitignore

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 10:14:16 -04:00

83 lines
3.1 KiB
Markdown

# Signal CGM powered by STTIL Solutions
B2B CGM documentation worklist tool for DMEPOS suppliers. Ingests CSV shipment data
(Brightree/WellSky exports), calculates coverage expiration per patient using
device wear-day rules, and produces a prioritized worklist for proactive outreach
— so small DME teams act before claims deny, not after.
**Self-hosted. Data never leaves the supplier network.**
---
## What It Does
Most DMEPOS suppliers manage CGM coverage reactively: a claim denies, then staff
scramble to appeal. Signal CGM flips that. The system watches coverage windows
continuously and surfaces patients approaching expiration before the denial
condition exists.
- Ingests shipment CSV from Brightree or WellSky
- Calculates coverage expiration per patient per device using payer-specific
wear-day rules
- Flags each patient: `REFILL_WINDOW`, `VISIT_DUE`, `OUT_OF_COVERAGE`, or `OK`
- Delivers a prioritized worklist to DME staff via encrypted email
- Staff handle outreach locally — Signal CGM never contacts patients directly
## Stack
| Layer | Technology |
|-------|-----------|
| Backend | Python / FastAPI |
| Database | PostgreSQL (encrypted at rest) |
| Orchestration | n8n (self-hosted, 24-hour batch trigger) |
| Notifications | Mailcow (self-hosted SMTP — staff email only) |
| Hosting | Hostinger VPS — data stays on-prem |
## PHI Architecture
Signal CGM is designed to minimize PHI surface area:
- **Sole crosswalk key:** `patient_id` (the supplier's internal MRN or account
number). No names, SSNs, DOBs, or contact information enter the system.
- DME staff maintain the `patient_id` ↔ real identity mapping in their own
systems (Brightree, EHR, etc.).
- The calculation layer sees: `patient_id`, `device_type`, `shipment_date`,
`quantity`, `payer` — nothing else.
- All audit logs hash `patient_id` before storage. Raw identifiers never appear
in logs.
## Coverage Flag Logic
| Flag | Meaning |
|------|---------|
| `REFILL_WINDOW` | Patient is within the refillable window — safe to ship |
| `VISIT_DUE` | Physician visit renewal is approaching (Medicare: 180 days) |
| `OUT_OF_COVERAGE` | Coverage has lapsed — outreach required before next shipment |
| `OK` | No action needed at this time |
## Directory Structure
```
signal-cgm/
├── python-backend/
│ ├── core/
│ │ ├── coverage_calculator.py # Coverage clock logic
│ │ ├── audit_logger.py # PHI-safe audit logging
│ │ └── db_models.py # PostgreSQL models
│ └── config/
│ └── payer_rules.json # Wear-day rules by device and payer
├── n8n-workflows/ # n8n batch trigger exports
└── CLAUDE.md # Active dev context
```
## BAA Status (Level 1)
| Vendor | BAA Required | Status |
|--------|-------------|--------|
| Hostinger VPS | Yes — PHI host | Pending |
| Anthropic API | Only if AI layer touches PHI | Not applicable (Level 1) |
| All other components | Self-hosted — operator is STTIL | N/A |
---
© 2026 STTIL Solutions LLC. Proprietary software — see LICENSE.md.