Skip to main content
v2026.11,858 entries · CC-BY 4.0
LAC HealthMedical & Research SuppliesReagents, PPE & instruments — chain-of-custody documented.Fast, traceable sourcing built for regulated research environments, from bench consumables to instrumentation.Shop lac.us CodeCASRAIlac.us

MUMPS (M) Programming Language: Hierarchical Globals, VA VistA and CPRS, Epic Chronicles, and FHIR R4 Interfaces

Technical guide to the MUMPS (M) programming language (ISO/IEC 11756), hierarchical sparse global databases, VA VistA FileMan and CPRS architecture, Epic Chronicles, InterSystems IRIS, and HL7 FHIR R4 modernization.

Written and maintained by CASRAI Editorial Board

Last updated

MUMPS (Massachusetts General Hospital Utility Multi-Programming System)—formally standardized as M under ANSI X11.1 and ISO/IEC 11756:1999—is a procedural programming language with an integrated, high-throughput hierarchical key-value database engine engineered specifically for clinical information systems. Developed in 1966–1967 by Neil Pappalardo, Curt Marble, and Robert Greenes in Octo Barnett’s Laboratory of Computer Science at Massachusetts General Hospital (MGH), MUMPS remains the transactional storage and execution engine underneath a vast share of U.S. and global acute-care electronic health records (EHRs), including the U.S. Department of Veterans Affairs VistA platform, Epic Systems’ Chronicles database, and InterSystems Caché / IRIS for Health.

Why Are MUMPS (M) Hierarchical Databases Used in VistA, Epic Chronicles, and InterSystems?

Unlike conventional application stacks that separate a procedural programming language (such as Java, C#, or Python) from an external relational database management system (RDBMS) queried over network sockets via SQL, MUMPS unifies language execution and persistent disk storage inside a single architecture built around sparse multidimensional hierarchical arrays called globals:

  • Persistent Caret Globals (^GLOBAL) vs. Local Variables: In MUMPS syntax, an unprefixed variable name resides in volatile process memory, whereas any variable prefixed with a caret character (^)—such as ^DPT(DFN,0)—is a persistent disk-backed global tree node shared across concurrent users. Writing SET ^DPT(10045,0)="DOE,JOHN^M^2500101" immediately commits the key-value node to the underlying B-tree blocks on disk without SQL schema migrations or object-relational mapping (ORM) overhead.
  • Natural Fit for Sparse, Longitudinal Patient Records: A clinical patient chart is inherently hierarchical and sparse: out of tens of thousands of possible laboratory tests, genetic variants, surgical procedures, and nursing flowsheet rows, an individual patient has values for only a small fraction, repeated at irregular timestamps over decades. Whereas a traditional relational table requires pre-defined columns, null-value padding, or expensive multi-table JOIN operations across normalized tables, a MUMPS hierarchical tree stores only the nodes that actually exist for that patient, sorted automatically in collating subscript order for sub-millisecond traversal via the $ORDER and $DATA intrinsic functions.
  • Modern Enterprise Implementations: This hierarchical global engine powers Epic Chronicles (where Master Files such as EPT [Patient] store chronological contacts and items in MUMPS globals before nightly ETL into Clarity and Caboodle SQL warehouses), InterSystems Caché and InterSystems IRIS for Health (which expose the same underlying M globals simultaneously as object classes and relational SQL tables), and open-source/POSIX high-availability engines **GT.M** and **YottaDB** ( while MEDITECH evolved its own parallel MUMPS/MIIS-descended MAGIC language before transitioning to MEDITECH Expanse).
Platform / Engine Core MUMPS / Hierarchical Layer Primary Healthcare Footprint
VA VistA / CPRS MUMPS routines + VA FileMan data dictionaries (`^DPT`, `^LR`, `^PSRX`) U.S. Department of Veterans Affairs, Indian Health Service (RPMS), and OpenVistA/WorldVistA hospitals
Epic Systems Chronicles operational DBMS built on MUMPS globals (Master Files / INI) Academic medical centers and integrated health systems (Epic vs. Oracle Health)
InterSystems Caché / IRIS for Health Unified multi-model engine (M globals + ObjectScript + SQL + native FHIR Server) Enterprise EHR hosting, health information exchanges (HIEs), and laboratory information systems
GT.M / YottaDB Compiler-based ISO/IEC 11756 M engine with ACID transactions and replication WorldVistA, FOIA VistA deployments, and high-throughput clinical/financial transaction systems

What Is the VA VistA EHR Architecture and CPRS?

VistA (Veterans Health Information Systems and Technology Architecture)—originally developed by VA clinical informaticists known as the “Underground Railroad” as the Decentralized Hospital Computer Program (DHCP) in the late 1970s and 1980s—is one of the largest integrated clinical information systems ever built. Its architecture is organized into three primary layers:

  1. VA FileMan (Metadata-Driven Database Management System): Created in 1978–1980 by George Timson in standard MUMPS, VA FileMan sits atop raw MUMPS globals to provide a self-documenting data dictionary (stored in the ^DD global), access control, input transform validation, cross-reference indexing, and inter-file relational pointers. Every clinical domain in VistA is assigned a numbered FileMan file—for example, File #2 (PATIENT, stored in ^DPT), File #52 (PRESCRIPTION, stored in ^PSRX), File #63 (LAB DATA, stored in ^LR), File #120.5 (GMRV VITAL MEASUREMENT), and File #8925 (TIU DOCUMENT for clinical progress notes).
  2. RPC Broker (Remote Procedure Call Middleware): When the VA transitioned from character-mode VT-100 terminals to client-server workstations in the late 1990s, engineers built the VistA RPC Broker. Client applications authenticate against VistA Kernel security (File #200 NEW PERSON) and invoke authorized remote procedures cataloged in File #8994 (REMOTE PROCEDURE), which execute MUMPS entry points and return delimited or XML/JSON results over TCP/IP.
  3. CPRS (Computerized Patient Record System): The clinician-facing desktop graphical user interface (GUI) built on the RPC Broker. Organized like a tabbed physical medical chart (Cover Sheet, Problems, Meds, Orders, Notes, Consults, Surgery, D/C Summ, and Labs), CPRS pioneered enterprise Computerized Provider Order Entry (CPOE), real-time barcode medication administration (BCMA) integration, and clinical reminders across the Veterans Health Administration (VHA).

How Does VistA Expose Clinical Data to Modern FHIR and HIE Interfaces?

Because third-party mobile applications, health information exchanges, and clinical research pipelines cannot directly query raw MUMPS caret globals over the internet, VistA and commercial M-based EHRs expose standardized interoperability layers:

  • HL7 FHIR R4 APIs and the VA Lighthouse Platform: Through the VA Lighthouse Health APIs and VistA Data Service (VDS) / Virtual Patient Record (VPR) extractors, hierarchical FileMan entries from ^DPT, ^LR, ^PSRX, and ^TIU are transformed into ONC-certified HL7 FHIR R4 US Core resources (such as Patient, Observation, MedicationRequest, Condition, and DocumentReference) secured via SMART on FHIR OAuth 2.0.
  • VA Corporate Data Warehouse (CDW) for Clinical Research: For nationwide observational studies and the Million Veteran Program (MVP), nightly ETL pipelines extract MUMPS FileMan globals from regional VistA instances into the VA Corporate Data Warehouse (CDW)—a relational Microsoft SQL Server environment mapped to the OMOP Common Data Model inside the VA Informatics and Computing Infrastructure (VINCI).

Frequently Asked Questions

What is the VA VistA EHR architecture and CPRS?

VA VistA (Veterans Health Information Systems and Technology Architecture) is the enterprise electronic health record developed by the U.S. Department of Veterans Affairs on the MUMPS (M) programming language and the VA FileMan database management system. CPRS (Computerized Patient Record System) is VistA’s clinician-facing graphical user interface that communicates with MUMPS backend routines via the VistA RPC Broker.

Why are MUMPS (M) hierarchical databases used in VistA, Epic Chronicles, and InterSystems?

MUMPS (standardized as ISO/IEC 11756) natively embeds persistent, sparse multidimensional B-tree arrays called globals (prefixed with ^) directly into the language syntax. Because longitudinal patient charts are sparse and deeply hierarchical, MUMPS globals retrieve complex patient timelines in sub-millisecond reads without the null-storage overhead or expensive multi-table SQL joins of traditional relational databases.

How does VistA expose clinical data to modern FHIR and HIE interfaces?

VistA exposes clinical data from VA FileMan globals through MUMPS extractor routines (such as the Virtual Patient Record), HL7 v2/C-CDA messaging engines, and the VA Lighthouse HL7 FHIR R4 API gateway, while replicating transactional records nightly into the relational VA Corporate Data Warehouse (CDW) and OMOP Common Data Model for clinical research.

Follow CASRAI

Research-administration guidance, standards updates and independent tool reviews.

Ask CASRAI · free to try

Ask about MUMPS (M) Programming Language: Hierarchical Globals, VA VistA and CPRS, Epic Chronicles, and FHIR R4 Interfaces

Ask your first 2 questions free below. Subscribers get 150 a day for $29 a month.

An AI assistant specialized in research administration. It cites the sources behind every answer, labels web answers and says when it can't answer.

Answers draw on CASRAI's guides and dictionary plus the federal and funder documents we index: Federal Register, Grants.gov, Regulations.gov and UKRI.

Works on this site and inside Claude, Cursor and the AI tools you already use.

Everything CASRAI publishes — this page, the dictionary, the guides and the news — stays free to read, with no account and no card.

Referenced across the research world

University of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logoUniversity of Cambridge logoColumbia University logoCrossref logoUniversity of Edinburgh logoHarvard University logoUniversity of Oxford logoPrinceton University logoStanford School of Medicine logoUniversity College London logoORCID logo
  • University of Cambridge logo
  • Columbia University logo
  • Crossref logo
  • University of Edinburgh logo
  • Harvard University logo
  • University of Oxford logo
  • Princeton University logo
  • Stanford School of Medicine logo
  • University College London logo
  • ORCID logo

View CASRAI adoption →