83 lines
3.1 KiB
Markdown
83 lines
3.1 KiB
Markdown
# Signal CGM powered by STTIL Solutions
|
|
|
|
B2B CGM coverage 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.
|