MUMPS, sigla para Massachusetts General Hospital Utility Multi-Programming System (Sistema de multiprogramação do Hospital Geral de Massachusetts) é uma linguagem de programação procedural e normalmente interpretada criada no final da década de 1960, originalmente para uso na área da saúde. Ela foi projetada para a produção de aplicações multiusuário com orientação ao banco de dados. Foi criada antes da linguagem C e antes da maior parte das linguagens populares que estão em uso hoje, além de ter uma sintaxe bastante incomum. Sua característica mais singular e diferenciadora é o "built-in" de banco de dados, permitindo acesso de alto nível de armazenamento em disco utilizando variáveis simples e simbólicas ​​do programa, semelhantes às variáveis ​​utilizadas pela maioria das linguagens para acessar a memória principal.

Ela foi amplamente adotada na década de 1970 e no início da década de 1980 nos bancos de dados/sistemas clínico e financeiro, continuando a ser usada por muitos dos mesmos clientes hoje. Atualmente é usada em sistemas de registos de saúde eletrônicos, assim como por várias redes bancárias e comércio online/serviços de investimento.

A linguagem oferece uma ampla gama de recursos a baixo custo, incluindo funções típicas de SGBDs. Muitos de seus recursos (como matrizes esparsas e o único tipo de dado ser strings) vem de sua criação original para tratar de dados clínicos.

MUMPS deu origem ao banco de dados Caché.

História

MUMPS foi desenvolvido por Neil Pappalardo e alguns colegas no laboratório de animais de Dr. Octo Barnett, em Boston, no Massachusetts General Hospital (MGH) em 1966 e 1967. Originalmente, o sistema MUMPS foi, como o Unix seria alguns anos depois, construído em um DEC PDP-7 de reposição.

Octo Barnett e Neil Pappalardo também estavam envolvidos com o planejamento do MGH para um Hospital Information System (Sistema de Informações Hospitalares), em que obtiveram um PDP-9 compatível e começaram a utilizar o MUMPS no ciclo de admissões e em relatórios de exames de laboratório. MUMPS era então uma linguagem interpretada mas, mesmo assim, incorporou um sistema de arquivos de banco de dados hierárquico para padronizar a interação com os dados. Alguns aspectos de MUMPS podem ser traçados a partir de JOSS Rand Corporation, através de Telcomp BBN e STRINGCOMP. A equipe MUMPS deliberadamente optou por incluir a portabilidade entre máquinas como um objetivo do projeto. Outro aspecto, pouco suportado para as máquinas da época, em sistemas operacionais ou em equipamentos de informática, foi o multitasking (multitarefa), que também foi construído na própria linguagem.

A portabilidade logo foi útil, uma vez que o MUMPS foi logo adaptado para um DEC PDP-15, onde viveu durante algum tempo. MUMPS foi desenvolvido com o apoio de uma bolsa de pesquisa do governo e, assim, MUMPS foi liberado para o domínio público (não sendo mais um requisito para bolsas), sendo rapidamente portado para uma série de outros sistemas, incluindo o popular DEC PDP-8, o Data General Nova, o DEC PDP-11 e o Artronix PC12 minicomputer. O MUMPS encontrava-se espalhado principalmente na comunidade médica, em que, no início da década de 1970, estava difundido, sendo muitas vezes modificado localmente para suas próprias necessidades.

No início dos anos 1970, havia muitas implementações variadas de MUMPS em uma variedade de plataformas de hardware. O mais comum era DEC's MUMPS-11 sobre o PDP-11, e MIIS da MEDITECH. Em 1972, muitos usuários MUMPS participaram de uma conferência que padronizou a então fraturada linguagem, criando, para isso, o MUMPS Users Group (Grupo de usuários MUMPS) e MUMPS Development Committee (MDC) (Comissão de Desenvolvimento MUMPS). Estes esforços foram bem sucedidos, sendo que um padrão foi criado em 1974 e aprovado em 1977, assim como o padrão ANSI, X11.1-1977. Por volta da mesma época, DEC lançou DSM-11 (Digital Standard MUMPS) para o PDP-11. Isso dominou rapidamente o mercado e tornou-se uma referência de implementação.

Durante o início dos anos 1980, vários fornecedores trouxeram plataformas baseadas em MUMPS que atendiam o padrão ANSI para o mercado. Os mais significativos foram Digital Equipment Corporation com DSM (Digital Standard MUMPS), InterSystems Com ISM (InterSystems M) no VMS e UNIX, e M/11+ na plataforma PDP-11. Outras empresas fizeram implementações importantes para o MUMPS: Greystone Technology Corporation com uma versão compilada chamada GT.M; Datatree Inc. com um produto de PC baseado em Intel chamado DTM; Micronetics Design Corporation com uma linha de produtos chamada MSM para plataformas UNIX e PC Intel (mais tarde portado para o sistema operacional VM da IBM, para as plataformas VAX/VMS e para Alpha-VMS) Comp Consultants (Mais tarde, renomeada MGlobal), uma empresa com sede em Houston em que foi originalmente criado o CCSM em 6800, depois 6809 processadores e, eventualmente, uma porta para o 68000, que mais tarde tornou-se MacMUMPS, um produto baseado em Mac OS. O MUMPS MGlobal foi o primeiro MUMPS comercial para o IBM PC e a única implementação para o Mac. DSM-11 foi substituído pelo VAX/DSM para a plataforma VAX/VMS, sendo portado para o Alpha em duas variantes: DSM para OpenVMS e DSM para Ultrix.

Neste período também houve uma considerável atividade MDC. A segunda revisão do padrão ANSI para MUMPS (X11.1-1984) foi aprovada em 15 de novembro de 1984. Em 11 de novembro de 1990, o terceira revisão do padrão ANSI (X11.1-1990) foi aprovada e em 1992, o mesmo padrão também foi adotado como padrão ISO 11756-1992. O uso de M como um nome alternativo para a linguagem foi aprovado na mesma época, devido a associação de MUMPS com a parotidite infecciosa, doença popularmente denominada caxumba, sendo a tecnologia MUMPS nomeada Tecnologia M. Em 8 de dezembro de 1995, a quarta revisão da norma (X11.1-1995) foi aprovada pela ANSI e pela ISO em 1999 como ISO 11756-1999. O MDC finalizou uma nova revisão da norma em 1998, mas isso não foi apresentado ao ANSI para aprovação. Em 6 de janeiro de 2005 e depois novamente em 25 de junho de 2010, a ISO reafirmou seus padrões MUMPS relacionados: ISO/IEC 11756:1999, language standard, ISO/IEC 15851:1999, Open MUMPS Interconnect and ISO/IEC 15852:1999, MUMPS Windowing Application Programmers Interface.

Em 2000, o InterSystems, fornecedor de middleware, tornou-se a empresa dominante no mercado MUMPS com a compra de vários outros fornecedores. Inicialmente, eles adquiriram o DataTree Inc. no início da década de 1990. Em 30 de dezembro de 1995, a InterSystems adquiriu a linha de produtos da DSM da DEC. A InterSystems consolidou esses produtos em uma única linha de produtos, marcando-os em diversas plataformas de hardware, como OpenM. Em 1997, a InterSystems se consolidou como empresa dominante no mercado ao lançar um sucessor unificado chamado Caché. Isto foi baseado em seu produto ISM, porém com influências de outras implementações. Assim, a InterSystems permanece até hoje como o fornecedor MUMPS dominante, vendendo o Caché para desenvolvedores MUMPS que implementam aplicativos para uma variedade de sistemas operacionais.

Também em 2000, Ray Newman e outros mais lançaram o MUMPS V1, uma implementação de MUMPS (inicialmente no FreeBSD) semelhante ao DSM-11. O MUMPS V1 já havia sido portado para o Linux, OS X e Windows (através do Cygwin) desde então. Feito inicialmente para uma CPU x86, o MUMPS V1 agora já foi portado até para o Raspberry Pi.

A mais recente implementação de MUMPS foi lançada em abril de 2002. Trata-se de um derivado do MSM, chamado M21, da Real Software Company of Rugby, UK.

Existem também várias implementações open source (código aberto) de MUMPS, incluindo alguns projetos de pesquisa. A mais notável delas é a MUMPS/II do Professor Kevin O'Kane (agora na Universidade de Iowa), o qual também portou o projeto para o Mac OS X.

Um dos criadores originais da linguagem MUMPS, Neil Pappalardo, logo fundaram uma empresa chamada MEDITECH. A linguagem foi estendida melhorada, nomeando uma nova linguagem MIIS (e logo mais, uma outra chamada MAGIC). Ao contrário da InterSystems, MEDITECH não vende middleware, sendo que essas duas linguagens são apenas usadas internamente na MEDITECH.

Usuários Atuais de aplicações de MUMPS

O U.S. Department of Veterans Affairs (Departamento de Assuntos de Veteranos dos EUA e antes chamado de Administração de Veteranos) foi um dos principais entre os primeiros que adotaram a linguagem MUMPS. Seu trabalho de desenvolvimento (e contribuições subsequentes para a livre aplicação de código base MUMPS) foi uma influência em muitos usuários médicos em todo o mundo. Em 1995, o sistema de admissão/rastreamento/descarregamento do paciente do Veterans Affairs, o Decentralized Hospital Computer Program (DHCP) foi o vencedor do prêmio Computerworld Smithsonian pelo melhor uso da Tecnologia da Informação na medicina. Em julho de 2006, o Department of Veterans Affairs foi o ganhador do Prêmio de Inovações em Governo Americano apresentado pelo Ash Institute da John F. Kennedy School of Government da Universidade de Harvard por sua extensão de DHCP para os Sistemas de Informação de Saúde dos Veteranos e Arquitetura Tecnologia (VistA). Quase todo o sistema hospitalar VA dos Estados Unidos, do Serviço de Saúde Indiana e da maior parte do Sistema Hospitalar do Departamento de Defesa CHCS usam banco de dados MUMPS para o rastreamento de dados clínicos. Coventry Healthcare e Massachusetts Hospital também foram relatados por usar MUMPS.

Entre as grandes empresas que hoje usam MUMPS, estão a AmeriPath, Centric Care, Sistemas Epic, EMIS, Partners HealthCare, MEDITECH, e GE Healthcare (originalmente chamado de IDX Systems e Centricity). Vários laboratórios de referência, como Pardini, DASA, Quest Diagnostics e Dynacare, utilizam softwares escritos em MUMPS, hoje atualizado o COS linguagem do Caché.

MUMPS também é muito utilizado em aplicações financeiras. As aplicações em MUMPS estão em uso em vários bancos e cooperativas de crédito. Também é usado na Ameritrade, o maior serviço online de comércio dos EUA, com mais de 12 bilhões de transações por dia, assim como o Banco da Inglaterra, Banco Barclays e outros.

Desde 2005, o uso de MUMPS é realizado através da GT.M ou InterSystems Caché. Este último obteve sucesso ao ingressar em novos mercados, como o de telecomunicações, além de mercados já existentes. Além disso, A Agência Espacial Européia anunciou dia 13 de maio de 2010 que irá utilizar MUMPS para apoiar a Missão Espacial Gaia.

Visão Geral

MUMPS é uma linguagem destinada e projetada para construir aplicações de banco de dados. Foram incluídos recursos de linguagem secundários para ajudar os programadores a criar aplicações utilizando recursos de computação mínimos. No MUMPS, programas individuais são executados em partições de memória. As primeiras partições de memória do MUMPS foram limitadas a 2048 bytes, uma vez que essa severa abreviação facilitou o multiprocessamento apesar dos recursos de hardware limitados, permitindo que ao menos mais de um trabalho em MUMPS pudesse caber nas pequenas memórias existentes no hardware da época, além de permitir também a capacidade de fornecer sistemas multiusuário. Até mesmo as primeiras máquinas que executaram MUMPS suportaram múltiplas tarefas executando simultaneamente. Com a mudança de minicomputadores para microcomputadores alguns anos depois, até mesmo um PC de um único usuário com uma CPU de 8-bits com 16KB ou 64KB de memória poderia suportar múltiplos usuários, porém rodando no modo em linha de comando (sem qualquer interface gráfica de usuário).