Medicare stack guide
Medicare automation is not one system. It is three.
Most pages on this topic describe Medicare automation in business terms: faster prior auth, fewer denied claims, cleaner remits. They stop before naming the systems involved, which is the part that decides whether a project ships in three months or stalls for two years. The systems are a TN3270 mainframe at CMS (FISS Direct Data Entry), seven heterogeneous Medicare Administrative Contractor portals, and a SOAP eligibility endpoint (HETS 270/271). Three surfaces, three integration shapes, one workflow. The piece below walks each surface, names the screens, and shows the primitive set that drives them.
Direct answer (verified 2026-05-06)
Medicare automation is unattended software that does work a human registrar, biller, or AR analyst would otherwise type by hand into the three systems Medicare workflows actually run on: the seven Medicare Administrative Contractor web portals (Noridian, Palmetto GBA, NGS, CGS, Novitas, WPS, First Coast), the FISS Direct Data Entry green-screen TN3270 mainframe (Part A claim entry, correction, inquiry), and the HIPAA Eligibility Transaction System (HETS 270/271), CMS's SOAP-and-X12 real-time eligibility endpoint. Authoritative source for the eligibility piece is the HETS page at cms.gov. Authoritative source for FISS DDE access is each MAC's DDE user manual (CGS, Palmetto, Noridian publish theirs publicly).
The three integration surfaces
The reason a single Medicare-automation project usually ends up in three sub-projects is that the three surfaces want three different integration approaches, and the team that picks one calls the rest “manual”. The shape that actually works is one runtime that addresses all three with the same selector vocabulary, plus an honest split of which workflow lives on which surface.
- 1
MAC portal layer
Seven web portals, each with its own field names and session model. Portal-driven eligibility, claim status, MBI lookup, appeals. The accessibility tree of the rendered page is the integration surface.
- 2
FISS DDE layer
TN3270 green-screen on the FISS mainframe. Part A claim entry, correction, status inquiry. Driven through IBM PCOMM, Reflection, BlueZone, or zScope. The 80x24 character grid is the integration surface.
- 3
HETS 270/271 layer
CMS's SOAP-or-TCP/IP X12 eligibility service. Real-time beneficiary lookups for trading partners enrolled with CEDI. Structured response, no UI to drive — but a workflow that uses HETS still has to cross-write the response into the EHR.
Stack one: the seven MAC portals
A Medicare provider in the United States touches at least one MAC portal and often two (Part A and Part B sometimes split across jurisdictions, plus a separate DME or HHH MAC). The portals are functionally similar (eligibility, claim status, claim correction where DDE is not used, appeals, MBI lookup, PECOS revalidation tasks) and texturally different. Field labels vary. Session timeouts vary. The Coverage tab on Noridian is not the Coverage tab on Palmetto. None of that matters to a workflow that resolves fields by accessibility role and visible name; all of it matters to a workflow that resolves them by CSS selector or pixel position.
Noridian
JE and JF Part A and Part B. Portal at noridianmedicareportal.com. Also runs the JE/JF DDE access to the FISS mainframe.
Palmetto GBA
JJ and JM Part A and Part B, plus Railroad Specialty MAC. eServices portal. Publishes one of the most widely cited DDE user guides.
NGS
National Government Services. Jurisdictions 6 and K. NGSConnex portal. Runs the FISS DDE entry point for those jurisdictions.
CGS
J15 Part A and Part B, plus the Home Health and Hospice MAC and DME MAC B and C. myCGS portal. Publishes the FISS DDE manual most ops teams print.
Novitas
JH and JL Part A and Part B. Novitasphere portal. Same Cahaba lineage as Palmetto on the back end, different portal vocabulary on the front.
WPS
J5 and J8 Part A and Part B. WPS GHA portal. Quirks include session timeouts that fire mid-form unless the workflow keeps the page heartbeating.
First Coast
First Coast Service Options. JN Part A and Part B. SPOT portal. Distinct enrollment flow and a separate DDE access path operators routinely confuse.
Each of the seven portals also publishes a DDE access manual, because each MAC also runs the FISS Direct Data Entry path for the providers in its jurisdiction. That is the second stack.
“The FISS DDE map is an 80-character, 24-line grid. The same get_window_tree primitive that reads a portal form reads this grid. One selector vocabulary across the entire Medicare stack.”
apps/desktop/src/lib/ask-mode-tools.ts (ASK_MODE_ALLOWED_TOOLS)
Stack two: FISS DDE on the mainframe
FISS DDE is the part most automation pages quietly omit. Direct Data Entry is real-time interactive access to the Fiscal Intermediary Standard System, the FISS mainframe that processes Part A Medicare claims. Providers reach it through a TN3270 terminal emulator. CGS, Palmetto, and Noridian all publish DDE user guides; the universally cited rendering convention is the 80-character by 24-line green-screen map (MAP1711 for claim entry, MAP1741 for claim correction, ELGA and ELGH for eligibility inquiry, HIQA for status). Functions include claim entry, claim correction, claim adjustments, claim status, and inquiries.
Windows TN3270 emulators (IBM Personal Communications, Micro Focus Reflection, BlueZone, zScope, Attachmate) render their sessions as UI Automation surfaces. The grid is exposed as text nodes. The cursor position is exposed as a focused element. The Enter, function (F1 through F24), Tab, and PA1/PA2/PA3 keys are exposed as accessible actions. That is enough for the same selector vocabulary used on the portal layer to address the mainframe layer.
The validate_element negation in the second-to-last line is the part to read carefully. DDE renders error responses as four-digit codes inline on the same map; a workflow that does not read the error band before advancing is the one that posts a corrected claim on top of an unresolved RTP. Treating the read as a separate primitive (with on_error: stop) makes that distinction enforceable.
Stack three: HETS 270/271
HETS is the structured corner of the stack. CMS publishes the HIPAA Eligibility Transaction System as an X12 270/271 service supporting ASC X12 005010X279A1 over either TCP/IP for trading partners with extranet access or SOAP and HTTP/MIME over the public internet. The 270 request asks whether a beneficiary is eligible for a specific service on a specific date; the 271 response returns coverage windows, deductible status, MA enrollment, hospice and home-health status, MSP, and several detail loops. It does beneficiary eligibility well. It does not do claim status, claim entry, prior auth, or any plan-level Medicare Advantage workflow.
A Medicare-automation runtime that uses HETS still has to handle the cross-write side: the 271 response has to land in the EHR coverage field with the right facility, plan, and effective dates, and the EHR is almost always a desktop or browser-rendered chart (Epic Hyperspace, Cerner PowerChart, eCW, athena) reached through the same accessibility-tree path that the portal and DDE flows use. Which is why the runtime in question is the same runtime in all three sections.
One runtime, three Medicare surfaces
Why the read primitives are the load-bearing part
The split between read tools and action tools matters more on Medicare workflows than on most. A claim correction that retries on a parsing failure is what posts a duplicate. An eligibility check that retries on a denied response is what compounds an access denial into an audit trail. The list of read-only primitives in apps/desktop/src/lib/ask-mode-tools.ts is what enforces the boundary at the runtime level rather than at the prompt level. The constant is named ASK_MODE_ALLOWED_TOOLS and contains nine entries: get_window_tree, get_applications_and_windows_list, validate_element, wait_for_element, capture_screenshot, highlight_element, hide_inspect_overlay, delay, and activate_element. None of them can write into the chart, the portal, or the DDE map. That is the part of the architecture an audit can prove without re-running the workflow against a live patient.
The wait_for_element primitive accepts four conditions: visible, enabled, focused, exists. The four are not interchangeable. A MAC-portal Coverage tab is often visible long before it is enabled, because the coverage data layer loads asynchronously; a workflow that picks visible when it should have picked enabled types into a tab that does not yet accept input. A FISS DDE map is exists long before it is visible, because the emulator can render the chrome before the host sends the actual map; a workflow that picks exists when it should have picked visible presses Enter on an empty grid. Treating these as a vocabulary, not a single timeout, is what makes the difference between an automation that holds and one that intermittently fails the quarter the back-end vendor changes a load order.
What the existing playbooks miss
Most articles that turn up on this topic describe Medicare automation in business outcomes: cleaner remits, faster prior auth, payment posting hands-free, claims handled without human intervention. None of those outcomes are wrong; all of them are downstream of the question of which surface the workflow runs on. The buyer's RPA team does not lose three months on “automating Medicare prior auth” in the abstract. They lose three months on writing brittle pixel matchers for the Noridian portal's 2018 layout, finding out the regional MA plans have their own portals each, discovering FISS DDE the first time a Part A claim hits an RTP and the only path forward is the green-screen, and then realizing the eligibility code they wrote against HETS does not cover any of the MA enrollees. The article that actually serves them names the surfaces, splits the work by surface, and shows that the one decision that collapses the three sub-projects back into one project is the choice of a runtime whose selector vocabulary works across all three.
Walk one of your Medicare workflows on the runtime
Bring a real screen flow (a Noridian eligibility check, a FISS DDE claim correction, a HETS-to-EHR cross-write). We will record it once on a call and walk through the primitives that drive each surface.
Frequently asked
Frequently asked questions
What is Medicare automation, in one paragraph?
Unattended software that does work a human registrar, biller, or AR analyst would otherwise type by hand into the systems Medicare workflows actually live on. Those systems are the seven Medicare Administrative Contractor (MAC) web portals (Noridian, Palmetto GBA, NGS, CGS, Novitas, WPS, First Coast), the Fiscal Intermediary Standard System Direct Data Entry application (FISS DDE) on the CMS mainframe, accessed through TN3270 terminal emulators by Part A providers, and the HIPAA Eligibility Transaction System (HETS 270/271), a SOAP-and-X12 endpoint for real-time eligibility. The thing that makes it hard is that those three surfaces want three different integration approaches, and most teams pick one and call the rest 'manual'.
Why does Medicare automation need a desktop runtime instead of just an API client?
Because two of the three surfaces are not APIs. FISS DDE is a 3270 mainframe map. The seven MAC portals are old web applications that the long tail of plan-, jurisdiction-, and claim-type-specific functions still gates behind the human UI rather than a structured endpoint. HETS, the surface that does have a structured endpoint, requires CEDI trading-partner enrollment and only covers Original Medicare beneficiary eligibility — it does not cover Medicare Advantage plan-level checks, claim status, MBI lookup, or claim entry. Any honest Medicare-automation stack has to drive the UI for the workflows the structured endpoint cannot answer.
How does the runtime drive a TN3270 green-screen the same way it drives a portal page?
Windows TN3270 emulators (IBM Personal Communications, Micro Focus Reflection, BlueZone, zScope, Attachmate) render their session window as a UI Automation surface. The 80x24 character grid is exposed as text. The cursor position is exposed as a focused element. The Enter, F1 through F12, and PA1/PA2/PA3 keys are exposed as actions. Mediar's get_window_tree primitive, defined alongside the rest of the read-only ASK_MODE_ALLOWED_TOOLS list in apps/desktop/src/lib/ask-mode-tools.ts, returns a tree of those nodes, and the same role-and-name selector vocabulary that addresses a portal field (role:Edit && name:Member ID) addresses a 3270 field (role:Edit && name:HIC). The grid and the form look different on screen, but the integration surface is the same accessibility tree.
Which Medicare workflows belong on HETS, which belong on the portal, and which belong on FISS DDE?
HETS owns Original Medicare real-time beneficiary eligibility — coverage start and end dates, deductible status, Medicare Advantage enrollment indicator, hospice and home-health election status, MSP type, MBI verification by SSN-based lookup, and home-health agency and hospice provider names. Portal owns claim status (the long-form one with reason codes), appeal submission and tracking, MBI-by-name lookup for a beneficiary you do not have an SSN for, prior authorization for the items it applies to (DMEPOS competitive-bid items, certain hospital outpatient services, repetitive scheduled non-emergent ambulance), and PECOS revalidation tasks. FISS DDE owns Part A claim entry (especially institutional claims that fail your billing system's edits and have to be cleared by hand on map MAP1711), claim correction (MAP1741), suspended-claim resolution (RTP, T B9997 status code), and the inquiries Part A schedulers actually use (HIQA, ELGA, ELGH). The right shape is one workflow that calls all three.
What primitives does Mediar publish for the read half of those workflows?
Nine, defined as ASK_MODE_ALLOWED_TOOLS in apps/desktop/src/lib/ask-mode-tools.ts: get_window_tree (full UI tree), get_applications_and_windows_list, validate_element (does this selector resolve, and optionally does its text match), wait_for_element (block until visible, enabled, focused, or exists), capture_screenshot, highlight_element (visual debug), hide_inspect_overlay, delay (explicit sleep), and activate_element (focus a window without modifying state). The split between read-only and action tools is enforced as a list constant, not a runtime flag, which is the part that makes Ask-mode auditable: a workflow that runs only ASK_MODE_ALLOWED_TOOLS literally cannot have written into the chart, the portal, or the DDE map, regardless of what its prompt says.
How does Mediar handle MBI changes and the MBI-format checks CMS publishes?
The MBI is an 11-character alphanumeric identifier with a structural rule (positions 1, 4, 7, 10, and 11 are digits; positions 2, 3, 5, 6, 8, and 9 are letters; certain letters are excluded to avoid confusion). Validate_element accepts a literal-match check, so the workflow validates MBI format before submitting it into FISS or a MAC portal, fails closed when the format is wrong, and surfaces the bad source record back to the EHR coverage team rather than burning a portal lookup on it. When CMS reissues an MBI (the change-of-MBI flow), the workflow has to read the new identifier off the response page and update the EHR — that is two reads (HETS or portal response, EHR coverage record) and one write (the new MBI back into the EHR), each as a separate primitive step.
Where does this approach refuse to be the answer?
Three places. First, anything Medicare Advantage plan-level (utilization management, prior auth on Humana MA, UHC MA, Aetna MA, BCBS MA) that the plan exposes through its own portal. Mediar can drive those portals, but the plan logic, prior-auth criteria, and clinical decision support that decide whether the request gets approved are not Mediar's surface. Second, payer portals served entirely from inside an iframe with no accessibility tree. Rare on MAC portals, more common on a few legacy MA plan portals. Third, anywhere a 270/271 round-trip through a clearinghouse is already cleanly served — the per-check cost of driving HETS through a UI-driving runtime is real, and the right answer is to route the structured part to HETS or a clearinghouse and reserve the runtime for the long tail of work the structured endpoint does not cover.
Is this auditable for HIPAA and SOC 2?
Mediar runs SOC 2 Type II and HIPAA-covered. The runtime can deploy on-prem so PHI never leaves the provider's network. Every primitive call is logged with the selector, the resolved element, and the result; the read-only tool list is a separate constant from the action tool list, so an audit can prove an inquiry workflow never typed; get_window_tree captures whole map and whole page snapshots into the audit log, which is how a chart write that reads back wrong gets traced to the right keystroke without re-running the workflow against a live patient.
What does this cost compared with the existing Medicare-automation playbooks?
Mediar is $0.75 per minute of runtime, drawn against a $10,000 turn-key program fee that converts to credits. A single eligibility pass through a MAC portal is on the order of 40 to 90 seconds of compute depending on portal latency, so the per-check meter is a few tens of cents. A FISS DDE claim correction is closer to two to four minutes. The number to anchor against is not 'cents per check' on its own — those compete on price-per-check with HETS and clearinghouse 270/271 round-trips. The number is the registrar or AR-analyst hour the runtime replaces on the long-tail surfaces (claim correction, portal-only eligibility for a regional MA plan, MBI-by-name lookup) where the structured endpoint cannot help. Most existing Medicare-automation buyers have already paid for HETS access. The Mediar layer is what extends that automation past the structured endpoint.
Is the runtime open source?
The Terminator runtime — the selector vocabulary, the wait-condition primitives, the accessibility-tree readers — is published as an SDK at github.com/mediar-ai/terminator with TypeScript bindings on a Rust core. The closed-source layer is the no-code workflow recorder, the cloud executor, and the workflow-synthesis pipeline that turns a recording into a typed workflow file. The split matters specifically for healthcare buyers: the layer that actually touches PHI is the runtime, and the runtime is what an audit can read end-to-end before any of the closed components see a real beneficiary identifier.
Keep reading
Patient verification automation, framed as a read-back loop
The companion piece on the eligibility half of the same workflow. Walks through the four wait_for_element conditions and why a verification flow stops on a denied result instead of retrying.
AI agents replacing UiPath RPA: where the boundary line actually sits
The architecture argument behind the same runtime. Explains why the model lives at authoring time, not runtime, and how that decision changes the audit story for healthcare workloads.
Enterprise AI agent governance for legacy desktop systems
The audit-trail half of the same architecture. Walks how the read-only primitive list, the per-step log, and the workflow file in git compose into a control plane an internal-audit team can read.