This page describes how to request a set of mock eligibility / claim-status scenarios for your test account, using your own production transactions as the source. Once captured, these scenarios are PHI-scrubbed and copied into your test account so you can demo eligibility flows in your EMR with realistic-looking data that always returns the same response.
In the production portal:
https://portal.claimrev.com/sharprevenue/(revenueToolsOut:view-visit/<TransactionId>/eligibility)Every row must have at least one match dimension so it doesn't catch every request to its endpoint. The available dimensions are:
If you leave all three Match* columns blank for an Eligibility / Claim Status / Prior Auth row (which DO carry subscriber+payer in the request), the import is rejected because patient auto-stamp doesn't apply to those products. For no-key products (Insurance Discovery / MBI Finder / Demographics / Advanced Medicaid), leaving the Match* columns blank is normal — the patient auto-stamp gives the row its match dimension.
Important — what happens if you put Match* values on a no-key-product row anyway: the import silently strips them before persisting. Insurance Discovery / MBI Finder / Demographics / Advanced Medicaid requests carry no subscriber id or payer number at runtime, so any Match* values you supply for those rows would never match real traffic. Stripping them lets the patient auto-stamp fire instead and gives the row a usable match key. If you actually want subscriber/payer-keyed matching, capture from a transaction that includes Eligibility (alone or alongside the no-key product) — mixed-product captures preserve your Match* values because the Eligibility component still carries subscriber/payer.
A column left blank acts as a wildcard for that field — the scenario fires regardless of what the EMR sends for it.
| Column | Required | Description |
|---|---|---|
| ScenarioName | yes | Short label the scenario will be filed under (e.g. Medicare-Active, BCBS-Inactive, Aetna-Pending). Used as the human-readable name; not shown to the EMR. |
| TransactionUrl | yes | The full view-visit URL copied in Step 1. ClaimRev parses the transaction id out of this server-side. |
| MatchSubscriberId | optional | If set, the scenario only replays when the EMR's Subscriber Id matches this value exactly. Leave blank to match any subscriber id (useful for “any patient on this payer” scenarios — pair with MatchPayerNumber). Stripped at import for no-key product rows. |
| MatchPayerNumber | optional | If set, the scenario only replays when the request's Payer Number matches. Use the Revenue Tools payer id, not the claim payer id — see A Note On Payer Ids below. Leave blank to match any payer (useful for “this specific patient regardless of which insurer the EMR sends” scenarios — pair with MatchSubscriberId). Stripped at import for no-key product rows. |
| MatchSubscriberSuffix | optional | Magic-suffix override. Example: setting this to -PENDING attaches a “pending” variant to the same subscriber id. Leave blank for the normal scenario. Stripped at import for no-key product rows. |
| TargetAccountNumber | optional | Leave blank. ClaimRev fills this in when copying to your test account. |
| Description | optional | One-liner describing what the scenario is for. Shows up in the Mock Library management page; helpful for your future self. |
| Notes | optional | Free text — what you'd like to demo with this scenario. Ignored by tooling, helpful for the ClaimRev rep prepping your account. |
ScenarioName,TransactionUrl,MatchSubscriberId,MatchPayerNumber,MatchSubscriberSuffix,TargetAccountNumber,Description,Notes Medicare-Active,https://portal.claimrev.com/sharprevenue/(revenueToolsOut:view-visit/65f2a1b3c4d5e6f7a8b9c0d1/eligibility),W123456789T,00060,,,Active Medicare with deductible,Standard active Medicare with deductible. BCBS-Active,https://portal.claimrev.com/sharprevenue/(revenueToolsOut:view-visit/65f2a1b3c4d5e6f7a8b9c0d2/eligibility),YPL123456789,00015,,,Active BCBS PPO,Good for showing benefit details. BCBS-Pending,https://portal.claimrev.com/sharprevenue/(revenueToolsOut:view-visit/65f2a1b3c4d5e6f7a8b9c0d3/eligibility),YPL123456789,00015,-PENDING,,Pending verification variant,Same patient still being verified. Aetna-Inactive,https://portal.claimrev.com/sharprevenue/(revenueToolsOut:view-visit/65f2a1b3c4d5e6f7a8b9c0d4/eligibility),W987654321,60054,,,Termed coverage,Coverage termed last month. Aetna-NotFound,https://portal.claimrev.com/sharprevenue/(revenueToolsOut:view-visit/65f2a1b3c4d5e6f7a8b9c0d5/eligibility),NOTREAL999,60054,,,Wrong member id,Shows the no-match flow. GenericMedicare,https://portal.claimrev.com/sharprevenue/(revenueToolsOut:view-visit/65f2a1b3c4d5e6f7a8b9c0d6/eligibility),,00060,,,Any-subscriber Medicare scenario,Wildcard subscriber - fires for any member id sent against Medicare. InsuranceDiscovery-Found,https://portal.claimrev.com/sharprevenue/(revenueToolsOut:view-visit/65f2a1b3c4d5e6f7a8b9c0d7/eligibility),,,,,Insurance discovery returns coverage,Patient identity auto-stamps from the cartoon scrub - no Match* columns needed.
Email the CSV to your ClaimRev contact. Include:
DEMO1). Each EMR's test account gets its own private mock library — your scenarios are not visible to or reachable from any other customer's test account.ClaimRev will reply once the scenarios are loaded. From that point on, eligibility requests against your test account that hit the configured match keys will return the captured (anonymized) responses.
Once scenarios are loaded, you can browse and tweak them yourself in Revenue Tools → Admin → Mock Library. The page is gated by one of two scopes:
practice_admin:sharprevenue-mock-mgmt — for customer admins. You see scenarios filed under your own account, and (read-only) the curated default-library entries that ClaimRev seeds for everyone.admin:sharprevenue-mock-mgmt — for ClaimRev staff. Same view plus the ability to edit and delete default-library entries.Per row you'll see:
RunTestsJSON for eligibility/coverage discovery, with claim-status to follow).Eligibility or Eligibility, Demographics). See Product-Aware Matching below for what subset semantics buy you.Per row you can:
RunSharpRevenue. The response lands in the regular Transaction Search list — useful for confirming the round-trip works end-to-end.The page never shows the canned response payload itself — by design, the management surface only exposes metadata.
When your EMR sends a Sharp Revenue request, the mock looks for a scenario in this order:
-PENDING), the scenario tagged with that suffix wins — regardless of subscriber/payer.Some Sharp Revenue products don't carry a subscriber id or a payer number in the request — they discover something about a patient from the patient's demographics (name + DOB + SSN). These are:
For these products, the mock library can't match on subscriber/payer (the request doesn't have them). Instead, patient identity is auto-stamped at capture from the anonymized (cartoon) source patient: First Name, Last Name, and DOB. So a captured Insurance Discovery scenario fires for requests whose patient identity matches the captured cartoon name + DOB.
The capture flow also silently strips any MatchSubscriberId / MatchPayerNumber / MatchSubscriberSuffix the CSV supplied for these rows — those values would never match a real no-key request, so removing them lets the patient auto-stamp give the scenario a usable match key.
Two consequences worth knowing:
The patient match key is always the anonymized cartoon name + cartoon-shifted DOB. Real patient PHI never lands on the persisted match key.
If you want to capture multiple Insurance Discovery scenarios (e.g. “found insurance” vs “no insurance”), capture from different source transactions — each gets its own cartoon identity, so they discriminate naturally. If you want to override the auto-stamped name (e.g. so it matches a specific test patient your EMR already has set up), edit the scenario in the Mock Library page after capture.
The Sharp Revenue API supports two flavors of payer id (see the API Guide for the underlying flag):
00060 for Medicare). Sent with isRevenueToolsPayerId: true.87726 for UnitedHealthcare). Sent with isRevenueToolsPayerId: false. In production, the API translates this to the corresponding Revenue Tools id internally before contacting the vendor.
The mock pipeline matches on the Revenue Tools payer id only. When ClaimRev captures a scenario, the MatchPayerNumber that gets stamped is the Revenue Tools id, and at runtime MockZollSend looks up scenarios using whatever payer id is on the wire. So:
isRevenueToolsPayerId: true with a Revenue Tools id (e.g. 00060), the mock will find a matching scenario tagged with 00060.isRevenueToolsPayerId: false with a claim payer id (e.g. 87726), the mock will look up 87726 as-is — and won't find your 00060 scenario, even though they're the same payer in production.
For mock-mode demos, configure your EMR client to send Revenue Tools payer ids (set isRevenueToolsPayerId: true). Once you switch back to real-mode for production traffic, claim payer ids work normally — the mismatch is mock-pipeline-specific.
Each captured scenario is auto-tagged with the products that ran in the original transaction. Today the recognized product ids are:
| Id | Product |
|---|---|
| 1 | Eligibility |
| 2 | Demographics |
| 3 | Insurance Discovery |
| 4 | Advanced Medicaid |
| 5 | MBI Finder |
| 6 | Advanced Verifier |
| 7 | Prior Auth Verification |
At lookup time the scenario only fires if the request asks for a superset of those products — so:
You don't need to put anything in the CSV for this — it's stamped automatically from the original transaction. The result is that one production transaction maps cleanly to exactly the request shape it was captured from.
Before any captured transaction is saved, ClaimRev runs it through an anonymization pipeline that:
Raw271 / Raw277 EDI strings and rewrites the same fields in place, so the EDI you see in the captured response is structurally valid but PHI-free.ClientId with the test account it's filed under.The original production record is not modified — anonymization runs on a deep copy.
isRevenueToolsPayerId: false won't fire a scenario tagged with the Revenue Tools id. See A Note On Payer Ids.Medicare-Active, BCBS-Inactive-Termed, and Aetna-Pending-Auth are far easier to discuss than Test1 / Test2.-PENDING and -ERROR lets your EMR demo “this patient came back pending yesterday but errored today.”
Q: Will my real patients' information ever appear in the test account?
No. Every captured scenario is anonymized before it's saved, and your real production data is not modified. The patient match keys auto-stamped onto the persisted MatchKey are the cartoon name + cartoon-shifted DOB only — never real PHI.
Q: Are my scenarios visible to other customers in their test accounts?
No. Each EMR's test account has its own private mock library. The runtime lookup is scoped to your account — other customers can't see your captures, and you can't see theirs. The only shared bucket is ClaimRev's curated default library, which is read-only for customers.
Q: My scenario isn't firing — what should I check?
Most common cause: payer-id mismatch. The mock matches on the Revenue Tools payer id only, so if your EMR is sending isRevenueToolsPayerId: false with a claim payer id (e.g. 87726), the mock looks up that exact value and won't find your scenario tagged with the Revenue Tools id (e.g. 00060). Switch the EMR client to send Revenue Tools ids for mock-mode demos. See A Note On Payer Ids for the full picture. For no-key products (Insurance Discovery / MBI Finder / Demographics / Advanced Medicaid), check that your EMR's demo patient name + DOB matches the cartoon identity stamped on the scenario — the Mock Library page shows what to use. Other things worth checking: the practice's ZollHost is set to the mock sentinel, the request's Subscriber Id matches your scenario's match key (or your scenario's Subscriber Id is intentionally blank to wildcard), and the request's products are a superset of the scenario's tagged products.
Q: I put a SubscriberId on my Insurance Discovery / MBI Finder row but my scenario isn't firing — why?
Insurance Discovery / MBI Finder / Demographics / Advanced Medicaid requests carry no subscriber id at runtime, so any value you supply for those rows can't ever match a real request. The import flow strips the Match* columns for no-key product rows and stamps patient identity instead. Open Revenue Tools → Admin → Mock Library to see the cartoon name + DOB the row is keyed on, and configure your test-EMR demo patient to match those.
Q: Can I have a scenario that fires for any patient on a particular payer?
Yes. Leave MatchSubscriberId blank and set only MatchPayerNumber. The blank field acts as a wildcard so any subscriber id on that payer matches the scenario. If a more specific scenario (both Subscriber Id and Payer Number set) also matches the same request, the specific one wins.
Q: How do I demo multiple Insurance Discovery / MBI Finder scenarios for different patients?
Capture from different source transactions — each one gets its own cartoon patient identity, which becomes the match key. Then configure that many demo patients in your test EMR with names + DOBs that match the cartoons. The Mock Library page shows you exactly which cartoon identity each scenario is keyed on.
Q: Can I update or remove a scenario later?
Yes. Open Revenue Tools → Admin → Mock Library and use the Edit / Delete actions. You can edit the name, description, and match keys (Subscriber Id / Payer / Suffix / Patient name / DOB); the response payload itself is immutable post-capture.
Q: Do I need a special permission to send this CSV?
No, this is just an email handoff. Capture is done by ClaimRev staff against your test account, not by you in the portal. To browse the library yourself afterwards, your account needs the practice_admin:sharprevenue-mock-mgmt scope.
Q: My EMR sends both Eligibility and Demographics in one call — do I need two separate captures?
No. Capture one transaction that ran both products, and it will fire when your EMR asks for both. If you only ever capture Eligibility-only transactions and your EMR asks for Eligibility + Demographics, the Eligibility-only scenario will still fire (it's a subset of the request).
Q: What happens if I don't have a captured scenario but a stock one exists?
The mock falls back to ClaimRev's curated default library before erroring out. So if you want a generic Medicare-Active scenario “for free” without sending a CSV, ask your ClaimRev rep what's already in the default library.
Q: How is this different from the letter-based mock rules in the API Guide?
The letter-based rules (e.g. “first name starts with H returns Active”) are a generic vendor mock useful for synthetic test data. Captured scenarios let you demo with payloads that look like your production data — same payers, same member-id formats, same benefit details — without any real PHI. Use the letter-based rules when you don't have real data yet; use captured scenarios when you want a polished demo for a stakeholder.