WorldVistA meeting session: Before it disappears! A brainstorming session on saving VistA's Legacy

82 views
Skip to first unread message

mikegi...@aol.com

unread,
Feb 4, 2026, 8:19:39 AM (4 days ago) Feb 4
to hard...@googlegroups.com

Recent conversations here have rekindled my angst about the bad rap that VistA is getting. To that point, I asked Nancy to add a session, which I will lead, to discuss VistA’s legacy. But legacy is the wrong word. I want to talk about VistA’s future and brainstorm ideas that could turn into actionable strategies.

 

If you have ideas and opinions on the future of VistA, this is an opportunity to express them to a receptive audience and maybe take some action. Or just vent.

 

I’m planning a simple agenda:

  1. Brainstorming – generate as many ideas as possible
  2. Clustering – look for common themes
  3. Ripening – figure out where we can go from here.

 

Open to suggestions and any particular topics you’d like to cover.

Frank Drescher

unread,
Feb 4, 2026, 3:42:35 PM (3 days ago) Feb 4
to hard...@googlegroups.com
In my little interaction I had with this I thought the biggest obstacle to modernization is not VistA but that dreadful RPC broker and legacy security protocol with cipher text. I wonder if anybody has considered engineering an alternative.

--
--
http://groups.google.com/group/Hardhats
To unsubscribe, send email to Hardhats+u...@googlegroups.com

---
You received this message because you are subscribed to the Google Groups "Hardhats" group.
To unsubscribe from this group and stop receiving emails from it, send an email to hardhats+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/hardhats/!%26!AAAAAAAAAAAuAAAAAAAAAFJzj2ba2QBPqPytJph1JfoBAMO2jhD3dRHOtM0AqgC7tuYAAAAAAA4AABAAAAAYZJJlURBpQYby8EYF91pmAQAAAAA%3D%40aol.com.

Christian Caldwell

unread,
Feb 4, 2026, 6:08:44 PM (3 days ago) Feb 4
to Hardhats
So for the last few days, I've been using the Cursor IDE (on the Pro+ plan), which has AI coding tools built in. Using it, I've built an ASP.NET Core middleware that communicates with the BMX/RPC/CIA Brokers for RPMS (YottaDb Docker Image - plan to work on the IRIS port as well) and an ElectronJS frontend for the RPMS modules. It's a work in progress, but I have a solution in place that makes a TLS tunnel between BMX/rpc/CIA brokers for security. Give me a few days, and I'll share my project. I do have MUMPS references loaded in my plan.md file, so I'm going to eventually get into the underlying RPMS MUMPS code and see what it can do. I'm hoping to have a working prototype of a modernized RPMS system to share with the group by the user meeting. So far, I have a pretty hard middleware working with the bmx ports, and my agent has a good understanding of MUMPS and RPMS. I feed it all the GitHub repositories, this group, the source code, and other resources to help the model better understand things as I walk through the material. It's super cool to see what a little AI can do for these classic apps. I think there might be hope for Vista and RPMs if we can get AI to help modernize a few things; we could be good to go as an open-source project alternative to OpenEMR. Or prove to Congress that this Cerner project is a waste of taxpayers' money, given AI tools like Claude, ChatGPT, and Gemini. 

Screenshot 2026-02-04 152108.png
Screenshot 2026-02-04 151202.png

Christian Caldwell

unread,
Feb 4, 2026, 7:23:53 PM (3 days ago) Feb 4
to Hardhats
Here is my draft road I'm using working with the AI tool to building things out 

RPMS FOIA Modernization — Development Roadmap
CURRENT STATUS

Last Completed: RPMS Backend Modernization plan created; ROADMAP consolidated Next Up: Validate against worldvista/rpms (test-middleware.ps1) Phase: Phase 4 — Module Feature Parity / Phase 5 — Evidence Pack Updated: 2026-02-04

Current Status Summary

Completed:

  • Auth on all controllers, token expiry, logout

  • TLS support in BmxTcpClient (IRIS + stunnel for YottaDB)

  • Toast notifications (ToastContext, showErrorUnless401)

  • Code splitting (lazyNamed), TypeScript types (api/types.ts)

  • Boilerplate (dateUtils, rpms, LoadingCard, useAsyncLoad, useSaveWithToast)

  • FastReport (7 BH reports, 6 scheduling reports)

  • BH feature parity (Visits, Treatment Plans, Suicide Forms, Case Mgmt, Groups, Intake)

  • Scheduling data flow (parse BMX, CreateAppointment, Workload, Waiting list CRUD, Check-in/out/No-show)

  • Gap fixes: C3, H2, H5, M4, M6, H4, H6, M3, M5, M7, L3, L4

  • AMH Evidence Pack (docs/ui/AMH-.md, docs/mappings/AMH-.md)

  • RPMS Backend Modernization plan created and integrated

  • docker-compose.rpms.yml for RPMS + middleware stack

Up Next:

  • Validate against worldvista/rpms; run test-middleware.ps1

  • Run Evidence Pack for BSD, AG, or ABM (plan §1.2)

  • RPMS Backend Phase 1: Docker workflow, baseline regression

Deferred:

  • Redis (until scaling to multiple middleware instances)

  • FreeM/RSM (Phase 4 of RPMS Backend Modernization)


PROGRESS OVERVIEW

Phase

Status

Completion

Phase 1: Evidence & Methodology

Complete

100%

Phase 2: Client Quality (Toast, Types, Code Split)

Complete

100%

Phase 3: Middleware Hardening

Complete

95%

Phase 4: Module Feature Parity

In Progress

70%

Phase 5: Evidence Pack (Per-App)

In Progress

25% (AMH done)

Phase 6: RPMS Backend Modernization

Not Started

0%

Phase 7: Production Readiness

Pending

20%


Architecture Diagramflowchart LR subgraph client [Client Tier] Electron[Electron + React + Fluent UI] end subgraph server [Server Tier] Middleware[ASP.NET Core Middleware] end subgraph rpms [RPMS Tier] BMX[BMX Monitor 9101] DB[(YottaDB / GT.M / IRIS)] end Electron -->|HTTPS REST| Middleware Middleware -->|TCP BMX RPC| BMX BMX --> DB
Module Catalog and Data Flow

Module

Package

Status

RPC Catalog

AMH

Behavioral Health

Implemented

AMHG RPCs in RPMS-Electron-Rebuild-Reference §10.3

AG

Patient Registration

Implemented

AGG RPCs in §9.3

BSD

Scheduling

Implemented

SD REM, BSD RPCs

ABM

Third-Party Billing

Implemented (partial)

ABMD RPCs in ABM-REFERENCE

Evidence Pack outputs:


Key Plan Documents

Plan

Path

Purpose

Unified Plan

../plan.md

Evidence Pack, Code Drop prompts, architecture, conventions

Plan Review

PLAN-REVIEW-AND-RECOMMENDATIONS.md

Implementation state, prioritized recommendations

Gap Analysis

../engage-health/GAP_ANALYSIS_AND_RECOMMENDATIONS.md

Middleware & Electron gaps (C1–C3, H1–H6, M1–M7, L1–L4)

ABM RPC

plans/ABM-RPC-and-Middleware-Recommendations.md

ABM billing alignment

UI Accessibility

plans/UI-Accessibility-and-Lint-Fixes.md

ARIA, no-inline-styles

RPMS Backend

plans/RPMS-Backend-Modernization-Plan.md

Mroutine/global modernization (GT.M/YottaDB/FreeM/RSM)

Reference

RPMS-Electron-Rebuild-Reference.md

Architecture, RPC catalogs, middleware API designs


Technical References

Doc

Path

Purpose

RPMS Database Layer

reference/technical/rpms-database-layer.md

YottaDB/GT.M/IRIS, stack, Backend Modernization link

Dev Environment

reference/technical/development-environment-links.md

Docker, worldvista/rpms, IRIS Rocky

BMX Integration

../engage-health/middleware/BMX-INTEGRATION.md

BMX/CIA, TLS, RPC

Validation Runbook

../engage-health/middleware/VALIDATION-RUNBOOK.md

Smoke test, 401/400 troubleshooting

Reference Inventory

reference/REFERENCE-INVENTORY.md

Module catalog, Evidence Pack/Code Drop paths


USEFUL COMMANDSDocker / RPMS# Start RPMS (worldvista/rpms) docker run -d -p 9100:9100 -p 9101:9101 --name rpms worldvista/rpms # Or use docker-compose (from repo root) docker compose -f engage-health/middleware/docker-compose.rpms.yml up -dMiddleware# Smoke test (middleware + RPMS must be running) .\middleware\test-middleware.ps1 # Verification scripts (per module) .\middleware\scripts\Verify-AggRpcs.ps1 -BaseUrl http://localhost:5001 -AccessCode ADAM.01 -VerifyCode USER.002 .\middleware\scripts\Trace-AMHRpcsForPatient.ps1 -BaseUrl http://localhost:5001 -Dfn 3 -SaveToFolder .\middleware\amh-trace-output .\middleware\scripts\Verify-AbmRpcs.ps1 -BaseUrl http://localhost:5001 -AccessCode ADAM.01 -VerifyCode USER.002Electroncd engage-health npm run dev # Renderer only npm run dev:all # Renderer + middleware

Middleware config: Host=localhost, Port=9101, AccessCode=ADAM.01, VerifyCode=USER.002


SESSION START PROMPT

Copy this to the agent at the start of each session:

Read ROADMAP.md and plan.md in this project. Check the progress markers to see what's completed [x] vs pending [ ]. Tell me: 1. What was last completed 2. What's next 3. Ask if I want to continue When executing prompts: - Run each prompt fully - Test that it works - Update ROADMAP.md after each prompt: - Mark prompt complete: change [ ] to [x] - Update CURRENT STATUS section at top with: Last Completed, Next Up, Updated (today's date) - Continue to next prompt in the phase - Stop at phase boundaries and summarize ERROR HANDLING: - Simple errors (typo, missing import, syntax): fix and continue - STOP and notify me if: - Same error occurs 3+ times after fix attempts - Error requires architectural decision - Error affects multiple files unexpectedly - Tests fail with unclear cause - BMX/RPMS connection fails after retry - Build/compile completely fails - You're unsure of the right approach SERVICES RULES: - Before starting middleware/RPMS, check if already running (don't duplicate) - If port 5001 or 9101 is in use, ask before killing the process - Use docker-compose or worldvista/rpms for RPMS; don't create standalone containers without reason - Wait 5+ seconds between service restarts CRITICAL - SERVICES: - NEVER start middleware/frontend without asking first - ALWAYS check if ports 5001, 9100, 9101 are in use before starting - If RPMS is already running in Docker, USE IT — don't start local duplicates When stopping for error: 1. State: "STOPPING - Complex error encountered" 2. Explain what happened 3. Show the error 4. List 2-3 possible solutions 5. Ask which approach I prefer Do NOT: - Keep retrying the same fix - Make major changes without asking - Skip the prompt and move on - Guess at fixes for unfamiliar RPMS/BMX errors
Development Phases (Detailed)Phase 1: Evidence & Methodology — Done
  • Evidence Pack prompt (plan §1.2)

  • Code Drop prompt (plan §1.3)

  • Per-App workflow (plan §1.4)

Phase 2: Client Quality — Done
  • Toast notifications (ToastContext, showErrorUnless401)

  • Code splitting (lazyNamed)

  • TypeScript types (api/types.ts)

  • Boilerplate (dateUtils, rpms, LoadingCard, useAsyncLoad, useSaveWithToast)

Phase 3: Middleware Hardening — Done
  • Auth on all controllers, token expiry, logout

  • TLS (BmxTcpClient)

  • Async/CancellationToken, report timeout

  • RPC probe health check, rate limit

  • Config validate-before-save

  • ProblemDetails, API versioning (/api/v1/)

Phase 4: Module Feature Parity — In Progress
  • AMH: Visits, Treatment Plans, Suicide Forms, Case Mgmt, Groups, Intake, Reports (FastReport)

  • BSD: Appointments parse, Create appt, Workload, Waiting list CRUD, Check-in/out/No-show, Reports

  • AG: Patient search, demographics (AGG RPCs)

  • ABM: Claims list/detail (ABMD RPCs); Bills, Cashiering stubbed

  • Verify CreateAppointment and Clinic Workload against site RPMS

Phase 5: Evidence Pack (Per-App) — In Progress
  • AMH

  • BSD

  • AG

  • ABM

Phase 6: RPMS Backend Modernization — Not Started

See plans/RPMS-Backend-Modernization-Plan.md.

  • Phase 1: Docker workflow, baseline regression

  • Phase 2: Vendor abstraction, $ZTRAP

  • Phase 3: GT.M/YottaDB optimization

  • Phase 4: FreeM/RSM (optional)

Phase 7: Production Readiness — Pending
  • IRIS smoke test (if available)

  • Stunnel/TLS for production YottaDB

  • Redis (if scaling)

  • E2E tests


Completed Features (Summary)
  • ToastContext, showErrorUnless401

  • Code splitting, lazyNamed

  • api/types.ts, typed client

  • dateUtils, rpms (pickField, pickString, isNewRecord)

  • LoadingCard, useAsyncLoad, useSaveWithToast

  • FastReport (7 BH reports, 6 scheduling reports)

  • BH: CaseManagement, SuicideForm, CommunityActivity, Group, Visit, TreatmentPlan, Intake

  • Scheduling: parse BMX, CreateAppointment, Workload, Waiting list add/remove, Check-in/out/No-show

  • Gap fixes: C3, H1–H6, M1–M7, L3, L4

  • RPMS Backend Modernization plan created and integrated

  • docker-compose.rpms.yml


Deployment Plan

Target: IHS RPMS on YottaDB/GT.M/IRIS; middleware on Windows Server or Linux; Electron desktop app.

Pre-Deployment Checklist:

  • worldvista/rpms + test-middleware.ps1 pass

  • Evidence Pack for BSD, AG, ABM (optional)

  • Stunnel config for production YottaDB (see BMX-INTEGRATION)

  • IRIS Rocky architecture (see IRIS-RPMS-ROCKY-ARCHITECTURE.md)


Source Code Locations

Content

Path

WorldVistA routines

reference/source/worldvista/Routines-WVEHR-3.0-Release-2.16-YottaDB-GTM/r/ (~29.6k .m)

RPMS packages

reference/source/Packages/

IHS GUI source

reference/source/IndianHealthService.*, bprm/

BMX

reference/bmx/bmx_0400src/

EngageHealth

../engage-health/renderer/, ../engage-health/middleware/


Notes
  • BMX shared session: Middleware uses single BMX service account; user login validates for UI only. Audit logging traces UserId/UserName on RPCs.

  • RPMS casing: Use pickField/pickString for varying column names (BMXIEN vs bmxIEN).

  • 401: Do not show toast; ApiAuthHandler redirects to login.

  • BPRM vs BMX: BPRM (Moonwalk) uses BMW/IRIS SQL; EngageHealth uses BMX RPC. RPC names are site-specific.

Nancy Anthracite

unread,
Feb 4, 2026, 9:30:18 PM (3 days ago) Feb 4
to hard...@googlegroups.com, Frank Drescher

The legacy secuity protocal is not what is relied on in production systems.


--

Nancy Anthracite


On Wednesday, February 4, 2026 3:42:15 PM EST Frank Drescher wrote:

> In my little interaction I had with this I thought the biggest obstacle to

> modernization is not VistA but that dreadful RPC broker and legacy security

> protocol with cipher text. I wonder if anybody has considered engineering

> an alternative.

>

> On Wed, Feb 4, 2026, 8:19 AM mikeginsburg via Hardhats <

> hard...@googlegroups.com> wrote:

>

> > Recent conversations here have rekindled my angst about the bad rap that

> > VistA is getting. To that point, I asked Nancy to add a session, which I

> > will lead, to discuss VistA’s legacy. But legacy is the wrong word. I want

> > to talk about VistA’s future and brainstorm ideas that could turn into

> > actionable strategies.

> >

> >

> >

> > If you have ideas and opinions on the future of VistA, this is an

> > opportunity to express them to a receptive audience and maybe take some

> > action. Or just vent.

> >

> >

> >

> > I’m planning a simple agenda:

> >

> >    1. Brainstorming – generate as many ideas as possible

> >    2. Clustering – look for common themes

> >    3. Ripening – figure out where we can go from here.

> >

> >

> >

> > Open to suggestions and any particular topics you’d like to cover.

> >

> > --

> > --

> > http://groups.google.com/group/Hardhats

> > To unsubscribe, send email to Hardhats+u...@googlegroups.com

> >

> > ---

> > You received this message because you are subscribed to the Google Groups

> > "Hardhats" group.

> > To unsubscribe from this group and stop receiving emails from it, send an

> > email to hardhats+u...@googlegroups.com.

> > To view this discussion visit

> > https://groups.google.com/d/msgid/hardhats/!%26!AAAAAAAAAAAuAAAAAAAAAFJzj2ba2QBPqPytJph1JfoBAMO2jhD3dRHOtM0AqgC7tuYAAAAAAA4AABAAAAAYZJJlURBpQYby8EYF91pmAQAAAAA%3D%40aol.com

Kimball Bighorse

unread,
Feb 7, 2026, 12:42:01 PM (14 hours ago) Feb 7
to Hardhats
Dear Christian, mikeginsburg, et. al.,

I am actively working on a frontend prototype, targeting unchanged RPC on RPMS that can easily become an Electron app. Please, let's work together!

We have an active contract with a large Tribe to take over their legacy RPMS from IHS, and we are racing the clock to provide Tribes an off-ramp from Cerner.

warmly,

Kimball

Kimball Bighorse

unread,
Feb 7, 2026, 12:46:45 PM (14 hours ago) Feb 7
to Hardhats
When and where is the session? I haven't participated in a WorldVista meeting in the past yet.

Kimball

Kimball Bighorse

unread,
Feb 7, 2026, 1:42:33 PM (13 hours ago) Feb 7
to Hardhats
never mind, I found the calendar event.

Christian Caldwell

unread,
Feb 7, 2026, 2:59:34 PM (12 hours ago) Feb 7
to Hardhats
Hey Kimbal - This is amazing to hear, and I would love to see how we can team up. Dr. Alvin Marcelo of the University of the Philippines Manila is also working on a project for a  PWA for health workers, ours for health IT admins, built on top of FOIA VIsta (yotta, etc). I think between the three of our projects, we should join forces. I am happy to share my git repo, but it's still a work in progress. I also booked some time on your calendar as well to connect. Thank you for reaching out. 

Christian Caldwell 

Frank Drescher

unread,
Feb 7, 2026, 4:43:45 PM (10 hours ago) Feb 7
to hard...@googlegroups.com
Fascinating. Yeah, I’d drop the legacy tag. Even if you’ve never written a line of MUMPS in your life, AI coding agents have no trouble navigating MUMPS libraries. I wouldn’t be surprised if more users across the globe pick up on VistA; short of coding an entire health record system from scratch. The one legacy problem maybe the current  RPC Broker setup and need for a better backend. I also learned that VistA doesn't scale horizontally which maybe a dealbreaker for some users. With all that said, setting up an MCP server, proper API, and modern alternative to CPRS is not out of reach, even if you don't have great resources. Doesn't MS have some seed grants for such open-source projects?  

Christian Caldwell

unread,
Feb 7, 2026, 4:51:17 PM (10 hours ago) Feb 7
to Hardhats
Totally agree with you, Frank. Before last week, I had never written a line of mumps in my life. I had some understanding from research, but I was able to load a ton of mumps books and resources into my agent, and off I went. In the last week, I've created the middleware and frontend prototype. I'm now working on RPMS and YottaDB to improve their integration.  I agree that the RPC broker needs a worker. Right now, I just need the BMX/RPC broker to talk to the middleware for RPC calls. I was able to encrypt the BMX/RPC brokers with a tunnel to secure connections to my middleware. I'm open to any ideas on how to make this better. 

Frank Drescher

unread,
Feb 7, 2026, 5:30:36 PM (9 hours ago) Feb 7
to hard...@googlegroups.com
I had to look up what BMX is, I had no idea. I wonder who came up with that and why VA didn't adopt it.  I think years ago VA developed MDWS which was written in Java and the the community picked it up to develop OpenMDWS which moved towards EWD. There may be some folks in this thread what were involved in this work. Of course, I am now playing with YottaDB and Python but that's my hobby not an attempt to create ModernVistA. 

Christian Caldwell

unread,
Feb 7, 2026, 5:37:47 PM (9 hours ago) Feb 7
to Hardhats
Ah, okay, yeah, I'm working more with the RPMS app than Vista, since it was more tailored to families. I wonder why I didn't do either, but I did look at the EWD Java work in Docker. I included images and repos in my reference docs for my AI agent, and it helped me build the middleware I have for .NET Core. 

Christian Caldwell

unread,
Feb 7, 2026, 5:39:18 PM (9 hours ago) Feb 7
to Hardhats
I need to spend some time diving more into YottaDB. I come from a SQL Server background, so working with YottaDB and IRIS has been interesting for me. 

Christian Caldwell

unread,
Feb 7, 2026, 7:07:17 PM (8 hours ago) Feb 7
to Hardhats
I meant "I wonder why the VA didn't adopt the BMX broker?" by the way. It seems to have a solid foundation for how it works and interacts with RPMS. It was super easy to import into the middleware I'm building for communication, compared to the RPC broker.  Not sure on the Vista side. 

Alvin Marcelo

unread,
Feb 7, 2026, 11:38:11 PM (3 hours ago) Feb 7
to hard...@googlegroups.com
Hi Christian,  Kimball,

Is there a "public demo server" for RPMS Vista we can use for prototyping? With synthetic data only of course

Alvin







This e-mail, together with any attachments, is intended for the named recipients only and is confidential. It may also be privileged or otherwise protected by law. If you have received it in error, please notify the sender immediately by reply e-mail and delete it and any attachments from your system. You may not copy or disclose its contents to anyone.

Christian Caldwell

unread,
1:10 AM (2 hours ago) 1:10 AM
to Hardhats
I'm using the worldvista/rpms Docker image locally. It's probably the easiest to get started. I would spin up a Rocky Linux server, install Podman, and run the container from there. 
Reply all
Reply to author
Forward
0 new messages