Claim Guard Simulation Lab
Before we touch the partner clinic, we rehearse the whole pilot here. A stand-in for the clinic's legacy web HIS, with a simulated payer that rejects claims using real NPHIES codes, runs next to our browser extension. The extension reads the claim form, checks it against 14 rules, and sends anonymous events to our console. From the console we move each rule from silent to warn to block and measure precision against real outcomes. We check that nothing identifying leaves the browser. The kill switch stays within reach the whole time.
The three components
Each runs on its own. Hosted for internal testing on siyada.pro (synthetic data only). To run it locally, use sim/run_all.sh.
Clinic HIS
The staff's claim form: a legacy ASP.NET-style page over plain HTTP. It has a Fill demo claim toolbar (clean, random, or one planted defect per rule) and a simulated payer that adjudicates about 2.5 s after submit.
https://sim-his.siyada.proClaim Guard extension
A Chrome MV3 extension. It reads the form through the field map, runs R01–R14 in the page, shows red-pen notes in English and Arabic, and blocks the legacy form.submit() path when a rule is at block. Only anonymous events leave the browser.
Provider console
Our view as the provider. It shows KPIs, precision and recommendations per rule, and the tier controls that are pushed live to every extension. It also has the kill switch, a live event feed, and the privacy audit of exactly what was received.
https://claimguard.siyada.proInstall the extension (Chrome)
- Open
chrome://extensions(paste it in the address bar). - Turn on Developer mode (top-right toggle).
- Click Load unpacked and select the folder below. Or download the .zip, unzip it, and select the unzipped folder.
- Pin Claim Guard, open its popup, and pick this workstation's role (front desk, nurse, physician, coder or billing).
- Open the claim form. A form recognised event shows up in the console's live feed.
claimguard-extension (the folder inside the downloaded .zip)Good to know
- The extension refreshes its config from the console on every HIS page load and at least every 30 s. After changing a tier, reload the claim form to see it at once.
- Events are queued in the extension's service worker and flushed in batches every few seconds, so the feed lags a moment.
- Everything is synthetic. The HIS demo-fill generates fake patients, and the console never receives them anyway.
- Use Reset events in the console between runs. Your rule tiers are kept.
Edge in IE mode does not run extensions. The real clinic rollout uses a managed-policy force-install in Chrome or Edge (Chromium).
Guided walkthrough: the pilot in five steps
This follows the real clinic plan: listen first, then advise, then stop only what is certain. The buttons change the live config directly.
Silent phase 1 · weeks 1–4
- Set every rule to silent.
- In the HIS, click Fill demo claim → Random (or a specific defect) and Submit claim. Repeat 10–20 times.
- Watch the console's Live feed:
check, thensubmit, then the payeroutcomea few seconds later.
- Staff see nothing: no notes, no dialog.
- Rules still fire and are logged as open at submit.
- Rejections start labeling each rule's precision.
Warn phase 2
- Switch rules to warn (the button below sets all 14).
- Reload the claim form. Fill a claim with defects and edit fields.
- Red-pen notes appear next to the right fields, in English and Arabic, while you type. Fix one and submit.
- Nothing is ever blocked.
- Fixed rules show up as fixed on the submit event.
- “Estimated SAR protected” starts to grow.
Block phase 3 · certain rules only
- Set R03 (prior authorization missing) to block.
- Reload the form and fill the R03 scenario (MRI knee with no pre-auth reference). Click Submit claim.
- A blocking dialog appears. Fix jumps to the pre-auth field. Submit anyway requires a reason.
- The dialog also catches the legacy
__doPostBack→form.submit()path. - An override logs an
overrideevent with its reason. - R08, R12 and R14 can never be set to block (
max_tieris warn).
Kill switch safety
- Turn the kill switch on.
- Reload the claim form and submit a defective claim. Nothing appears and nothing blocks.
- Turn it off again. Behaviour returns on the next config refresh.
- The extension becomes fully passive, sending only a heartbeat.
- The console shows a red banner while the switch is on.
Read precision & recommendations decide
- Run a larger batch. The end-to-end runner in
sim/runnercan submit dozens of claims. - Open Rules. Each rule needs n ≥ 5 labeled claims before it is judged. It needs ≥ 90% precision with n ≥ 8 to earn block, and ≥ 60% to earn warn.
- Click a recommendation to apply it. Check Privacy: it should read 0 violations.
- Certain rules (R03, R04, R10, R11) head toward block.
- R08 (unspecified ICD, a 30% denial rate) gets flagged to demote.
- Recall stays below 100%: some payer rejections (noise codes) are invisible to any rule.
Validation experiment: latest run
The runner drives the real HIS and the real extension in Chrome through simulated claims, with a simple model of how staff react, in three phases. Payer outcomes come from the simulated adjudicator. Re-run it with node runner/run.mjs.
Loading…
Architecture
What runs where, and the only two things that cross the clinic boundary.