Information about Mumps
| Mumps virus | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
![]() TEM micrograph of the mumps virus. TEM micrograph of the mumps virus. | ||||||||||
| Virus classification | ||||||||||
| ||||||||||
For other uses of the word MUMPS, see .
Mumps or epidemic parotitis is a viral disease of humans. Prior to the development of vaccination and the introduction of a vaccine, it was a common childhood disease worldwide, and is still a significant threat to health in the third world.[1]
Painful swelling of the salivary glands (classically the parotid gland) and fever is the most typical presentation.[2] Painful testicular swelling and rash may also occur. While symptoms are generally not severe in children, the symptoms in teenagers and adults can be more severe and complications such as infertility or subfertility are relatively common, although still rare in absolute terms.[3],[4],[5] The disease is generally self-limited, running its course before waning, with no specific treatment apart from controlling the symptoms with painkillers.
| ICD-10 | B26. |
|---|---|
| ICD-9 | 072 |
| DiseasesDB | 8449 |
| MedlinePlus | 001557 |
| eMedicine | emerg/324 |
Causes and risks
The mumps are caused by a paramyxovirus, and are spread from person to person by saliva droplets or direct contact with articles that have been contaminated with infected saliva. The parotid glands (the salivary glands between the ear and the jaw) are usually involved. Unvaccinated children between the ages of 2 and 12 are most commonly infected, but the infection can occur in other age groups. Orchitis (swelling of the testes) occurs in 10–20% of infected males, but sterility only rarely ensues; a viral meningitis occurs in about 5% of those infected. In older people, the central nervous system, the pancreas, the prostate, the breasts, and other organs may be involved.The incubation period is usually 18 to 21 days, but may range from as few as 12 to as many as 35 days.[5] Mumps is generally a mild illness in children in developed countries. After adolescence, mumps tends to affect the ovary, causing oophoritis, and the testes, causing orchitis. The mature testis is particularly susceptible to damage from mumps which can lead to infertility. Adults infected with mumps are more likely to develop severe symptoms and complications.
Symptoms
The more common symptoms of mumps are:- Swelling of the parotid gland (or parotitis) in more than 90% of patients on one side (unilateral) or both sides (bilateral), and pain behind the lower jaw when chewing.
- Fever
- Headache
- Sore throat
- Orchitis, referring to painful inflammation of the testicle.[6] Males past puberty who develop mumps have a 30 percent risk of orchitis.[7]
Prodrome
Fever and headache can occur already as prodromal symptoms of mumps, together with malaise and anorexia.Signs and tests
A physical examination confirms the presence of the swollen glands. Usually the disease is diagnosed on clinical grounds and no confirmatory laboratory testing is needed. If there is uncertainty about the diagnosis, a test of saliva, urine, or blood may be carried out; a newer diagnostic confirmation, using real-time nested polymerase chain reaction (PCR) technology, has also been developed [8]. An estimated 20%-30% of cases are asymptomatic. [9]Treatment
There is no specific treatment for mumps. Symptoms may be relieved by the application of intermittent ice or heat to the affected neck area and by Acetaminophen/Paracetamol (Tylenol) for pain relief. Aspirin use is discouraged in young children because of studies showing an increased risk of Reye's syndrome.[10] Warm salt water gargles, soft foods, and extra fluids may also help relieve symptoms.Patients are advised to avoid fruit juice or any acidic foods, since these stimulate the salivary glands, which can be painful.
Research treatments
- A research group published a 1996 report on a chemical extracted from Spirulina platensis, a species of blue-green algae, which inhibited Mumps virus in a viral plaque assay.[11]
- A University of Tokyo group reported in 1992 that research compound TJ13025 ((6'R)-6'-C-methylneplanocin A) had an antiviral effect on four Mumps virus strains cultured in Vero cells.(see 16526604, tables 1 and 2) Additional research improved the synthesis of a particular isomer, RMNPA, of TJ13025 from the racemic product.[12][13]
- A 2005 publication in a Russian journal reports that Myramistin has antiviral activity against Mumps virus in Vero cells culture.[14]
Prognosis
Death is very unusual. The disease is self-limiting, and general outcome is good, even if other organs are involved. Sterility in men from involvement of the testes is very rare. After the illness, life-long immunity to mumps generally occurs.Complications
Known complications of mumps include:- Infection of other organ systems
- Sterility in men (this is quite rare, and mostly occurs in older men)
- Mild forms of meningitis (rare, 40% of cases occur without parotid swelling)
- Encephalitis (very rare, rarely fatal)
- Profound (91 dB or more) but rare sensorineural hearing loss, uni- or bilateral
Prevention
The most common preventative measure against mumps is immunization with a mumps vaccine. The vaccine may be given separately or as part of the MMR immunization vaccine which also protects against measles and rubella. In the US, MMR is now being supplanted by MMRV, which adds protection against Chickenpox. The WHO recommends the use of mumps vaccines in all countries with well-functioning childhood vaccination programmes. In the United Kingdom it is routinely given to children at age 15 months. The American Academy of Pediatrics recommends the routine administration of MMR vaccine at ages 12-15 months and at 4-6 years.[15] In some locations, the vaccine is given again between 4 to 6 years of age, or between 11 and 12 years of age if not previously given. Efficacy of the vaccine depends on the strain of the vaccine, but is usually around 80%.[16],[17] The Jeryl Lynn strain is most commonly used in developed countries, but has been shown to have reduced efficacy in epidemic situations. The Leningrad-Zagreb strain is commonly used in developing countries, but appears to have superior efficacy in epidemic situations.[18]Some anti-vaccine activists protest against the administration of a vaccine against mumps, claiming that the attenuated vaccine strain is harmful, and/or that the wild disease is beneficial. Disagreeing, the WHO, the American Academy of Pediatrics, the Advisory Committee on Immunization Practices of the Centers for Disease Control and Prevention, the American Academy of Family Physicians, the British Medical Association and the Royal Pharmaceutical Society of Great Britain currently recommend routine vaccination of children against mumps. The British Medical Association and Royal Pharmaceutical Society of Great Britain had previously recommended against general mumps vaccination, changing that recommendation in 1987. In 1988 it became United Kingdom government policy to introduce mass child mumps vaccination programmes with the MMR vaccine, and MMR vaccine is now routinely administered in the UK.
Before the introduction of the mumps vaccine, the mumps virus was the leading cause of viral meningoencephalitis in the United States. However, encephalitis occurs rarely (less than 2 per 100,000).[19] In one of the largest studies in the literature, the most common symptoms of mumps meningoencephalitis were found to be fever (97%), vomiting (94%) and headache (88.8%).[20] The mumps vaccine was introduced into the United States in December 1967: since its introduction there has been a steady decrease in the incidence of mumps and mumps virus infection. There were 151,209 cases of mumps reported in 1968; in 1998 there were only 666 cases reported.
Current outbreaks
Canada (April 2007)
Dalhousie University, Halifax, Nova Scotia. Dalhousie University was struck with an outbreak of the mumps confirmed in many students and suspected cases in dozens of others. The main causes of the large outbreak include students being unaware of being infected, and other students who knowingly ignored quarantine restrictions. The outbreak began after St. Patrick's Day, and has spread beyond the university community, with confirmed cases reaching 350 cases of mumps since February, including about 24 new cases that have surfaced during the week ending June 9, 2007. The end of the university year in May meant that many students travelled to their homes across the country carrying the infection, leading to a large scale spread, the extent of which is still not clear, although the prevalence of the disease lay in people aged 17 to 24. Roughly 50 personnel of the Halifax-based navy ship HMCS Glace Bay were sent home as a precaution. Reported outbreaks have begun in New Brunswick (Approximately 100 cases), Prince Edward Island (1 case), Ontario (3 cases confirmed, 5 suspected), West Coast of Newfoundland (2 cases)[21], and Toronto (3 cases). On October 3rd 2007, a new case was reported at Nipissing University/Canadore College, in North Bay, Ontario.United Kingdom (2004–2007)
In the United Kingdom over the last two years, a mumps outbreak[22] has involved more than 70,000 patients.[1][23] The cause of the outbreak is low immunity in those too old to have received MMR, but young enough to have not developed natural immunity through exposure. A catch-up programme of immunisation of under twenty five year olds, particularly in university towns such as Exeter was implemented.- 12 November 2004: The University of Bath Internal News reports that twenty three students have presented to the University of Bath Medical Centre with Mumps. A "Mumps Vaccination programme" is announced, to commence 15 November 2004.[24]
United States (2005-2006)
Although there may not be a direct link with the mumps outbreak in Ireland, United States CDC Director Dr. Julie Gerberding has been quoted stating that the genotype from the U.S. outbreak, "in the early cases of this outbreak, was the same genotype of virus that was associated with the United Kingdom outbreak." [2] Entrez Gene contains a placeholder database record for a new Mumps gene; the record is dated 23 Feb 2006.[3]- 31 January 2007: 6404 cases of mumps in 2006 compared to 314 in 2005. As of today, YTD 15 deaths in the United States were reported.http://wonder.cdc.gov/mmwr/mmwr_reps.asp?mmwr_year=2007&mmwr_week=03&mmwr_table=1
Iowa (2005-2006)
In early 2006, for reasons still not fully understood, the state of Iowa experienced a large surge in the number of reported mumps infections.[25] [4]According to the New York Times, college students accounted for about a quarter of the 245 cases [5], while about half of the cases are people aged seventeen to twenty five. Doctors are attributing the rise in mumps case frequency to low vaccination rates in Iowa's youth, coupled with the close quarters in dormitories, classrooms and cafeterias.| When you expect five and you get 245, this is pretty serious... We're trying to get ahead of it and get it stopped... It could be that on some of these college campuses, they were not as well vaccinated as we'd like them to be, [but] our law does not allow us to identify entities associated with outbreaks. |
According to Canadian media reports [6], there may be something novel about this mumps strain which indicates a standard MMR-series vaccination is not 95% effective, as was thought.
- 14 April 2006: Iowa has experienced more than 600 suspected cases since December. Other states reporting cases are California, Illinois, Kansas, Minnesota, Missouri, Nebraska, South Dakota, and Wisconsin. The Centers for Disease Control and Prevention agency has not yet released the name of the ninth Midwestern state, however there have been confirmed cases in Michigan http://wnem.com/Global/story.asp?S=4796924. The mumps outbreak is the nation's largest in twenty years.
- 18 April 2006: 815 cases have been reported http://www.chron.com/disp/story.mpl/ap/health/3802314.html in Iowa alone, representing a caseload reporting increase of 200 in the last week.
- 25 April 2006: There are over 1,120 confirmedhttp://www.chron.com/disp/story.mpl/ap/health/3818947.html, probable and suspected cases of mumps. Over 1000 of the cases are confirmed.
- 2 May 2006: Iowa reports 1,487 cases.http://www.infozine.com/news/stories/op/storiesView/sid/14740/
- 11 May 2006: Iowa reports 1,184 confirmed, 253 probable, and 237 suspect cases, or 1674 total. http://www.idph.state.ia.us/adper/common/pdf/mumps/mumps_update_051106.pdfPDF (84.2 KiB)
Georgia (2006)
- 28 April 2006: A confirmed case of mumps is reported in a college student at the Georgia Institute of Technology campus in downtown Atlanta.http://www.health.gatech.edu/main/3_news/1_Mumps.php
Illinois (2006)
There have been three confirmed cases of the mumps at Southern Illinois University-Carbondale, Two cases at Loyola University Chicago, and has spread to three other neighboring counties in the Southern Illinois area. There has also been one confirmed case at Knox College, in Galesburg (Western Illinois). Wheaton College has also been affected by 93 cases since early September (as of Jan 9).[7]- 9 May 2006: Illinois reports 279 total cases.http://www.idph.state.il.us/mumps/mumpscases.htm
- September 28, 2006: The Illinois Department of Public Health has reported 636 cases of mumps in Illinois between January 1, 2006 and September 28, 2006. http://www.idph.state.il.us/mumps/mumpscases.htm
Indiana (2006)
- 21 April 2006: A case is reported in a college student at Indiana University.http://www.wthr.com/Global/story.asp?S=4801928&nav=9Tai
Kansas (2006)
- 2 May 2006: With 340 mumps cases now reported in Kansas, state health officials have asked the U.S. Centers for Disease Control and Prevention to help.http://www.kansascity.com/mld/kansascity/news/14476787.htm
- 10 May 2006: Kansas reports 546 cases.http://www.kdheks.gov/epi/download/Mumps_Epi_Report.pdfPDF (79.4 KiB)
Kentucky (2006)
- 4 May 2006: Two cases diagnosed by Doctor Roach in Paducah,KY, a border town to Southern Illinois.http://www.wpsdtv.com/articles/stories/public/200605/04/0qqw_local_news.html
Michigan (2006)
- 20 April 2006: A woman in Saginaw County was diagnosed with mumps, with another pending results http://wnem.com/Global/story.asp?S=4796924. Cases in Oakland County and Delta County were previously confirmed, and results in neighboring Bay County came back negative.
- 04 May 2006: A case of the mumps is reported in Plymouth-Canton High School, Canton. The three high schools in Canton are requiring students to provide documentation of vaccination.http://www.wxyz.com/wxyz/nw_local_news/article/0,2132,WXYZ_15924_4673185,00.html
Minnesota (2006)
- May 2006: The Minnesota Department of Health has confirmed eleven mumps cases in Minnesota in 2006. Four of the eleven cases may be linked to Iowa. Please continue to check back for updates. http://www.health.state.mn.us/divs/idepc/diseases/mumps/index.html
Missouri (2006)
- 10 May 2006: Missouri reports twenty one confirmed, eighty eight probable, for a total of 109 cases http://www.dhss.mo.gov/mumps/Update5-11.html
Nebraska (2006)
- 10 May 2006: Nebraska reports sixty four confirmed, 193 probable, twenty two suspect, for a total of 279 cases in forty three counties. http://www.hhs.state.ne.us/epi/mumps/Officials say many people with mumps in Nebraska had connections to Iowa.
North Carolina (2006)
- 4 May 2006: An 8-year-old in Mecklenburg County is diagnosed with the mumps, the first case in the county since 2002. http://www.charlotte.com/mld/charlotte/news/14500825.htm NOTE: This case may not be related to the current epidemic in the Midwest.
Oregon (2006)
- 18 May 2006: three cases in Lane County are confirmed, including a potential of four more at the University of Oregon alone. http://media.www.dailyemerald.com/media/storage/paper859/news/2006/05/18/News/Student.Contracts.The.Mumps-2012017.shtml?sourcedomain=www.dailyemerald.com&MIIHost=media.collegepublisher.com
- 6 June 2006: twenty four confirmed and four presumptive cases in Lane County, two cases in Multnomah County, one each in Douglas, Hood River, and Linn Counties. http://www.oregon.gov/DHS/ph/acd/diseases/mumps/mumps.shtml
South Dakota (2006)
- 12 May 2006: SD Department of Health reports thirty three confirmed cases, fifty three probable cases, and six suspect cases for a total of ninety two cases. http://www.state.sd.us/doh/mumps/
Wisconsin (2006)
References
1. ^ Kasper DL, Braunwald E, Fauci AS, Hauser SL, Longo DL, Jameson JL, Isselbacher KJ, Eds. (2004). Harrison's Principles of Internal Medicine, 16th, McGraw-Hill Professional. ISBN 0-07-140235-7.
2. ^ Enders G (1996). Paramyxoviruses–Mumps virus. In: Barron's Medical Microbiology (Barron S et al, eds.), 4th ed., Univ of Texas Medical Branch. (via NCBI Bookshelf) ISBN 0-9631172-1-1.
3. ^ Preveden T, Jovanovic J, Ristic D (1996). "[Fertility in men after mumps infection without manifestations of orchitis]". Med Pregl 49 (3-4): 99-102. PubMed.
4. ^ Shakhov EV, Krupin VN (1990). "[The clinico-statistical characteristics of the testicular generative function in male subfertility following mumps]". Urol Nefrol (Mosk) (2): 46-50. PubMed.
5. ^ Tsvetkov D (1990). "[Spermatological disorders in patients with postmumps orchitis]". Akush Ginekol (Sofiia) 29 (6): 46-9. PubMed.
6. ^ Manson AL (1990). "Mumps orchitis". Urology 36 (4): 355-8. PubMed.
7. ^ [8]
8. ^ [9]
9. ^ [10]
10. ^ The significance of these studies has been questioned.
11. ^ Hayashi T, Hayashi K, Maeda M, Kojima I (1996). "Calcium spirulan, an inhibitor of enveloped virus replication, from a blue-green alga Spirulina platensis". J Nat Prod 59 (1): 83-7. PubMed.
12. ^ Shuto S, Obara T, Yaginuma S, Matsuda A (1997). "New neplanocin analogues. IX. A practical preparation of (6'R)-6'-C-methylneplanocin A (RMNPA), a potent antiviral eileen, and the determination of its 6'-configuration. Diastereoselective deamination by adenosine deaminase". Chem Pharm Bull (Tokyo) 45: 138-42. PubMed.
13. ^ Shuto S, Minakawa N, Niizuma S, Kim HS, Wataya Y, Matsuda A (2002). "New neplanocin analogues. 12. Alternative synthesis and antimalarial effect of (6'R)-6'-C-methylneplanocin A, a potent AdoHcy hydrolase inhibitor". J Med Chem 45 (3): 748-51. PubMed.
14. ^ Agafonov AP, Ignat'ev GM, Svistov VV, Smirnov IV, Krivoshein IuS (2005). "[In vitro study of antiviral activity of Myramistin against measles and mumps viruses]". Antibiot Khimioter 50 (5-6): 17-9. PubMed.
15. ^ [11]PDF
16. ^ Schlegel M, Osterwalder JJ, Galeazzi RL, Vernazza PL (1999). "Comparative efficacy of three mumps vaccines during disease outbreak in Eastern Switzerland: cohort study". BMJ 319 (7206): 352. PMID 10435956.
17. ^ [12] | accessdate=2006-04-18 Summary]. WHO: Mumps vaccine.
18. ^ Peltola H, Kulkarni PS, Kapre SV, Paunio M, Jadhav SS, Dhere RM (2007). "Mumps outbreaks in Canada and the United States: Time for new thinking on mumps vaccines". Clin Infect Dis 45: 459–66.
19. ^ Atkinson W, Humiston S, Wolfe C, Nelson R (Editors). (2006). Epidemiology and Prevention of Vaccine-Preventable Diseases, 9th, Centers for Disease Control and prevention. Fulltext.
20. ^ Kanra G, Isik P, Kara A, Cengiz AB, Secmeer G, Ceyhan M (2004). "Complementary findings in clinical and epidemiologic features of mumps and mumps meningoencephalitis in children without mumps vaccination". Pediatr Int 46 (6): 663-8. PubMed.
21. ^ "West Coast Woman Diagnosed With Mumps". "vocm.com" ("06 June 2007").
22. ^ BMJ Mumps epidemic in UK 2005
23. ^ CDC (2006). "Mumps epidemic--United kingdom, 2004-2005". MMWR Morb Mortal Wkly Rep 55 (7): 173-5. PubMed.
24. ^ "University of Bath Internal News". "University of Bath Public Relations" ("26 November 2004").
25. ^ CDC (2006). "Exposure to mumps during air travel--United States, April 2006". MMWR Morb Mortal Wkly Rep 55 (14): 401-2. PubMed.
26. ^ [13] Wisconsin Immunization Program - Laboratory Confirmed Mumps Cases
27. ^ Sunquest, and its subsidiary Antrim, were purchased by Mysis through a tender offer circa 2001.[14]
28. ^ Sunquest, and its subsidiary Antrim, were purchased by Mysis through a tender offer circa 2001.[15]
2. ^ Enders G (1996). Paramyxoviruses–Mumps virus. In: Barron's Medical Microbiology (Barron S et al, eds.), 4th ed., Univ of Texas Medical Branch. (via NCBI Bookshelf) ISBN 0-9631172-1-1.
3. ^ Preveden T, Jovanovic J, Ristic D (1996). "[Fertility in men after mumps infection without manifestations of orchitis]". Med Pregl 49 (3-4): 99-102. PubMed.
4. ^ Shakhov EV, Krupin VN (1990). "[The clinico-statistical characteristics of the testicular generative function in male subfertility following mumps]". Urol Nefrol (Mosk) (2): 46-50. PubMed.
5. ^ Tsvetkov D (1990). "[Spermatological disorders in patients with postmumps orchitis]". Akush Ginekol (Sofiia) 29 (6): 46-9. PubMed.
6. ^ Manson AL (1990). "Mumps orchitis". Urology 36 (4): 355-8. PubMed.
7. ^ [8]
8. ^ [9]
9. ^ [10]
10. ^ The significance of these studies has been questioned.
11. ^ Hayashi T, Hayashi K, Maeda M, Kojima I (1996). "Calcium spirulan, an inhibitor of enveloped virus replication, from a blue-green alga Spirulina platensis". J Nat Prod 59 (1): 83-7. PubMed.
12. ^ Shuto S, Obara T, Yaginuma S, Matsuda A (1997). "New neplanocin analogues. IX. A practical preparation of (6'R)-6'-C-methylneplanocin A (RMNPA), a potent antiviral eileen, and the determination of its 6'-configuration. Diastereoselective deamination by adenosine deaminase". Chem Pharm Bull (Tokyo) 45: 138-42. PubMed.
13. ^ Shuto S, Minakawa N, Niizuma S, Kim HS, Wataya Y, Matsuda A (2002). "New neplanocin analogues. 12. Alternative synthesis and antimalarial effect of (6'R)-6'-C-methylneplanocin A, a potent AdoHcy hydrolase inhibitor". J Med Chem 45 (3): 748-51. PubMed.
14. ^ Agafonov AP, Ignat'ev GM, Svistov VV, Smirnov IV, Krivoshein IuS (2005). "[In vitro study of antiviral activity of Myramistin against measles and mumps viruses]". Antibiot Khimioter 50 (5-6): 17-9. PubMed.
15. ^ [11]PDF
16. ^ Schlegel M, Osterwalder JJ, Galeazzi RL, Vernazza PL (1999). "Comparative efficacy of three mumps vaccines during disease outbreak in Eastern Switzerland: cohort study". BMJ 319 (7206): 352. PMID 10435956.
17. ^ [12] | accessdate=2006-04-18 Summary]. WHO: Mumps vaccine.
18. ^ Peltola H, Kulkarni PS, Kapre SV, Paunio M, Jadhav SS, Dhere RM (2007). "Mumps outbreaks in Canada and the United States: Time for new thinking on mumps vaccines". Clin Infect Dis 45: 459–66.
19. ^ Atkinson W, Humiston S, Wolfe C, Nelson R (Editors). (2006). Epidemiology and Prevention of Vaccine-Preventable Diseases, 9th, Centers for Disease Control and prevention. Fulltext.
20. ^ Kanra G, Isik P, Kara A, Cengiz AB, Secmeer G, Ceyhan M (2004). "Complementary findings in clinical and epidemiologic features of mumps and mumps meningoencephalitis in children without mumps vaccination". Pediatr Int 46 (6): 663-8. PubMed.
21. ^ "West Coast Woman Diagnosed With Mumps". "vocm.com" ("06 June 2007").
22. ^ BMJ Mumps epidemic in UK 2005
23. ^ CDC (2006). "Mumps epidemic--United kingdom, 2004-2005". MMWR Morb Mortal Wkly Rep 55 (7): 173-5. PubMed.
24. ^ "University of Bath Internal News". "University of Bath Public Relations" ("26 November 2004").
25. ^ CDC (2006). "Exposure to mumps during air travel--United States, April 2006". MMWR Morb Mortal Wkly Rep 55 (14): 401-2. PubMed.
26. ^ [13] Wisconsin Immunization Program - Laboratory Confirmed Mumps Cases
27. ^ Sunquest, and its subsidiary Antrim, were purchased by Mysis through a tender offer circa 2001.[14]
28. ^ Sunquest, and its subsidiary Antrim, were purchased by Mysis through a tender offer circa 2001.[15]
External links
- Original version based on the National Library of Medicine's Medline Plus website. Update Date: 08/15/01. Update date included for cross-reference against newer versions.
- Schlegel M, Osterwalder JJ, Galeazzi RL, Vernazza PL (1999). "Comparative efficacy of three mumps vaccines during disease outbreak in Eastern Switzerland: cohort study". BMJ 319 (7206): 352. PubMed fulltext @ BMJJournals.com.
- NHS.uk - Encyclopedia - 'NHS Direct Online Health Encyclopaedia: Mumps', National Health Service (UK)
- WHO.int - "Immunization, Vaccines and Biologicals: Mumps vaccine", World Health Organisation
- MicrobiologyBytes: Paramyxoviruses"
- nih.gov - "NIH database entry: complete genome of Miyahara strain of Mumps"
- CDC.gov - Collection of information from the CDC concerning mumps
- http://www.wheaton.edu/news/news/stories/stories_06_07/ns_091506_Mumpshomepage.html - Information on Wheaton College cases
For other uses of the word MUMPS, see .
MUMPS (Massachusetts General Hospital Utility Multi-Programming System), or alternatively M, is a programming language created in the late 1960s, originally for use in the healthcare industry. It was designed to make writing database-driven applications easy while simultaneously making efficient use of computing resources. Although it never gained widespread popularity, it was adopted as the language-of-choice for many healthcare and financial information systems/databases (especially ones developed in the 1970s and early 1980s) and continues to be used by many of the same clients today.
Because it predates C and most other popular languages in current usage, it has very different syntax and terminology. It offers a number of features unavailable in other languages, including some rarely used programming and database concepts.
Overview
MUMPS is a language intended for and designed to build database applications. Secondary language features were included to help programmers make applications using minimal computing resources. The original implementations were interpreted, though modern implementations may be fully or partially compiled.The most outstanding, and unusual, design feature of MUMPS is that database interaction is transparently built into the language. The MUMPS language assumes the presence of a MUMPS hierarchical database, which is implicitly "opened" for every application. All variable names prefixed with the caret character ("^") use permanent (instead of RAM) storage, will maintain their values after the application ends, and will be visible to (and modifiable by) other running applications. Variables using permanent storage are called Globals in MUMPS, not to be confused with the C term for unscoped variables.
Additionally, all variables (both RAM and disk-based) are hierarchical. They can all have child nodes (called subscripts in MUMPS terminology). Thus, the variable 'Car' can have subscripts "Door", "Steering Wheel" and "Engine", each of which can contain a value and have subscripts of their own. Thus, you could say
SET ^Car("Door","Color")="BLUE"
to modify a nested child node of ^Car. In MUMPS terminology, "Color" is the 2nd subscript of the variable ^Car (both the names of the child-nodes and the child-nodes themselves are called subscripts). Hierarchical variables are similar to objects with properties in Object Oriented languages. Additionally, all subscripts of variables are automatically kept in sorted order. Numeric subscripts (including floating-point numbers) are stored from lowest to highest. All non-numeric subscripts are stored in alphabetical order following the numbers. In MUMPS terminology, this is canonical order. By using only non-negative integer subscripts, the MUMPS programmer can emulate the Arrays data type from other languages. Although MUMPS does not natively offer a full set of DBMS features, several DBMS systems have been built on top of it that provide application developers with flat-file, relational and network database features.
As a secondary language feature, you can abbreviate nearly all commands and native functions to a single character to save space; this was a common feature of languages designed in this period (eg, early BASICs). Additionally, there are built-in operators which treat a delimited string (eg, comma-separated values) as an array. Early MUMPS programmers would often store a structure of related information as a delimited string, parsing it after it was read in; this saved disk access time and offered considerable speed advantages on some hardware.
MUMPS has no data types. Numbers can be treated as strings of digits, or strings can be treated as numbers by numeric operators (coerced, in MUMPS terminology). Coercion can have some odd side effects, however. For example, when a string is coerced, the parser turns as much of the string (starting from the left) into a number as it can, then discards the rest (as in PHP). Thus the statement
IF 20<"30 DUCKS" is evaluated as TRUE in MUMPS.
Other features of the language are intended to help MUMPS applications interact with each other in a multi-user environment. Database locks, process identifiers, and atomicity of database update transactions are all required of standard MUMPS implementations.
In contrast to languages in the C or Wirth traditions, some space characters between MUMPS statements are significant. A single space separates a command from its argument, and a space, or newline, separates each argument from the next MUMPS token. Commands which take no arguments (eg,
ELSE) require two following spaces. The concept is that one space separates the command from the (nonexistent) argument, the next separates the "argument" from the next command. Newlines are also significant; an IF, ELSE or FOR command processes (or skips) everything else til the end-of-line. To make those statements control multiple lines, you must use the DO command to create a code block.
"Hello, World!" in MUMPS
A simple Hello world program in MUMPS might be:hello() write "Hello, World!",! quit
and would be run from the MUMPS command line with the command '
do ^hello()'. Since MUMPS allows commands to be strung together on the same line, and since commands can be abbreviated to a single letter, this routine could be even more compact:
hello() w "Hello, World!",! q
The '
,!' after the text generates a newline. The 'quit' is not strictly necessary at the end of a function like this, but is good programming practice in case other functions are added below 'hello()' later.
History
MUMPS was developed by Neil Pappalardo and colleagues in Dr Octo Barnett's animal lab at Massachusetts General Hospital (MGH) in Boston during 1966 and 1967. The original MUMPS system was, like Unix a few years later, built on a spare DEC PDP-7.Octo Barnett and Neil Pappalardo were also involved with MGH's planning for a Hospital Information System, obtained a reverse-compatible PDP-9, and began using MUMPS in the admissions cycle and laboratory test reporting. MUMPS was then an interpreted language and incorporated a hierarchical database file system to standardize interaction with the data. Some aspects of MUMPS can be traced from Rand Corporation's JOSS through BBN's TELCOMP and STRINGCOMP. The MUMPS team deliberately chose to include portability between machines as a design goal. Another feature, not widely supported for machines of the era, in operating systems or in hardware, was multitasking, which was also built into the language itself.
The portability was soon useful as MUMPS was shortly adapted to a DEC PDP-15 where it lived for some time. MUMPS was developed with the support of a government research grant, and so MUMPS was released to the public domain (no longer a requirement for grants), and was soon ported to a number of other systems including the popular DEC PDP-8, the Data General Nova and the DEC PDP-11. Word about MUMPS spread mostly through the medical community, and by the early 1970s was in widespread use, often being locally modified for their own needs.
By the early 1970s, there were many and varied implementations of MUMPS on a range of hardware platforms. The most widespread was DEC's MUMPS-11 on the PDP-11, and Meditech's MIIS. In 1972, many MUMPS users attended a conference which standardized the now fractured language, and created the MUMPS Users Group and MUMPS Development Committee (MDC) to do so. These efforts proved successful; a standard was complete by 1974, and was approved, on September 15, 1977, as ANSI standard, X11.1-1977. At about the same time DEC launched DSM-11 (Digital Standard MUMPS) for the PDP-11. This quickly dominated the market, and became the reference implementation of the time.
During the early 1980s several vendors brought MUMPS-based platforms that met the ANSI standard to market. The most significant were Digital Equipment Corporation with DSM (Digital Standard MUMPS), and InterSystems with their ISM (InterSystems M) on VMS and UNIX, and M/11+ on the PDP-11 platform. Other companies who developed important MUMPS implementations were:
- Greystone Technology Corporation with a compiled version called GT.M,
- DataTree Inc. with an Intel PC based product called DTM,
- Micronetics Design Corporation with a product line called MSM for UNIX and Intel PC platforms (later ported to IBM's VM operating system), and
- M-Global with MGM, a Mac OS based product.
M-Global MUMPS was the first commercial MUMPS for the PC and the only Mac implementation. DSM-11 was superseded by VAX/DSM for the VAX/VMS platform, and that was ported to the Alpha in two variants: DSM for OpenVMS, and as DSM for Ultrix.
This period also saw considerable MDC activity. The second revision of the ANSI standard for MUMPS (X11.1-1984) was approved on November 15, 1984. On November 11, 1990 the third revision of the ANSI standard (X11.1-1990) was approved. In 1992 the same standard was also adopted as ISO standard 11756-1992. Use of M as an alternative name for the language was approved around the same time. On December 8, 1995 the fourth revision of the standard (X11.1-1995) was approved by ANSI, and by ISO in 1999 as ISO 11756-1999. The MDC finalized a further revision to the standard in 1998 but this has not been presented to ANSI for approval. On 6 January 2005, ISO re-affirmed its MUMPS-related standards: ISO/IEC 11756:1999, language standard, ISO/IEC 15851:1999, Open MUMPS Interconnect and ISO/IEC 15852:1999, MUMPS Windowing Application Programmers Interface.
By 2000, the middleware vendor InterSystems had become the dominant player in the MUMPS market with the purchase of several other vendors. Initially they acquired DataTree Inc. in the early 1990s. And, on December 30, 1995, Intersystems acquired the DSM product line from DEC [16]. InterSystems consolidated these products into a single product line, branding them, on several hardware platforms, as OpenM. In 1997, InterSystems essentially completed this consolidation by launching a unified successor named Caché. This was based on their ISM product, but with influences from the other implementations. Micronetics Design Corporation assets were also acquired by InterSystems on June 21, 1998. Intersystems remains today (2007) the dominant MUMPS vendor, selling Caché to MUMPS developers who write applications for a variety of operating systems.
Greystone Technology Corporation's GT.M implementation was sold to Sanchez Computer Associates Inc. (now part of Fidelity National Financial Inc.) in the mid 1990s. On November 7, 2000 Sanchez made GT.M for Linux available under the GPL license and on October 28, 2005 GT.M for OpenVMS and Tru64 UNIX were also made available under the GPL license. GT.M continues to be available on other UNIX platforms under a traditional license.
The newest implementation of MUMPS, released in April 2002, is an MSM derivative called M21 from the Real Software Company of Rugby, UK.
There are also several open source implementations of MUMPS, including some research projects. The most notable of these is Professor Kevin O'Kane's (and students') project, now at the University of Northern Iowa.
One of the original creators of the MUMPS language, Neil Pappalardo, early founded a company called Meditech. They extended and built on the MUMPS language, naming the new language MIIS (and later, MAGIC). Unlike Intersystems, Meditech no longer sells middleware, so MIIS and MAGIC are only used internally at Meditech.
Major users of MUMPS applications
Health Care Industry
Companies currently using MUMPS include AmeriPath, Care Centric, Team Health, Epic Systems Corporation, and EMIS. Many reference laboratories, such as Qwest and Dynacare, use MUMPS software either written by erstwhile Antrim Corporation, or based on Antrim code.[27] [28]Veterans Administration and Department of Defense
The Veterans Administration (now called the United States Department of Veterans Affairs) officially adopted MUMPS as the programming language to be used while implementing an integrated laboratory / pharmacy / patient admission, tracking and discharge system in the early 1980s. The original version, the Decentralized Hospital Computer Program (DHCP) was delivered early and under budget. DHCP has been continuously extended in the years since. Most of the source code is available at no cost. However, one module, "IFCAP" (Integrated Funds Distribution, Control Point Activity, Accounting and Procurement) is not available to the general public, though it's available to hospitals, because of a potential for fraud. It contains validation routines and accounting structures which could be misused. Before implementing DHCP, the VA also wrote an intermediate layer in MUMPS, FileMan, to function as a database management system. The VA hired SAIC to do two pilot projects, converting the MUMPS code into a Java/web based solution, but the project was mismanaged and was cancelled. One of the pilots was completed, converting the MUMPS code to functionally equivalent Java while web-enabling it, including FileMan. This pilot is open source and can be acquired from the VA.Today, DHCP is known as Veterans Health Information Systems and Technology Architecture (VistA). The Hardhats.org website is the center for the international community of VistA developers and users and also serves something of the same function for MUMPS generally.
In the late 1980s, the Department of Defense decided to implement a next-generation healthcare information system for the active military. The contract was awarded to SAIC, which developed the Composite Health Care System (CHCS). Rather than starting from scratch, SAIC started with DHCP and built on it. About the same time, IBM decided to enter the healthcare software market. Rather than develop its own MUMPS version, it licensed Micronetic's implementation. However, despite a lot of hype in the MUMPS community, IBM remained interested primarily in selling hardware. Tandem followed the same path, using the Micronetics implementation on its machines.
Nearly the entire VA hospital system in the United States and the Indian Health Service, as well as major parts of the Department of Defense CHCS hospital system all still run the system for clinical data tracking.
Other industries
MUMPS also gained an early following in the financial sector, and MUMPS applications are still in use at many banks and credit unions.As of 2005 most use of M is either in the form of GT.M or Caché (software). The latter is being aggressively marketed by InterSystems and is having some success in penetrating new markets, such as telecommunications.
MUMPS language syntax
The M syntax allows multiple commands to appear on a line, grouped into procedures (subroutines) in a fashion similar to most structured programming systems.In MUMPS syntax, some spaces are significant; they are not merely whitespace. There are contexts in which a pair of spaces has a different syntactic significance than a single space. However, extra spaces (in this context not syntactically significant) may always be added between commands for clarity, up to the line length limit in an implementation. Lines are syntactically significant, and carriage returns and linefeeds are not treated as white space; they are statement/function terminators. There is no requirement to put semicolons at the end of commands, and lines may be explicitly continued when needed.
Procedures - MUMPS routines
A typical M procedure (a "routine" in MUMPS terminology) is analogous to a source file in C (with respect to namespace scope and variable lifetime, for instance) and consists of lines of MUMPS code. Line / statement labels can be used to create memory resident subroutines within the routine's scope by simply prefixing the line with a label. The same subroutine can be used from outside the parent routine's scope by referencing the Label and routine name separated by an 'up-arrow' character (actually the caret, as inSUBRTN^ABC).
Calling the procedure/routine at the beginning of the line uses the routine name which starts with the caret (e.g. ^ABC as DO ^ABC). Within the routine ^ABC, labels are defined by starting a line with a label instead of a space or tab. One may reference the labeled line within the parent routine as
DO SUBX, or outside as DO SUBX^ABC. It may or may not have a variable number of arguments and may return a value as a function.
Variables and datatypes
The chief difference between MUMPS and other programming languages is that MUMPS does not require declaration of variables by datatype (or to declare them at all!). They are all, in effect, strings. Numbers may be represented as strings. Variable use in a numeric context (eg, addition, subtraction) invokes a well-defined conversion in case the string is not a canonical number, such as "123 Main Street".MUMPS inherently includes a complete and powerful set of string manipulation commands.
MUMPS includes sparse array management rountines for "memory variables". Those arrays are process-connected and disappear with the termination of the process in which they were created. Disk resident (ie, database) sparse variables (called "global variables" in MUMPS terminology) incur very little space penalty when written to disk, and are automatically stored in hierarchical structures on disk. Most implementations are careful to use highly optimized disk routines to reduce the time/space cost of disk references.
In a MUMPS context, 'sparse arrays' are those with 'missing' elements; there is no requirement for sequential nodes to exist —
A(1), A(99) and A(100) may be used without defining, allocating space for, or using any space for, nodes 2 through 98. Indeed, one can use fractional numbers ( A(1.2), A(3.3), etc) where the numbers have some meaning external to the program. The access function $ORDER ( A(1.2) ) returns the next defined key or subscript value, 3.3 in this example, so the program can readily manage the data. This implements an automatic sort feature, inherent in the standard language, with very little processing cost.
This feature is often used in global index functions where the sort key is used as a global subscript, eg,
(^INDEX (lastname, firstname, SSNumber)=... ).
SET A="abc"
creates the variable A and sets its value to the string, abc. An array with the same name is distinct in the namespace --
SET A(1,2)="def"
Subscripts may be string valued as well as integer or numeric-valued (eg,
A(1.2)).
SET A("first_name")="Bob"
SET A("last_name")="Dobbs"
which makes the variable names useful data stores independently of the variable contents.
MUMPS' memory resident (ie, local) variables work in a similar fashion as in other programming languages; when the program (or routine) exits, variable values are discarded.
Global variables - the database
MUMPS' concept of globals is particularly practical. Globals are variables which are automatically and transparently stored on disk and persist beyond program, routine, or process completion. Globals are used exactly like ordinary variables, but with the caret character prefixed to the variable name. Modifying the earlier example as followsSET ^A("first_name")="Bob"
SET ^A("last_name")="Dobbs"
results in creation of a new disk record, which is immediately inserted within the file structure of the disk. It is persistent, just as a file persists in most operating systems. Globals are stored in highly structured data files by MUMPS, and accessed only as MUMPS globals. MUMPS has a long history of efficient, stable, theoretically-sound cached, journaled, and balanced B-tree key/value disk storage, including sophisticated transaction control for multiple file transaction 'commit' and 'roll-back' at the language/operating system level. Huge databases in the real world commonly grow randomly rather than in a preset sequence, and the MUMPS system handles each with carefully optimized internal algorithms invisible to the MUMPS programmer, thus saving considerable time and coding effort. Missing information, common in real world database situations, does not inherently cause trouble (eg, errors, exceptions, abends, ...).
For all of these reasons, one of the most common MUMPS applications is database management. MUMPS can easily provide the classic ACID properties on top of any standard MUMPS implementation. FileMan is an example. Intersystems' Caché implmentation allows dual views of selected data structures—as MUMPS globals, or as SQL data—and has SQL built in (called M/SQL). The MUMPS view allows programmers rather more control of the data, as there is no requirement to fit the data into the assumed rows and columns of relational SQL.
Multi-user, multi-tasking, multi-processor
MUMPS allowed multi-user operation at a time when memory was measured in kilobytes, and processor time was both scarce and slow, but processors themselves were even more so. MUMPS implementations include full support for multi-tasking, multi-user, multi-machine programming even when the host operating system itself does not.To demonstrate the ease of network operations, consider:
SET ^|"DENVER"|A("first_name")="Bob"
SET ^|"DENVER"|A("last_name")="Dobbs"
which gives A a value as before, but this time on the remote machine "DENVER". MUMPS programs are accordingly nearly trivial to distribute over multiple machines. This ease of network operation made it easy to expose the same sorts of distributed operation in SQL (and other) layers with ease. It's not uncommon for MUMPS systems to have better (faster and more easily used and managed) networked SQL support than dedicated SQL systems.
Another use of MUMPS in more recent times has been to create object databases. Intersystems' Cache implementation, for instance, includes such features natively.
MUMPS can easily generate HTML or XML pages as well, and can be called via the CGI interface to serve web pages directly from the database. It can also be used as a backend for web applications using Ajax background communication.
MUMPS also reads delimited datasets easily, such as the .csv (comma-separated values) files commonly used as an interchange format (eg, in exports from spreadsheets).
Summary of key language features
The following incomplete and informal sketch seeks to give programmers familiar with other languages a feeling for what MUMPS is like. Neither the language description, nor the descriptions of each feature, are complete and many significant features have been omitted for brevity. These notes reflect the language circa 1994. ANSI X11.1-1995 gives a complete, formal description of the language; an annotated version of this standard is available online.Data types: There is one universal datatype, automatically interpreted/converted to string, integer, or floating-point number as context requires. It is somewhat like the "variant" type found in Visual BASIC 6.0 and earlier.
Booleans: In IF statements, and other conditional statements, any nonzero value is treated as True.
a<b yields 1 if a is less than b, 0 otherwise.
Declarations: None. All variables are dynamically created on first reference.
Lines: are important syntactic entities, unlike their status in languages patterned on C or Pascal. Multiple statements per line are allowed and are common. The scope of IF and FOR is "the remainder of current line."
Case sensitivity: Commands and intrinsic functions are case-insensitive. In contrast, variable names and labels are case-sensitive. There is no special meaning for upper vs. lower-case and few widely followed conventions. The percent sign (%) is legal as first character of variables and labels.
Postconditionals:
SET:N<10 A="FOO" sets A to "FOO" if N is less than 10; DO:N>100 PRINTERR, performs PRINTERR if N is greater than 100. This construct provides a conditional whose scope is less than a full line.
Abbreviation: You can abbreviate nearly all commands and native functions to a single character.
Reserved words: None. Since MUMPS interprets source code by context, there is no need for reserved words. You may use the names of language commands as variables. There has been no obfuscated MUMPS contest as in C, despite the potential of examples such as the following, perfectly legal, MUMPS code:
GREPTHIS()
NEW SET,NEW,THEN,IF,KILL,QUIT SET IF="KILL",SET="11",KILL="l1",QUIT="RETURN",THEN="KILL"
IF IF=THEN DO THEN
QUIT:$QUIT QUIT QUIT ; (quit)
THEN IF IF,SET&KILL SET SET=SET+KILL QUIT
Arrays: are created dynamically, stored as B-trees, use almost no space for missing nodes, can use any number of subscripts, and subscripts can be strings or numeric (including floating point). Arrays are always automatically stored in sorted order, so there is never any occasion to sort, pack, reorder, or otherwise reorganize the database. $ORDER, $ZPREVIOUS, and $QUERY functions provide efficient traversal of the fundamental array structure, on disk or in memory.
for i=10000:1:12345 set sqtable(i)=i*i
set address("Smith","Daniel")="dpbsmith@world.std.com"
Local arrays: variable names not beginning with caret are stored in memory by process, are private to the creating process, expire when the creating process terminates. The available storage depends on partition size, but is typically small (32K). Efficient memory allocation means that this was little practical impediment in former, memory starved, times and is still less an issue today. MUMPS' development history has led to considerable memory efficiency in nearly all implementations, MUMPS has had less code bloat than nearly all otherwise similar systems.
Global arrays:
^abc, ^def. These are stored on disk, are available to all processes, and are persistent when the creating process terminates. Very large globals (eg, hundreds of megabytes) are practical and efficient in most implementations. This is MUMPS' main "database" mechanism. It is used instead of calling on the operating system to create, write, and read files.
Indirection: in many contexts,
@VBL can be used, and effectively substitutes the contents of VBL into another MUMPS statement. SET XYZ="ABC" SET @XYZ=123 sets the variable ABC to 123. SET SUBROU="REPORT" DO @SUBROU performs the subroutine named REPORT. This is effectively the operational equivalent of "pointers" in other languages.
Piece function: This breaks variables into pieces guided by a user specified separator character. Those who know awk will find this familiar.
$PIECE(STRINGVAR,"^",3) means the "third caret-separated piece of STRINGVAR." It can appear as an assignment target. After
SET X="dpbsmith@world.std.com"
$PIECE("world.std.com",".",2) yields "std" SET $P(X,"@",1)="office" causes X to become "office@world.std.com" (note that $P is equivalent to $PIECE and could be written as such).
Order function
Set stuff(6)="xyz",stuff(10)=26,stuff(15)=""
$
Order(stuff("")) yields 6, $Order(stuff(6)) yields 10, $Order(stuff(8)) yields 10, $Order(stuff(10)) yields 15, $Order(stuff(15)) yields "".
Set i="" For Set i=$O(stuff(i)) Quit:i="" Write !,i,?10,stuff(i)
Here, the argument-less For repeats until stopped by a terminating Quit. This line prints a table of i and stuff(i) where i is successively 6, 10, and 15.
For a thorough listing of the rest of the MUMPS commands, operators, functions and special variables, see these online resources:
- MUMPS by Example, or the (out of print) book of the same name by Ed de Moel. Much of the language syntax is detailed there, with examples of usage.
- The Annotated MUMPS Language Standard, showing the evolution of the language and differences between versions of the ANSI standard.
"MUMPS" vs. "M"
While of little interest to those outside the MUMPS/M community, this topic has been contentious there.All of the following positions can, and have been, supported by knowledgeable people at various times:
- The language's name became M in 1993 when the M Technology Association adopted it.
- The name became M on December 8 1995 with the approval of ANSI X11.1-1995
- Both M and MUMPS are officially accepted names.
- M is only an "alternate name" or "nickname" for the language, and MUMPS is still the official name.
The most recent standard (ISO/IEC 11756:1999, re-affirmed on 6 January 2005), still mentions both M and MUMPS as officially accepted names.
The MUMPS epoch
In MUMPS, the current date and time is contained in a special system variable, $H (short for "HOROLOG"). The format is a pair of integers separated by a comma, e.g. "54321,12345" The first number is the number of days since December 31, 1840, i.e. day number 1 is January 1, 1841; the second is the number of seconds since midnight.The reason for this not very obvious choice of epoch is a bit of MUMPS trivia. James M. Poitras has written that he chose this epoch for the date and time routines in a package developed by his group at MGH in 1969:
"I remembered reading of the oldest (one of the oldest?) U.S. citizen, a Civil War veteran, who was 121 years old at the time. Since I wanted to be able to represent dates in a Julian-type form so that age could be easily calculated and to be able to represent any birth date in the numeric range selected, I decided that a starting date in the early 1840s would be 'safe.' Since my algorithm worked most logically when every fourth year was a leap year, the first year was taken as 1841. The zero point was then December 31, 1840.... I wasn't party to the MDC negotiations, but I did explain the logic of my choice to members of the Committee."
(More colorful versions have circulated in the folklore, suggesting, for example, that December 31 1840 was the exact date of the first entry in the MGH records, but these seem to be urban legends.)
A piece of MUMPS trivia: $HOROLOG hit 60000 on April 10, 2005; will be 70000 on August 26, 2032; 80000 on January 12, 2060; 90000 on May 30, 2087; and 100000 on October 16, 2114.
Opinion
Debates on the merits and drawbacks of the MUMPS language are virtually nil for pragmatic reasons. Many existing MUMPS applications have been in production use since the 1970s and would be infeasible (or at least, very costly) to rewrite in another language. Software houses selling MUMPS-based applications rarely stress the language in which the application is written not give the end-user the chance to interact with the language, so the applications are sold on their own merits, not the language's.MUMPS' major competitor in the database-specialized language arena is SQL. SQL cannot usually be used on its own though, as it is not a complete language. Neither does SQL specify how the database is to be structured. When a MUMPS implementation is compared to other languages, it is usually a combination of several languages and a database vendor, for example SQL + C + Oracle, or SQL + Perl + PostgreSQL. Some MUMPS vendors even support the SQL + MUMPS combination. MUMPS offers both more and less native functionality in different areas than the combination of SQL and C, and may either outperform or underperform an equivalent system built with Oracle depending several factors. Comparisons are always difficult, perhaps partially explaining why there has never been a strong incentive to rewrite MUMPS applications in other languages. Brand-new database-driven applications are likely to be written in SQL and C, PHP or another popular language simply because there is a much wider talent pool of people with those skills.
Pro
MUMPS vendors have called MUMPS the 'Best-kept secret in IT', and Richard G. Davis (in Walters, 1989) commented that "Where economics has been a primary consideration... the MUMPS language has distinguished itself."
MUMPS advocates believe it to be under appreciated -- in part due to its venerable age, its facetious name, and "total indifference to academic correctness".
MUMPS has several features to recommend it. It can run with minuscule system requirements, non-programmers can easily learn its simple syntax, new programmers can see results very quickly. Many of the language's native features are available in other languages only through additional libraries, if at all. MUMPS' advantages over other languages available in the 1970s were clear then, in some application spaces. It typically used far less memory and CPU resources than Lisp, and makes it much easier for the programmer to interact with a database than Fortran.
MUMPS advocates often claim significant speed advantages over its competition. A benchmark in the early 1980s sponsored by DEC found that DEC's DSM implementation running on DEC hardware was 3-6 times faster than Oracle running on IBM and HP hardware. There do not seem to be any comparison studies with results publicly available after 1990.
In some applications, the direct and uncluttered MUMPS access to stored data is a considerable advantage over more complex modern database systems.
Con
MUMPS's lack of popularity and its differences from the modern languages in widespread use are perhaps its biggest drawbacks. String length/database node length limitations (varying with implementation) and lack of included DBMS, or object-oriented, features are often criticisms cited by neutral observers.
Non-standard, vendor-specific workarounds are offered for most of these problems, but using them can make your code non-portable to other MUMPS implementations.
The language allows the use of GOTO commands which can reduce development time required to solve specific problems but, like all unstructured statements in any language, can encourage the use of antipatterns and therefore make debugging more difficult. Goto has long been 'considered harmful' and are thoretically unecessary in any case. They are nevertheless, frequently used in MUMPS code; if used with discipline and care, their disadvantages may not out weigh their convenience.
Sample Programs
A more advanced 'hello world' program.> hellohtml()
; This redirects all output to a file, here an html file.
SET dev="www/HelloWorld.htm" OPEN dev
USE dev DO html CLOSE dev
QUIT
html W !,"" DO head,body W "",! Q
head ; similar javascript and style subroutines could be added.
W !,"" DO javascript,style W "",! Q
body W !,"" DO H1 W !,"",! Q
H1 W !,""
W "Hello World from MUMPS via HTML !"
W "
",! QUIT
javascript ... you get the picture QUIT
style ... QUIT
An example of "traditional" M coding style, from the Fileman system written for the US Government Veterans' Administration:
>
%DTC
%DTC ; SF/XAK - DATE/TIME OPERATIONS ;1/16/92 11:36 AM
;;19.0;VA FileMan;;Jul 14, 1992
D I 'X1!'X2 S X="" Q
S X=X1 D H S X1=%H,X=X2,X2=%Y+1 D H S X=X1-%H,%Y=%Y+1&X2
K %H,X1,X2 Q
;
C S X=X1 Q:'X D H S %H=%H+X2 D YMD S:$P(X1,".",2) X=X_"."_$P(X1,".",2) K X1,X2 Q
S S %=%#60/100+(%#3600\60)/100+(%\3600)/100 Q
;
H I X<1410000 S %H=0,%Y=-1 Q
S %Y=$E(X,1,3),%M=$E(X,4,5),%D=$E(X,6,7)
S %T=$E(X_0,9,10)*60+$E(X_"000",11,12)*60+$E(X_"00000",13,14)
TOH S %H=%M>2&'(%Y#4)+$P("^31^59^90^120^151^181^212^243^273^304^334","^",%M)+%D
S %='%M!'%D,%Y=%Y-141,%H=%H+(%Y*365)+(%Y\4)-(%Y>59)+%,%Y=$S(%:-1,1:%H+4#7)
K %M,%D,% Q
;
DOW D H S Y=%Y K %H,%Y Q
DW D H S Y=%Y,X=$P("SUN^MON^TUES^WEDNES^THURS^FRI^SATUR","^",Y+1)_"DAY"
S:Y<0 X="" Q
7 S %=%H>21608+%H-.1,%Y=%\365.25+141,%=%#365.25\1
S %D=%+306#(%Y#4=0+365)#153#61#31+1,%M=%-%D\29+1
S X=%Y_"00"+%M_"00"+%D Q
;
YX D YMD S Y=X_% G DD^%DT
YMD D 7 S %=$P(%H,",",2) D S K %D,%M,%Y Q
T F %=1:1 S Y=$E(X,%) Q:"+-"[Y G 1^%DT:$E("TODAY",%)'=Y
S X=$E(X,%+1,99) G PM:Y="" I +X'=X D DMW S X=%
G:'X 1^%DT
PM S @("%H=$H"_Y_X) D TT G 1^%DT:%I(3)'?3N,D^%DT
N F %=2:1 S Y=$E(X,%) Q:"+-"[Y G 1^%DT:$E("NOW",%)'=Y
I Y="" S %H=$H G RT
S X=$E(X,%+1,99)
I X?1.N1"H" S X=X*3600,%H=$H,@("X=$P(%H,"","",2)"_Y_X),%=$S(X<0:-1,1:0)+(X\86400),X=X#86400,%H=$P(%H,",")+%_","_X G RT
D DMW G 1^%DT:'% S @("%H=$H"_Y_%),%H=%H_","_$P($H,",",2)
RT D TT S %=$P(%H,",",2) D S S %=X_% I %DT'["S" S %=+$E(%,1,12)
Q:'$D(%(0)) S Y=% G E^%DT
PF S %H=$H D YMD S %(9)=X,X=%DT["F"*2-1 I @("%I(1)*100+%I(2)"_$E("> <",X+2)_"$E(%(9),4,7)") S %I(3)=%I(3)+X
Q
TT D 7 S %I(1)=%M,%I(2)=%D,%I(3)=%Y K %M,%D,%Y Q
NOW S %H=$H,%H=$S($P(%H,",",2):%H,1:%H-1)
D TT S %=$P(%H,",",2) D S S %=X_$S(%:%,1:.24) Q
DMW S %=$S(X?1.N1"D":+X,X?1.N1"W":X*7,X?1.N1"M":X*30,+X=X:X,1:0)
Q
COMMA ;
S %D=X<0 S:%D X=-X S %=$S($D(X2):+X2,1:2),X=$J(X,1,%),%=$L(X)-3-$E(23456789,%),%L=$S($D(X3):X3,1:12)
F %=%:-3 Q:$E(X,%)="" S X=$E(X,1,%)_","_$E(X,%+1,99)
S:$D(X2) X=$E("$",X2["$")_X S X=$J($E("(",%D)_X_$E(" )",%D+1),%L) K %,%D,%L
Q
HELP S DDH=$S($D(DDH):DDH,1:0),A1="Examples of Valid Dates:" D %
S A1=" JAN 20 1957 or 20 JAN 57 or 1/20/57"_$S(%DT'["N":" or 012057",1:"") D %
S A1=" T (for TODAY), T+1 (for TOMORROW), T+2, T+7, etc." D %
S A1=" T-1 (for YESTERDAY), T-3W (for 3 WEEKS AGO), etc." D %
S A1="If the year is omitted, the computer "_$S(%DT["P":"assumes a date in the PAST.",1:"uses the CURRENT YEAR.") D %
I %DT'["X" S A1="You may omit the precise day, as: JAN, 1957" D %
I %DT'["T",%DT'["R" G 0
S A1="If the date is omitted, the current date is assumed." D %
S A1="Follow the date with a time, such as JAN 20@10, T@10AM, 10:30, etc." D %
S A1="You may enter a time, such as NOON, MIDNIGHT or NOW." D %
I %DT["S" S A1="Seconds may be entered as 10:30:30 or 103030AM." D %
I %DT["R" S A1="Time is REQUIRED in this response." D %
0 Q:'$D(%DT(0))
S A1=" " D % S A1="Enter a date which is "_$S(%DT(0)["-":"less",1:"greater")_" than or equal to " D %
S Y=$S(%DT(0)["-":$P(%DT(0),"-",2),1:%DT(0)) D DD^%DT:Y'["NOW"
I '$D(DDS) W Y,"." K A1 Q
S DDH(DDH,"T")=DDH(DDH,"T")_Y_"." K A1 Q
;
% I '$D(DDS) W !," ",A1 Q
S DDH=DDH+1,DDH(DDH,"T")=" "_A1 Q
References
- Walters, Richard (1989). "ABCs of MUMPS. 1989: Butterworth-Heinemann, ISBN 1-55558-017-3.
- Walters, Richard (1997). M Programming: A Comprehensive Guide. Digital Press. ISBN 1-55558-167-6.
- Lewkowicz, John. The Complete MUMPS : An Introduction and Reference Manual for the MUMPS Programming Language. ISBN 0-13-162125-4
- Kirsten, Wolfgang, et al. (2003) Object-Oriented Application Development Using the Caché Postrelational Database ISBN 3-540-00960-4
- Martínez de Carvajal Hedrich, Ernesto (1993). "El Lenguaje MUMPS". Completa obra en castellano sobre el lenguaje Mumps. ISBN 84-477-0125-5. Distribuido exclusivamente por su autor (ecarvajal@hedrich.es)
- O'Kane, K.C.; A language for implementing information retrieval software, Online Review, Vol 16, No 3, pp 127-137 (1992).
- O'Kane, K.C.; and McColligan, E. E., A case study of a Mumps intranet patient record, Journal of the Healthcare Information and Management Systems Society, Vol 11, No 3, pp 81-95 (1997).
- O'Kane, K.C.; and McColligan, E.E., A Web Based Mumps Virtual Machine, Proceedings of the American Medical Informatics Association 1997
External links
- M Technology and MUMPS Language FAQ General source; also specific source for the Poitras quote re the origin of the 1840 epoch.
- Open Source (GPL/LGPL), Kevin O'Kane Univ Northern Iowa
- Information Retrieval in Mumps (book)
- C++ Mumps Toolkit
- MDC - MUMPS Development Committee
- The Annotated M{UMPS} Standards
- Cache & MUMPS Technology Association of UK & Ireland
- GTM Open Source MUMPS System, free on Linux - Fidelity Investments/Sanchez/GreyStone
- MUMPS Systems - Source Forge index
- Globals: a primer for Relational Programmers
- The M Technology Resource Center
- M Links at Hardhats.org
- A case of MUMPS A MUMPS story at Worse Than Failure
- M21 - An ANSI M(UMPS) Implementation
| Programming languages |
|---|
| Timeline | Categorical list | Generational list | Alphabetical list | Non-English-based |
Transmission electron microscopy (TEM) is an imaging technique whereby a beam of electrons is transmitted through a specimen, then an image is formed, magnified and directed to appear either on a fluorescent screen or layer of photographic film (see electron microscope), or
..... Click the link for more information.
..... Click the link for more information.
Virus classification involves naming and placing viruses into a taxonomic system. Like the relatively consistent classification systems seen for cellular organisms, virus classification is the subject of ongoing debate and proposals.
..... Click the link for more information.
..... Click the link for more information.
Mononegavirales
Families
Paramyxoviridae
Rhabdoviridae
Filoviridae
Bornaviridae
The Mononegavirales are an order of viruses comprising species that have a non-segmented, negative sense RNA genome.
..... Click the link for more information.
Families
Paramyxoviridae
Rhabdoviridae
Filoviridae
Bornaviridae
The Mononegavirales are an order of viruses comprising species that have a non-segmented, negative sense RNA genome.
..... Click the link for more information.
Paramyxoviruses are viruses of the Paramyxoviridae family of the Mononegavirales order; they are negative-sense single-stranded RNA viruses responsible for a number of human and animal diseases.
..... Click the link for more information.
..... Click the link for more information.
Parotitis is an inflammation of one or both parotid glands, the major salivary glands located on either side of the face, in humans. The parotid gland is the salivary gland most commonly affected by inflammation.
..... Click the link for more information.
..... Click the link for more information.
Editing of this page by unregistered or newly registered users is currently disabled due to vandalism.
If you are prevented from editing this page, and you wish to make a change, please discuss changes on the talk page, request unprotection, log in, or .
..... Click the link for more information.
If you are prevented from editing this page, and you wish to make a change, please discuss changes on the talk page, request unprotection, log in, or .
..... Click the link for more information.
Editing of this page by unregistered or newly registered users is currently disabled due to vandalism.
If you are prevented from editing this page, and you wish to make a change, please discuss changes on the talk page, request unprotection, log in, or .
..... Click the link for more information.
If you are prevented from editing this page, and you wish to make a change, please discuss changes on the talk page, request unprotection, log in, or .
..... Click the link for more information.
Vaccination is the administration of antigenic material to produce immunity to a disease. This will prevent or ameliorate the effects of infection by a pathogen. The material administrated can either be live, but weakened forms of pathogens such as bacteria or viruses,
..... Click the link for more information.
..... Click the link for more information.
Several varieties of mumps vaccine have been used since 1949, and at least 10 strains were in use in 2006:[1]
The first vaccine was a killed mumps virus vaccine developed in 1948 and used in the United States from 1950-1978.
..... Click the link for more information.
The first vaccine was a killed mumps virus vaccine developed in 1948 and used in the United States from 1950-1978.
..... Click the link for more information.
The term childhood disease is sometimes subjective, and does not refer to an accepted, categorical list. Nearly all the diseases in this list can also be contracted by adults, and, of course, all children can contract diseases not categorized as "childhood diseases".
..... Click the link for more information.
..... Click the link for more information.
original research or unverifiable claims.
* It is missing citations and/or footnotes. Please help improve this article by adding inline citations.
* It needs to be expanded.
Please help [ improve the article] or discuss these issues on the talk page.
..... Click the link for more information.
* It is missing citations and/or footnotes. Please help improve this article by adding inline citations.
* It needs to be expanded.
Please help [ improve the article] or discuss these issues on the talk page.
..... Click the link for more information.
The salivary glands in mammals are exocrine glands that produce saliva. In other taxa such as insects, salivary glands are often used to produce biologically important proteins such as silk or glues.
..... Click the link for more information.
..... Click the link for more information.
For the toad wart, see parotoid gland.
The parotid gland is the largest of the salivary glands. It is found wrapped around the mandibular ramus, and it secretes saliva through Stensen's duct into the oral cavity, to facilitate mastication and swallowing.
..... Click the link for more information.
The parotid gland is the largest of the salivary glands. It is found wrapped around the mandibular ramus, and it secretes saliva through Stensen's duct into the oral cavity, to facilitate mastication and swallowing.
..... Click the link for more information.
The testicle (from Latin testis, meaning "witness",[1] plural testes) or ballock is the male generative gland in animals. This article will concentrate on mammalian testicles unless otherwise noted.
..... Click the link for more information.
..... Click the link for more information.
Rash
Classifications and external resources
A typical rash
ICD-10 R 21.
ICD-9 782.1
A rash is a change in skin which affects its color, appearance, or texture. A rash may be localized to one part of the body, or affect all the skin.
..... Click the link for more information.
Classifications and external resources
A typical rash
ICD-10 R 21.
ICD-9 782.1
A rash is a change in skin which affects its color, appearance, or texture. A rash may be localized to one part of the body, or affect all the skin.
..... Click the link for more information.
Infertility primarily refers to the biological inability of a man or a woman to contribute to conception. Infertility may also refer to the state of a woman who is unable to carry a pregnancy to full term.
..... Click the link for more information.
..... Click the link for more information.
Painkiller may refer to:
..... Click the link for more information.
- Analgesic refers to painkiller medication
- Painkiller (video game), a first person shooter for the Xbox and PC
- Painkiller (album), an album by Judas Priest
- Painkiller
..... Click the link for more information.
For other uses of "ICD", see ICD (disambiguation).
The International Statistical Classification of Diseases and Related Health Problems (most commonly known by the abbreviation ICD
..... Click the link for more information.
List of ICD-10 codes. The version for 2007 is available online at [1]
Chapter Blocks Title
I Certain infectious and parasitic diseases
II Neoplasms
III Diseases of the blood and blood-forming organs and certain disorders involving the immune mechanism
..... Click the link for more information.
Chapter Blocks Title
I Certain infectious and parasitic diseases
II Neoplasms
III Diseases of the blood and blood-forming organs and certain disorders involving the immune mechanism
..... Click the link for more information.
For other uses of "ICD", see ICD (disambiguation).
The International Statistical Classification of Diseases and Related Health Problems (most commonly known by the abbreviation ICD
..... Click the link for more information.
The following is a list of codes for International Statistical Classification of Diseases and Related Health Problems. These codes are in the public domain.
..... Click the link for more information.
See also
..... Click the link for more information.
The Diseases Database is a free website that provides information about the relationships between medical conditions, symptoms, and medications.
It directly integrates the Unified Medical Language System.
..... Click the link for more information.
It directly integrates the Unified Medical Language System.
External links
- Diseases Database
..... Click the link for more information.
MedlinePlus is a website containing health information from the world's largest medical library, the United States National Library of Medicine. The site is intended to be used by health care providers and patients, and designed to provide up-to-date, authoritative information.
..... Click the link for more information.
..... Click the link for more information.
eMedicine is an online clinical medical knowledge base that was founded in 1996 by Scott Plantz and Richard Lavely, two medical doctors. It was sold to WebMD in January 2006.
..... Click the link for more information.
..... Click the link for more information.
Paramyxoviruses are viruses of the Paramyxoviridae family of the Mononegavirales order; they are negative-sense single-stranded RNA viruses responsible for a number of human and animal diseases.
..... Click the link for more information.
..... Click the link for more information.
For the band, see .
Saliva is the watery and usually frothy substance produced in the mouths of humans and some animals. In animals, saliva is produced in and secreted from the salivary glands...... Click the link for more information.
drop or droplet is a small volume of liquid, bounded completely or almost completely by free surfaces.
The simplest way to form a drop is to allow liquid to flow slowly from the lower end of a vertical tube of small diameter.
..... Click the link for more information.
Surface tension
The simplest way to form a drop is to allow liquid to flow slowly from the lower end of a vertical tube of small diameter.
..... Click the link for more information.
For the toad wart, see parotoid gland.
The parotid gland is the largest of the salivary glands. It is found wrapped around the mandibular ramus, and it secretes saliva through Stensen's duct into the oral cavity, to facilitate mastication and swallowing.
..... Click the link for more information.
The parotid gland is the largest of the salivary glands. It is found wrapped around the mandibular ramus, and it secretes saliva through Stensen's duct into the oral cavity, to facilitate mastication and swallowing.
..... Click the link for more information.
MeSH D009920 Orchitis is an often very painful condition of the testicles involving inflammation, swelling and frequently infection.
..... Click the link for more information.
Symptoms
Symptoms of orchitis are similar to those of testicular torsion...... Click the link for more information.
The testicle (from Latin testis, meaning "witness",[1] plural testes) or ballock is the male generative gland in animals. This article will concentrate on mammalian testicles unless otherwise noted.
..... Click the link for more information.
..... Click the link for more information.
This article is copied from an article on Wikipedia.org - the free encyclopedia created and edited by online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of the wikipedia encyclopedia articles provide accurate and timely information please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.
Herod_Archelaus
