3 ms·
To be fair MUMPS isn’t the problem; it’s actually a very interesting programming language, but it’s so far removed from modern programming languages and syntax
by briandear 8y ago
To be fair MUMPS isn’t the problem; it’s actually a very interesting programming language, but it’s so far removed from modern programming languages and syntax that is is a pretty big pain to work with.
- roywiggins 8y agoWell, the other language you can work in at Epic is Visual Basic 6, which powers the backend of the patient portal. Newer features are in C#, but anything developed before a few years ago (which are the core features) is all in VB6. Not VB.NET (unless it's changed since I worked there), actual honest to god VB6 plugged into IIS. It's a lot like PHP, in that everything is performed by string concatenation, except that unlike PHP the language was EOLed in 2003.
- goda90 8y agoMyChart is VB.NET. The main client is still VB6, which is why there has been a big push to a web based client. A few more years and VB6 can be fully retired.
- olooney 8y agoMUMPS is definitely part of the problem. Easy access to B+ tree globals don't make up for dynamic scoping, loose typing, no namespaces, no 3rd party libraries (and an embarrassingly small standard library,) a terrible console-only debugger, a godawful error handling system, etc.
- roywiggins 8y agoEpic has its own 1st party libraries! but you're still dealing with MUMPS so a lot of code looks just like this stuff in VistA: https://code.osehra.org/gitweb/?p=VistA-M.git;a=blob;f=Packages/E+Claims+Management+Engine/Routines/BPSBCKJ.m;h=e1125e8eb41a6fc303915b09b573cfdcc5355e9a;hb=b28fe897863536fa77dc32bf7da450d467ff6580 https://code.osehra.org/gitweb/?p=VistA-M.git;a=blob;f=Packa... and lines like this (from VistA) which is, I believe, doing some sort of string parsing. S PSRT=$S($P($P(BPSORT,U,1),":")="N":PATNAME,$P($P(BPSORT,U,1),":")="P":PINS,$P($P(BPSORT,U,1),":")="S":$S('BPCRON:-DOS,1:DOS),1:BPDIV(BPDIV)) I remember stumbling across code for implementing SHA1. Of course, MUMPS has no builtin code for bitwise operations so there was some code built for it that looked like switch(operation, operandA, operandB) { case 1: //AND {{AND A and B}} case 2: // OR {{OR A and B}} ... } which manually implemented bitwise operations using integer arithmetic
- goda90 8y agoEpic has coded around most of these issues internally. So it'll be a problem for anyone trying to pick up MUMPS out of the box, but not really for Epic.
- Fins 8y agoAt least MUMPS gets the "noSQL" thing better than any noSQL tool invented by people who weren't even born when MUMPS came out. But coding anything sufficiently complicated in MUMPS is not the most pleasant task.
- deleted 8y ago[deleted]