stringtranslate.com

PAPERAS

MUMPS ("Sistema de programación múltiple de servicios públicos del Hospital General de Massachusetts"), o M , es un lenguaje de programación imperativo de alto nivel con una base de datos clave-valor de procesamiento de transacciones integrada . Fue desarrollado originalmente en el Hospital General de Massachusetts para gestionar los sistemas de información de laboratorios hospitalarios.

Desde entonces, la tecnología MUMPS se ha expandido hasta convertirse en la base de datos predominante para sistemas de información sanitaria y registros médicos electrónicos en los Estados Unidos. Los sistemas de información basados ​​en MUMPS funcionan en más del 40% de los hospitales de EE. UU., en todos los hospitales y clínicas federales de EE. UU. y brindan servicios de información de salud para más del 54 % de los pacientes en todo EE. UU. [ cita necesaria ]

Una característica única de la tecnología MUMPS es su lenguaje de base de datos integrado , que permite acceso directo de lectura y escritura de alta velocidad al almacenamiento permanente en disco. [1] Esto proporciona una estrecha integración de aplicaciones ilimitadas dentro de una única base de datos y proporciona un rendimiento y confiabilidad extremadamente altos como sistema de procesamiento de transacciones en línea . [ cita necesaria ]

Historia

Década de 1960-70 - Génesis

MUMPS fue desarrollado por Neil Pappalardo , Robert Greenes y Curt Marble en el laboratorio del Dr. Octo Barnett en el Hospital General de Massachusetts (MGH) en Boston durante 1966 y 1967. [2] Surgió de la frustración, durante una investigación de los Institutos Nacionales de Salud ( NIH) apoya el proyecto de sistemas de información hospitalaria en el MGH, con el desarrollo en lenguaje ensamblador en un PDP-1 de tiempo compartido por parte del contratista principal Bolt Beranek & Newman, Inc. (BBN). MUMPS surgió de un proyecto interno "skunkworks" en MGH por Pappalardo, Greenes y Marble para crear un entorno de desarrollo alternativo. Como resultado de la demostración inicial de capacidades, la propuesta del Dr. Barnett a los NIH en 1967 para renovar la subvención para el proyecto de computación del hospital dio el paso audaz de proponer que el sistema se construyera en MUMPS en el futuro, en lugar de depender del enfoque BBN. El proyecto fue financiado y comenzó la implementación seria del sistema en MUMPS.

El sistema MUMPS original, como Unix unos años más tarde, se construyó sobre un DEC PDP-7 . Octo Barnett y Neil Pappalardo obtuvieron un PDP-9 compatible con versiones anteriores y comenzaron a utilizar MUMPS en el ciclo de admisiones y en los informes de pruebas de laboratorio. MUMPS era entonces un lenguaje interpretado , pero incluso entonces incorporaba un sistema de archivos de base de datos jerárquico para estandarizar la interacción con los datos y las operaciones abstractas del disco, de modo que solo las realizaba el propio lenguaje MUMPS. MUMPS también se utilizó en sus inicios en un sistema experimental de entrada de notas de progreso clínico [3] y en un sistema de entrada de informes de radiología. [4]

Algunos aspectos de MUMPS se pueden rastrear desde JOSS de RAND Corporation hasta TELCOMP y STRINGCOMP de BBN . El equipo de MUMPS decidió incluir la portabilidad entre máquinas como objetivo de diseño.

Una característica avanzada del lenguaje MUMPS que no era ampliamente soportada en los sistemas operativos o en el hardware de la época era la multitarea . Aunque el tiempo compartido en computadoras centrales era cada vez más común en sistemas como Multics , la mayoría de las minicomputadoras no ejecutaban programas paralelos y los subprocesos no estaban disponibles en absoluto. Incluso en los mainframes, la variante del procesamiento por lotes en la que un programa se ejecutaba hasta su finalización era la implementación más común para un sistema operativo de programación múltiple.

Pasaron algunos años hasta que se desarrolló Unix. La falta de hardware de gestión de memoria también significaba que todo multiprocesamiento estaba plagado de la posibilidad de que un puntero de memoria pudiera cambiar algún otro proceso. Los programas MUMPS no tienen una forma estándar de referirse directamente a la memoria, a diferencia del lenguaje C , por lo que dado que la multitarea era impuesta por el lenguaje, no por ningún programa escrito en el lenguaje, era imposible correr el riesgo que existía para otros sistemas.

El sistema DEC MUMPS-15 de Dan Brevik fue adaptado a un DEC PDP-15 , donde vivió durante algún tiempo. Se instaló por primera vez en Health Data Management Systems de Denver en mayo de 1971. [5] La portabilidad demostró ser útil y MUMPS recibió una subvención de investigación del gobierno, por lo que MUMPS pasó a ser de dominio público, lo cual era un requisito para las subvenciones. MUMPS pronto fue portado a varios otros sistemas, incluido el popular DEC PDP-8 , Data General Nova y DEC PDP-11 y la minicomputadora Artronix PC12 . La noticia sobre las paperas se difundió principalmente entre la comunidad médica y su uso fue generalizado, y a menudo se modificó localmente para sus propias necesidades.

Las versiones del sistema MUMPS fueron reescritas por los líderes técnicos Dennis "Dan" Brevik y Paul Stylos [5] de DEC en 1970 y 1971. A principios de la década de 1970, había muchas y variadas implementaciones de MUMPS en una variedad de plataformas de hardware. Otra plataforma notable fue la DEC MUMPS-11 de Paul Stylos [5] en el PDP-11 y el MIIS de MEDITECH . En el otoño de 1972, muchos usuarios de MUMPS asistieron a una conferencia en Boston que estandarizó el entonces fracturado lenguaje y crearon el Grupo de Usuarios de MUMPS y el Comité de Desarrollo de MUMPS (MDC) para hacerlo. Estos esfuerzos resultaron exitosos; una norma se completó en 1974 y fue aprobada el 15 de septiembre de 1977 como norma ANSI , X11.1-1977. Casi al mismo tiempo, DEC lanzó DSM-11 (Digital Standard MUMPS) para el PDP-11. Este rápidamente dominó el mercado y se convirtió en la implementación de referencia de la época. Además, InterSystems vendió ISM-11 para el PDP-11 (que era idéntico al DSM-11).

década de 1980

A principios de la década de 1980, varios proveedores lanzaron al mercado plataformas basadas en MUMPS que cumplían con el estándar ANSI. Los más significativos fueron:

Este período también vio una actividad considerable del MDC. La segunda revisión del estándar ANSI para MUMPS (X11.1-1984) fue aprobada el 15 de noviembre de 1984.

década de 1990

2000

Nombre

Al director ejecutivo de InterSystems no le gustó el nombre MUMPS y consideró que representaba un serio obstáculo de marketing. Por lo tanto, favorecer a M hasta cierto punto se identificó como alineación con InterSystems. El estándar ANSI de 1990 estaba abierto tanto a M como a MUMPS y después de una discusión "mundial" en 1992, los Grupos de Usuarios de Mumps cambiaron oficialmente el nombre a M. La disputa también reflejó la rivalidad entre organizaciones (la Asociación de Tecnología M, el Comité de Desarrollo MUMPS , los Comités de Normas ANSI e ISO) en cuanto a quién determina el nombre "oficial" del idioma. [ cita necesaria ]

Una autoridad líder y autor de una implementación MUMPS de código abierto, el profesor Kevin O'Kane, utiliza sólo 'MUMPS'. [ cita necesaria ]

La norma más reciente (ISO/IEC 11756:1999, reafirmada el 25 de junio de 2010) todavía menciona tanto M como MUMPS como nombres oficialmente aceptados. [ cita necesaria ]

El Hospital General de Massachusetts registró "MUMPS" como marca registrada ante la USPTO el 28 de noviembre de 1971 y la renovó el 16 de noviembre de 1992, pero la dejó expirar el 30 de agosto de 2003. [14]

Diseño

Descripción general

MUMPS es un lenguaje destinado y diseñado para crear aplicaciones de bases de datos. Se incluyeron funciones de lenguaje secundario para ayudar a los programadores a crear aplicaciones utilizando recursos informáticos mínimos. Se interpretaron las implementaciones originales , aunque las implementaciones modernas pueden compilarse total o parcialmente . Los "programas" individuales se ejecutan en las "particiones" de memoria . Las primeras particiones de memoria MUMPS estaban limitadas a 2048 bytes, por lo que una abreviatura agresiva ayudó enormemente a la multiprogramación en hardware con recursos muy limitados, porque más de un trabajo MUMPS podía caber en las memorias muy pequeñas que existían en el hardware en ese momento. La capacidad de proporcionar sistemas multiusuario fue otra característica del diseño del lenguaje. La palabra " M ulti- P rogramming" en el acrónimo apunta a esto. Incluso las primeras máquinas que ejecutaban MUMPS admitían múltiples trabajos ejecutándose al mismo tiempo. Con el cambio de minicomputadoras a microcomputadoras unos años más tarde, incluso una "PC de un solo usuario" con una única CPU de 8 bits y 16 KB o 64 KB de memoria podría admitir múltiples usuarios, que podrían conectarse a ella desde (no Terminales gráficos ) de visualización de vídeo .

Dado que la memoria era escasa originalmente, el diseño del lenguaje para MUMPS valoraba un código muy conciso. Por lo tanto, cada comando o nombre de función de MUMPS podría abreviarse de una a tres letras, por ejemplo, Salir (salir del programa) como Q , $P = $ Función de pieza, R = Comando de lectura , $TR = Función de $Traducir . Los espacios y los marcadores de fin de línea son importantes en MUMPS porque el alcance de la línea promovió el mismo diseño de lenguaje conciso. Así, una sola línea de código de programa podría expresar, con pocos caracteres, una idea para la que otros lenguajes de programación podrían requerir de 5 a 10 veces más caracteres. La abreviatura era una característica común de los lenguajes diseñados en este período (por ejemplo, FOCAL-69 , los primeros BASIC como Tiny BASIC , etc.). Un efecto secundario desafortunado de esto, junto con la necesidad inicial de escribir código minimalista, fue que los programadores de MUMPS habitualmente no comentaban el código y utilizaban abreviaturas extensas. Esto significaba que incluso un programador experto de MUMPS no podría simplemente hojear una página de código para ver su función, sino que tendría que analizarla línea por línea.

La interacción con la base de datos está integrada de forma transparente en el lenguaje. El lenguaje MUMPS proporciona una base de datos jerárquica formada por matrices dispersas persistentes , que se "abre" implícitamente para cada aplicación MUMPS. Todos los nombres de variables con el prefijo del carácter de intercalación ( ) utilizan almacenamiento permanente (en lugar de RAM), mantendrán sus valores después de que se cierre la aplicación y serán visibles para (y modificables por) otras aplicaciones en ejecución. Las variables que utilizan este almacenamiento compartido y permanente se denominan Globales en MUMPS, porque el alcance de estas variables está "disponible globalmente" para todos los trabajos del sistema. El uso más reciente y más común del nombre "variables globales" en otros lenguajes es un alcance más limitado de los nombres, debido al hecho de que las variables sin alcance están disponibles "globalmente" para cualquier programa que se ejecute en el mismo proceso, pero no se comparten entre ellos. múltiples procesos. El modo de almacenamiento MUMPS (es decir, datos globales almacenados como matrices dispersas persistentes) le da a la base de datos MUMPS las características de una base de datos orientada a documentos . [15]^

Todos los nombres de variables que no tienen el prefijo carácter de intercalación ( ^) son temporales y privados. Al igual que las variables globales, también tienen un modelo de almacenamiento jerárquico, pero sólo están "disponibles localmente" para un único trabajo, por lo que se denominan "locales". Tanto los "globales" como los "locales" pueden tener nodos secundarios (llamados subíndices en la terminología MUMPS). Los subíndices no se limitan a números: cualquier carácter ASCII o grupo de caracteres puede ser un identificador de subíndice. Si bien esto no es raro en lenguajes modernos como Perl o JavaScript, era una característica muy inusual a finales de los años 1970. Esta capacidad no se implementó universalmente en los sistemas MUMPS antes del estándar ANSI de 1984, ya que el estándar solo exigía que se permitieran subíndices canónicamente numéricos. [16] Por lo tanto, la variable denominada 'Coche' puede tener subíndices "Puerta", "Volante" y "Motor", cada uno de los cuales puede contener un valor y tener sus propios subíndices. La variable ^Car("Door")podría tener un subíndice de variable anidada de "Color", por ejemplo. Así, se podría decir

SET ^Coche("Puerta","Color")="AZUL"

para modificar un nodo secundario anidado de ^Car. En términos de MUMPS, "Color" es el segundo subíndice de la variable ^Car(tanto los nombres de los nodos secundarios como los propios nodos secundarios también se denominan subíndices). Las variables jerárquicas son similares a los objetos con propiedades en muchos lenguajes orientados a objetos . Además, el diseño del lenguaje MUMPS requiere que todos los subíndices de las variables se mantengan ordenados automáticamente. Los subíndices numéricos (incluidos los números de punto flotante) se almacenan de menor a mayor. Todos los subíndices no numéricos se almacenan en orden alfabético siguiendo los números. En la terminología MUMPS, este es el orden canónico . Al utilizar únicamente subíndices enteros no negativos, el programador MUMPS puede emular el tipo de datos de matrices de otros lenguajes. Aunque MUMPS no ofrece de forma nativa un conjunto completo de funciones DBMS , como esquemas obligatorios, se han creado varios sistemas DBMS que brindan a los desarrolladores de aplicaciones funciones de bases de datos de red , relacionales y de archivos planos.

Además, existen operadores integrados que tratan una cadena delimitada (por ejemplo, valores separados por comas ) como una matriz. Los primeros programadores de MUMPS a menudo almacenaban una estructura de información relacionada como una cadena delimitada, analizándola después de leerla; esto ahorró tiempo de acceso al disco y ofreció considerables ventajas de velocidad en algunos hardware.

MUMPS no tiene tipos de datos. Los números pueden tratarse como cadenas de dígitos, o las cadenas pueden tratarse como números mediante operadores numéricos ( coaccionados , en la terminología MUMPS). Sin embargo, la coerción puede tener algunos efectos secundarios extraños. Por ejemplo, cuando se coacciona una cadena, el analizador convierte la mayor parte posible de la cadena (comenzando desde la izquierda) en un número y luego descarta el resto. Por tanto, la declaración IF 20<"30 DUCKS"se evalúa como TRUEen MUMPS.

Otras características del lenguaje están destinadas a ayudar a las aplicaciones MUMPS a interactuar entre sí en un entorno multiusuario. Los bloqueos de bases de datos, los identificadores de procesos y la atomicidad de las transacciones de actualización de bases de datos son requisitos de las implementaciones estándar de MUMPS.

A diferencia de los lenguajes de las tradiciones C o Wirth , algunos caracteres de espacio entre las declaraciones MUMPS son significativos. Un solo espacio separa un comando de su argumento, y un espacio o nueva línea separa cada argumento del siguiente token MUMPS. Los comandos que no toman argumentos (por ejemplo, ELSE) requieren dos espacios a continuación. El concepto es que un espacio separa el comando del argumento (inexistente), el siguiente separa el "argumento" del siguiente comando. Las nuevas líneas también son importantes; un IFcomando ELSEo FORprocesa (u omite) todo lo demás hasta el final de la línea. Para que esas declaraciones controlen varias líneas, debe usar el DOcomando para crear un bloque de código.

¡Hola Mundo! ejemplo

Un simple "¡Hola mundo!" El programa en MUMPS podría ser:

 escribe "¡Hola mundo!",!

y se ejecutará con el comando do ^hello después de haberlo guardado en el disco. Para la ejecución directa del código se necesita una especie de "etiqueta" (cualquier cadena alfanumérica) en la primera posición de la línea del programa para indicarle al intérprete de paperas dónde iniciar la ejecución. Dado que MUMPS permite que los comandos se encadenen en la misma línea, y que los comandos se pueden abreviar a una sola letra, esta rutina podría hacerse más compacta:

w "¡Hola mundo!",!

El ' ,!' después del texto genera una nueva línea. Este código volvería al mensaje.

Características

ANSI X11.1-1995 proporciona una descripción formal y completa del idioma; una versión comentada de esta norma está disponible en línea. [17]

Las características del idioma incluyen:

Tipos de datos
Hay un tipo de datos universal , que implícitamente se convierte en tipos de datos de cadena, entero o punto flotante según lo requiera el contexto.
Booleanos (llamados valores de verdad en MUMPS)
En los comandos IF y otras sintaxis que tienen expresiones evaluadas como condiciones, cualquier valor de cadena se evalúa como un valor numérico y, si es un valor distinto de cero, se interpreta como Verdadero. a<bproduce 1 si a es menor que b, 0 en caso contrario.
Declaraciones
Ninguno. Todas las variables se crean dinámicamente la primera vez que se asigna un valor.
Líneas
son entidades sintácticas importantes, a diferencia de su estatus en lenguajes basados ​​en C o Pascal. Se permiten varias declaraciones por línea y son comunes. El alcance de cualquier comando IF , ELSE y FOR es "el resto de la línea actual".
Sensibilidad entre mayúsculas y minúsculas
Los comandos y las funciones intrínsecas no distinguen entre mayúsculas y minúsculas. Por el contrario, los nombres y etiquetas de las variables distinguen entre mayúsculas y minúsculas. No hay un significado especial para mayúsculas o minúsculas y hay pocas convenciones ampliamente seguidas. El signo de porcentaje (%) es válido como primer carácter de variables y etiquetas.
Poscondicionales
La ejecución de casi cualquier comando se puede controlar siguiéndolo con dos puntos y una expresión de valor de verdad. SET:N<10 A="FOO" establece A en "FOO" si N es menor que 10; DO:N>100 PRINTERR,realiza PRINTERR si N es mayor que 100. Esta construcción proporciona un condicional cuyo alcance es menor que una línea completa.
Abreviatura
Puede abreviar casi todos los comandos y funciones nativas a uno, dos o tres caracteres.
Palabras reservadas
Ninguno. Dado que MUMPS interpreta el código fuente por contexto, no hay necesidad de palabras reservadas. Puede utilizar los nombres de los comandos del lenguaje como variables, por lo que el siguiente es un código MUMPS perfectamente legal:
GREPTO() NUEVO CONJUNTO, NUEVO, ENTONCES, SI, MATAR, SALIR CONJUNTO IF="MATAR",SET="11",MATAR="l1",SALIR="REGRESAR",ENTONCES="MATAR" SI SI = ENTONCES HACER ENTONCES SALIR:$ SALIR SALIR SALIR ; (abandonar)ENTONCES SI SI,SET&KILL SET SET=SET+KILL SALIR
MUMPS se puede ofuscar más utilizando la sintaxis del operador contratado, como se muestra en este conciso ejemplo derivado del ejemplo anterior:
GREPTO() NS,N,T,I,K,QSI="K",S="11",K="l1",Q="R",T="K" II=TDT P:$QQQTII,S&K SS=S+KQ
matrices
se crean dinámicamente, se almacenan como árboles B , son escasos (es decir, casi no usan espacio para los nodos faltantes), pueden usar cualquier número de subíndices y los subíndices pueden ser cadenas o numéricos (incluido el punto flotante). Las matrices siempre se almacenan automáticamente en orden, por lo que nunca hay ocasión de ordenar, empaquetar, reordenar o reorganizar de otro modo la base de datos. Las funciones integradas como $DATA , $ORDER , $NEXT (en desuso) y $QUERY proporcionan un examen y un recorrido eficientes de la estructura fundamental de la matriz, en el disco o en la memoria.
para i=10000:1:12345 establezca sqtable(i)=i*iestablecer dirección("Smith","Daniel")="[email protected]"
matrices locales
Los nombres de variables que no comienzan con el símbolo de intercalación (es decir, "^") se almacenan en la memoria por proceso, son privados para el proceso de creación y caducan cuando finaliza el proceso de creación. El almacenamiento disponible depende de la implementación. Para aquellas implementaciones que utilizan particiones, está limitado al tamaño de la partición (una partición pequeña puede tener 32 K). Para otras implementaciones, pueden ser varios megabytes.
matrices globales
^abc, ^def. Estos se almacenan en el disco, están disponibles para todos los procesos y son persistentes cuando finaliza el proceso de creación. Los globales muy grandes (por ejemplo, cientos de gigabytes) son prácticos y eficientes en la mayoría de las implementaciones. Este es el principal mecanismo de "base de datos" de MUMPS. Se utiliza en lugar de recurrir al sistema operativo para crear, escribir y leer archivos.
Indirección
en muchos contextos, @VBLse puede utilizar y sustituye eficazmente el contenido de VBL en otra declaración MUMPS. SET XYZ="ABC" SET @XYZ=123establece la variable ABC en 123. SET SUBROU="REPORT" DO @SUBROUrealiza la subrutina denominada INFORME. Esta sustitución permite una evaluación diferida y un enlace tardío, así como también el equivalente operativo de "punteros" en otros idiomas.
Función de pieza
Esto divide las variables en partes segmentadas guiadas por una cadena separadora especificada por el usuario (a veces llamada "delimitador"). Aquellos que conocen awk lo encontrarán familiar. significa la "tercera pieza de STRINGVAR$PIECE(STRINGVAR,"^",3) separada por un signo de intercalación ". La función de pieza también puede aparecer como un objetivo de asignación (comando SET).
$PIECE("world.std.com",".",2)rendimientosenfermedad de transmisión sexual.
Después
SET $P(X,"@",1)="office"hace que X se convierta en "[email protected]" (tenga en cuenta que $P es equivalente a $PIECE y podría escribirse como tal).
Función de orden
Esta función trata su entrada como una estructura y encuentra el siguiente índice que existe que tiene la misma estructura excepto el último subíndice. Devuelve el valor ordenado que está ordenado después del dado como entrada. (Esto trata la referencia de la matriz como datos direccionables por contenido en lugar de como la dirección de un valor).
Establecer cosas(6)="xyz",cosas(10)=26,cosas(15)=""
$Order(stuff(""))rendimientos6, $Order(stuff(6))rendimientos10, $Order(stuff(8))rendimientos10, $Order(stuff(10))rendimientos15, $Order(stuff(15))rendimientos"".
Establecer i="" For Set i=$O(cosas(i)) Salir:i="" Escribir !,i,10,cosas(i)
Aquí, el For sin argumentos se repite hasta que lo detiene una terminación Quit . Esta línea imprime una tabla de i y donde i es sucesivamente 6, 10 y 15.stuff(i)
Para iterar la base de datos, la función Orden devuelve la siguiente clave a usar.
GTM>S n=""GTM>S n=$orden(^nodex(n))GTM>zwr nn="edificio"GTM>S n=$orden(^nodex(n))GTM>zwr nn=" nombre:gd"GTM>S n=$orden(^nodex(n))GTM>zwr nn="%kml:guid"

MUMPS admite múltiples usuarios y procesos simultáneos incluso cuando el sistema operativo subyacente no lo hace (por ejemplo, MS-DOS ). Además, existe la posibilidad de especificar un entorno para una variable, por ejemplo, especificando un nombre de máquina en una variable (como en SET ^|"DENVER"|A(1000)="Foo"), lo que puede permitirle acceder a datos en máquinas remotas.

Crítica

Algunos aspectos de la sintaxis MUMPS difieren mucho de la de los lenguajes más modernos, lo que puede causar confusión, aunque esos aspectos varían entre las diferentes versiones del lenguaje. En algunas versiones, no se permiten espacios en blanco dentro de las expresiones, ya que finalizan una declaración: 2 + 3es un error y debe escribirse 2+3. Todos los operadores tienen la misma precedencia y son asociativos por la izquierda ( 2+3*10se evalúa como 50). Los operadores para "menor o igual que" y "mayor o igual que" son '>y '<(es decir, el operador de negación booleano 'más un operador de comparación estricto en la dirección opuesta), aunque algunas versiones permiten el uso del operador más estándar <=y >=respectivamente. Los puntos ( .) se utilizan para sangrar las líneas en un bloque DO, no espacios en blanco. El comando ELSE no necesita un IF correspondiente, ya que opera inspeccionando el valor en la variable integrada del sistema $test.

Las reglas de alcance de MUMPS son más permisivas que otros lenguajes modernos. Las variables locales declaradas tienen su alcance utilizando la pila. Una rutina normalmente puede ver todos los locales declarados de las rutinas debajo de ella en la pila de llamadas, y las rutinas no pueden evitar que las rutinas que llaman modifiquen sus locales declarados, a menos que la persona que llama cree manualmente un nuevo nivel de pila ( do) y asigne un alias a cada una de las variables que desee. proteger ( . new x,y) antes de llamar a cualquier rutina infantil. Por el contrario, las variables no declaradas (variables creadas mediante su uso, en lugar de una declaración) están dentro del alcance de todas las rutinas que se ejecutan en el mismo proceso y permanecen dentro del alcance hasta que se cierra el programa.

Debido a que las referencias a la base de datos MUMPS difieren de las referencias a variables internas sólo en el prefijo de intercalación, es peligrosamente fácil editar involuntariamente la base de datos, o incluso eliminar una "tabla" de la base de datos. [18]

Usuarios

El Departamento de Asuntos de Veteranos de EE. UU. (anteriormente Administración de Veteranos) fue uno de los primeros en adoptar el lenguaje MUMPS. Su trabajo de desarrollo (y sus posteriores contribuciones al código base de la aplicación gratuita MUMPS) influyeron en muchos usuarios médicos de todo el mundo. En 1995, el sistema de admisión, seguimiento y alta de pacientes de Asuntos de Veteranos, el Programa informático hospitalario descentralizado (DHCP), recibió el premio Computerworld Smithsonian por el mejor uso de la tecnología de la información en medicina. En julio de 2006, el Departamento de Asuntos de Veteranos (VA)/ Administración de Salud de Veteranos (VHA) recibió el Premio a las Innovaciones en el Gobierno Estadounidense presentado por el Instituto Ash de la Escuela de Gobierno John F. Kennedy de la Universidad de Harvard por su extensión de DHCP en la arquitectura tecnológica y de sistemas de información sanitaria para veteranos ( VistA ). Casi todo el sistema hospitalario de VA en los Estados Unidos, el Servicio de Salud Indígena y gran parte del sistema hospitalario CHCS del Departamento de Defensa utilizan bases de datos MUMPS para el seguimiento de datos clínicos.

Otras empresas de TI para el cuidado de la salud que utilizan MUMPS incluyen:

Muchos laboratorios de referencia, como DASA, Quest Diagnostics , [20] y Dynacare, utilizan el software MUMPS escrito o basado en el código de Antrim Corporation. Antrim fue comprada por Misys Healthcare (ahora Sunquest Information Systems ) en 2001. [21]

MUMPS también se utiliza ampliamente en aplicaciones financieras. MUMPS ganó seguidores en el sector financiero y se utiliza en muchos bancos y cooperativas de crédito. Lo utilizan TD Ameritrade , así como el Banco de Inglaterra y el Barclays Bank . [22] [23] [24]

Implementaciones

Desde 2005, las implementaciones más populares de MUMPS han sido Greystone Technology MUMPS (GT.M) de Fidelity National Information Services y Caché, de Intersystems Corporation. La Agencia Espacial Europea anunció el 13 de mayo de 2010 que utilizará la base de datos InterSystems Caché para respaldar la misión Gaia . Esta misión tiene como objetivo mapear la Vía Láctea con una precisión sin precedentes. [25] InterSystems está en proceso de eliminar progresivamente Caché en favor de Iris. [26]

Otras implementaciones actuales incluyen:

Ver también

Referencias

  1. ^ Tweed, Rob; James, George (2 de agosto de 2008). "MUMPS: la base de datos a escala de Internet" . Archivado desde el original el 27 de septiembre de 2021 . Consultado el 25 de octubre de 2022 , a través de SlideShare .
  2. ^ Verdes, Robert; Pappalardo, A Neil; Mármol, Curt W; Barnett, G Octo (1969). "Diseño e implementación de un sistema de gestión de datos clínicos". Res. informática biomédica . 5 (octubre): 469–85. doi :10.1016/0010-4809(69)90012-3. PMID  11697375.
  3. ^ Verdes, Robert A; Barnett, G Octo; Klein, Stuart W; Robbins, Antonio; Antes, Roderick E (1970). "Registro, recuperación y revisión de datos médicos mediante interacción médico-computadora". N Inglés J Med . 282 (6): 307–15. doi :10.1056/NEJM197002052820605. PMID  5410816.
  4. ^ Pendergrass, Henry P; Greenes, Robert A; Barnett, G Octo; Poitras, James W; Pappalardo, A Neil; Mármol, Curt W (1969). "Un servicio informático en línea para el ingreso sistematizado de informes radiológicos". Radiología . 92 (4): 709–13. doi :10.1148/92.4.709. PMID  5767748.
  5. ^ abc Trask, Gardner; Diamante, Jon (6 de abril de 1999). "Preguntas frecuentes sobre tecnología M y lenguaje MUMPS, parte 1/2". Grupo de noticias : comp.lang.mumps. Usenet:  [email protected] . Consultado el 25 de octubre de 2022 .
  6. ^ Manual de referencia del lenguaje VAX-11 DSM . Corporación de equipos digitales. 1982. OCLC  29217964.
  7. ^ "Servidores HP NonStop, lista de mantenimiento de productos de software, fecha de vigencia: enero de 2012" (PDF) . Compañía de desarrollo Hewlett-Packard, LP 2012-01-20. pag. 32 . Consultado el 17 de mayo de 2014 .
  8. ^ "Dos versiones de MUMPS disponibles". Mundo de la informática . vol. XXI, núm. 48. 1987-11-30 . Consultado el 9 de julio de 2022 .
  9. ^ Grabscheid, Paul; Ragón, Terry (2 de enero de 1995). "Anuncio de DSM". Grupo de noticias : comp.lang.mumps. Usenet:  [email protected] . Consultado el 25 de octubre de 2022 .
  10. ^ "Sánchez ofrece la base de datos GT.M como software gratuito de código abierto para usuarios de GNU/Linux". Sanchez Computer Associates, Inc. (Presione soltar). 8 de noviembre de 2000. Archivado desde el original el 28 de abril de 2004 . Consultado el 12 de agosto de 2013 .{{cite press release}}: Mantenimiento CS1: URL no apta ( enlace )
  11. ^ "Motor de base de datos TP de gama alta GT.M". Fuenteforge.net . Consultado el 12 de agosto de 2013 .
  12. ^ "Lenguaje y base de datos MUMPS". Fuenteforge.net . Consultado el 12 de agosto de 2013 .
  13. ^ "Paperas/Mii". Rychannel.com. 2012-11-08 . Consultado el 12 de agosto de 2013 .
  14. ^ "Estado de marcas comerciales y recuperación de documentos". tsdr.uspto.gov . Consultado el 26 de febrero de 2018 .
  15. ^ "Programación extrema de bases de datos con MUMPS Globals" (PDF) . Gradvs1.mjgateway.com . Consultado el 13 de agosto de 2013 .
  16. ^ "Los estándares M [UMPS] anotados". 71.174.62.16. 29 de noviembre de 2011 . Consultado el 12 de agosto de 2013 .
  17. ^ "Los estándares M [UMPS] anotados". 71.174.62.16 . Consultado el 26 de febrero de 2018 .
  18. ^ Richmond, José Robin (1984). Métricas de mantenibilidad de software para programas MUMPS (Doctor). El Centro de Ciencias de la Salud de la Universidad de Texas en Dallas . OCLC  13285529.
  19. ^ "SunQuest emerge de la sombra de Misys". Noticias de TI sanitarias. 13 de marzo de 2008 . Consultado el 12 de agosto de 2013 .
  20. ^ "Ajax de misión crítica: hacer que los pedidos de pruebas sean más fáciles y rápidos en Qu". Slideshare.net. 5 de abril de 2008 . Consultado el 12 de agosto de 2013 .
  21. ^ "Sunquest adquiere Antrim Corp. - Biblioteca en línea gratuita". Thefreelibrary.com. 1996-11-26 . Consultado el 12 de agosto de 2013 .
  22. ^ "Bienvenido a M21: la base de datos del siglo XXI". M21.uk.com . Consultado el 13 de agosto de 2013 .
  23. ^ "Sistemas financieros basados ​​en caché". Intersistemas . Archivado desde el original el 2 de junio de 2013 . Consultado el 13 de agosto de 2013 .
  24. ^ "IDEA Aplicaciones bancarias y ERP llave en mano". Idea.cz. _ Consultado el 13 de agosto de 2013 .
  25. ^ "La Agencia Espacial Europea elige la base de datos Caché de InterSystems para la misión Gaia de mapear la Vía Láctea". Realwire.com. 13 de mayo de 2010 . Consultado el 13 de agosto de 2013 .
  26. ^ "InterSystems Iris". Intersistemas . Consultado el 18 de marzo de 2021 .
  27. ^ "Sitio web de YottaDB". yottadb.com. 24 de mayo de 2024 . Consultado el 24 de mayo de 2023 .

Otras lecturas

enlaces externos