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 cf171a3f87 add Phase 1 security hardening, mapping confidence, audit logging, pilot docs
- lock CORS to Vercel domain via ALLOWED_ORIGINS env var (removes allow_origins=*)
- add X-API-Key header auth on /api/upload and /api/export
- normalizer: add mapping confidence (high/inferred), new aliases for Acct #,
  Member ID, External Patient Ref, DME Description, dispensedate; 63/63 CSV files pass
- coverage_calculator: add RULE_VERSION = "v0.1", rule_version on every CoverageResult
- main.py: audit logging wired on upload + export, rule_version + mapping_summary in response
- generate_samples.py: 25 CSV files now use 25 different real-world header formats
- add generate_10k.py for 10,000-patient synthetic dataset
- add tests/smoke_test.py (passes against local backend)
- add docs/pilot-guide-v1.md for Robert Robinson pilot onboarding
- add docs/daniel-pilot-readiness-whitepaper.md and .pdf

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 05:41:25 -04:00
.claude Update Signal brand language and add pitch/build artifacts 2026-05-28 10:14:16 -04:00
docs add Phase 1 security hardening, mapping confidence, audit logging, pilot docs 2026-05-29 05:41:25 -04:00
pitch Update Signal brand language and add pitch/build artifacts 2026-05-28 10:14:16 -04:00
python-backend add Phase 1 security hardening, mapping confidence, audit logging, pilot docs 2026-05-29 05:41:25 -04:00
research feat: add reason strings per patient, fix export headers, add signal-ui source 2026-05-26 09:45:02 -04:00
signal-ui add Phase 1 security hardening, mapping confidence, audit logging, pilot docs 2026-05-29 05:41:25 -04:00
test-data add Phase 1 security hardening, mapping confidence, audit logging, pilot docs 2026-05-29 05:41:25 -04:00
tests add Phase 1 security hardening, mapping confidence, audit logging, pilot docs 2026-05-29 05:41:25 -04:00
.gitignore Update Signal brand language and add pitch/build artifacts 2026-05-28 10:14:16 -04:00
CLAUDE.md add Phase 1 security hardening, mapping confidence, audit logging, pilot docs 2026-05-29 05:41:25 -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 feat: FastAPI backend + full deployment stack (Railway + Vercel) 2026-05-18 19:01:35 -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.