Signal: Proactive Healthcare Infrastructure starting with DMEPOS suppliers dispensing CGM supplies for T1D patients. https://git.forgejo.sttilsolutions.com/sttil/Signal/
Find a file
Kisa c07d054ca5 Add readiness-model dedup + coverage-line grouping foundation
Group normalized shipment rows into deduped shipments and gradeable
coverage lines (patient -> device -> shipment), the structural fix for the
row-keyed worklist bug (six months of orders no longer = six worklist lines).

- Locked dedup key (patient_id, device_type, date_of_service); order_number
  is display-only. Monthly resupplies stay separate, not duplicates.
- Client-mapped plan_type carried through, never guessed from payer name;
  conflicting plan types in a group route to "plan type needed".
- Quantity merge: sum across distinct component configs, max within a config
  (duplicate guard) with a warning breadcrumb on disagreement.
- CGM gradeable this phase; pumps preserved/displayed but not graded.

Additive only: not yet wired into the live pipeline, grading unchanged.
30 tests green (full suite 46), code-auditor reviewed (M1/M2/L1/L2/L3 fixed).

Design: docs/dedup-design-2026-06-24.md, docs/readiness-model-brief-2026-06-23.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 00:22:01 -04:00
.claude Update Signal brand language and add pitch/build artifacts 2026-05-28 10:14:16 -04:00
context context: 2026-06-25 session wrap 2026-06-25 18:03:16 -04:00
docs Add readiness-model dedup + coverage-line grouping foundation 2026-06-27 00:22:01 -04:00
n8n-workflows update CLAUDE.md and coverage calculator; add n8n content radar workflow, vercel SPA rewrite, and ui workspace config 2026-06-02 00:41:49 -04:00
pitch add pitch assets, fix UI and backend bugs, add test utilities 2026-06-19 12:52:29 -04:00
python-backend Add readiness-model dedup + coverage-line grouping foundation 2026-06-27 00:22:01 -04:00
research feat: add reason strings per patient, fix export headers, add signal-ui source 2026-05-26 09:45:02 -04:00
scripts security: rotate leaked Signal API key, remove it from frontend + source 2026-06-21 14:00:54 -04:00
signal-ui security: rotate leaked Signal API key, remove it from frontend + source 2026-06-21 14:00:54 -04:00
test-data docs+state: Convex-Signal spike brief + ship-status ledger + session wrap [CC] 2026-06-24 13:38:46 -04:00
tests Add readiness-model dedup + coverage-line grouping foundation 2026-06-27 00:22:01 -04:00
.gitignore chore(state): clean-start current-state.md, ignore context recovery artifacts, add workflow-consolidation brief for Pi 2026-06-23 21:22:31 -04:00
CLAUDE.md feat(workflow): build consolidation foundation from Pi's recovered design 2026-06-23 23:30:56 -04:00
Dockerfile feat: FastAPI backend + full deployment stack (Railway + Vercel) 2026-05-18 19:01:35 -04:00
LICENSE.md feat: Signal CGM Level 1 foundation — calculator, audit logger, payer rules, license 2026-04-11 19:48:31 -04:00
mempalace.yaml refactor: reorganize repo structure — flatten CGM-Denial-Prevention/ and Projects/ into docs/ pitch/ research/ 2026-05-12 05:10:00 -04:00
railway.toml feat: FastAPI backend + full deployment stack (Railway + Vercel) 2026-05-18 19:01:35 -04:00
README.md Update Signal brand language and add pitch/build artifacts 2026-05-28 10:14:16 -04:00
requirements.txt Add Phase 3: Clerk auth with org-scoped data isolation 2026-05-29 12:12:17 -04:00
TERAX.md Update Signal brand language and add pitch/build artifacts 2026-05-28 10:14:16 -04:00
vercel.json feat: FastAPI backend + full deployment stack (Railway + Vercel) 2026-05-18 19:01:35 -04:00

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.