Паротит эпидемический свинка: Эпидемический паротит. Причины, симптомы и признаки, диагностика и лечение болезни :: Polismed.com

Содержание

Эпидемический паротит (свинка)


Что это за заболевание?

Эпидемический паротит – это острая вирусная инфекционная болезнь, характеризующаяся лихорадкой, общей интоксикацией, поражением околоушных слюнных желез, а иногда и других железистых органов и нервной системы.

Возбудитель – полиморфный парамиксовирус, который хорошо сохраняется при низких температурах, малоустойчив к действию физических и химических факторов. В течение нескольких минут погибает под воздействием солнечного света, ультрафиолетовых лучей. При нагревании до 60 градусов погибает в течение 20 минут. Губительное действие на вирус оказывают формалин, лизол, спирт.  

Кто является источником инфекции?

Источником инфекции является человек, больной манифестной, стертой или бессимптомной формой эпидемического паротита.

Период заразительности источника инфекции?

Больной заразен с последних дней инкубации за 1-2 дня до появления клинических симптомов и 6-9 дней от начала заболевания.

Как передается заболевание?

Механизм передачи – воздушно-капельный. В организм здорового человека вирус проникает через слизистую носоглотки, верхних дыхательных путей. Помимо этого заражение может происходить через ослюненные предметы обихода (игрушки, посуда и т.д.). Заражение происходит обычно при тесном общении с больными.

Кого она поражает?

Естественная восприимчивость людей к этому заболеванию высокая. Перенесенное заболевание формирует стойкий пожизненный иммунитет. Эпидемическим паротитом чаще болеют дети, но в последние годы стали болеть и взрослые. При заносе эпидемического паротита в коллектив, где много не привитых лиц, может возникнуть вспышка.

Инкубационный период от 11 до 25 дней, обычно 15 – 18 дней.

Основные клинические признаки: начало заболевания чаще острое, в отдельных случаях заболевание начинается с продромального периода, которое длится 1-2 дня и характеризуется слабостью, недомоганием, нарушением сна. В типичных случаях начало заболевания сопровождается повышением температуры до 38-39 градусов, припухлостью и болезненностью в области околоушных, реже подчелюстных и подъязычных желез. Припухлость постепенно увеличивается и достигает полного развития к 5-6 дню болезни. Несколько реже в процесс вовлекаются половые железы (орхит, бартолинит) и поджелудочная железа (панкреатит). Поражение центральной нервной системы проявляется головной болью, бессонницей, менингеальными симптомами за счет поражения мозговых оболочек

Госпитализация больного проводится по клиническим (тяжелые случаи) и эпидемиологическим показаниям (неблагоприятные бытовые условия, скученность). При изоляции на дому – до исчезновения клинических признаков заболевания, но не менее чем на 9 дней.

Какими лабораторными исследованиями подтверждают диагноз эпидемический паротит?

Каждый случай с подозрением на эпидемический паротит в современных условиях должен подтверждаться лабораторно, для этого исследуется сыворотка крови.

Какие профилактические мероприятия предупреждают возникновение, и распространение случаев эпидемического паротита?

Единственной профилактической мерой является поголовная активная иммунизация против эпидемического паротита детей в возрасте 1 год (вакцинация) и 6 лет (ревакцинация). Детям и подросткам до 17 лет включительно, не болевшим эпидемическим паротитом, не привитым или не имеющим сведений о прививках против эпидпаротита также делается прививка.    

Какие мероприятия проводятся в очагах эпидемического паротита?

-  изоляция больного продолжается до исчезновения клинических симптомов, но не менее 9 дней с момента заболевания;

-  устанавливается медицинское наблюдение за контактными лицами в течение 21 дня с момента выявления последнего случая заболевания в очаге;

-  ежедневно проводится их осмотр медицинскими работниками в целях активного выявления и изоляции лиц с признаками заболевания;

-  проводится иммунизация контактных лиц, не болевших этой инфекцией, не имеющих сведений о прививках, не привитых или привитых однократно;

-  детям, не достигшим прививочного возраста (до 1 года) вводится иммуноглобулин человека нормальный не позднее 5-го дня с момента контакта;

-  если очаг инфекции зарегистрирован в детском дошкольном учреждении или школе, то с момента выявления первого больного до 21 дня с момента выявления последнего заболевшего в коллектив не принимаются дети, не болевшие этой инфекцией и не привитые против нее;

-  контактные лица из очагов, не привитые и не болевшие указанными инфекциями ранее, не допускаются к плановой госпитализации в медицинские организации неинфекционного профиля и социальные организации в течение всего периода медицинского наблюдения.

Свинка (эпидемический паротит) - Доказательная медицина для всех

Свинка (эпидемический паротит) вызывается вирусом, поражающим слюнные околочелюстные железы, и является высококонтагиозным заболеванием, которое проявляется, в основном, отеком и болезненностью в области околоушных слюнных желез. Опухоль, как правило, возникает с обеих сторон, в ряде случаев отек начинается с одной стороны, через несколько дней появляется двусторонний отек. 

Симптомы свинки 

Клиническое течение эпидемического паротита сопровождается неспецифической симптоматикой: 

В 95% случаев возникает опухоль в области околоушных слюнных желез. 

Раньше свинка считалась раньше одним из наиболее распространенных заболеваний детского возраста, но сегодня, благодаря массовой вакцинации, встречается нечасто. 

Свинка. Пути распространения инфекции 

Основной путь распространения эпидемического паротита - воздушно-капельный.  Инкубационный период длится 2-3 недели. Ребенок заразен в течение нескольких дней до появления симптомов заболевания и в течение приблизительно пяти дней после их появления. Почти треть времени болезнь протекает настолько незначительно, что любые симптомы остаются незамеченными. После того, как ребенок переболеет свинкой, он не сможет заразиться ею снова. 

Лечение свинки. 

Свинка излечивается самопроизвольно, для смягчения симптомов рекомендуется обильное питье и обезболивающие препараты. Напомним, что детям противопоказан аспирин, который в редких случаях может вызывать жизнеугрожающие заболевания у детей. Следует воздержаться от использования продуктов стимулирующих слюноотделение - например, апельсиновый сок, лимонад и т. д., потому что повышенное слюноотделение может вызывать боль у детей с паротитом. Местное применение теплых или холодных компрессов на область околоушной слюнной железы может приносить пациенту облегчение.  При подозрении на свинку следует обратиться к врачу.
Это необходимо как для дальнейшего контроля над заболеванием, так и для профилактики возникновения вспышки нфекционного заболевания. 

В исключительно редких случаях у ребенка при заболевании паротитом возникает ригидность затылочных мышц (невозможность согнуть голову), вялость, рвота, головная боль, судороги и другие необычные симптомы, которые могут свидетельствовать о такой мозговой инфекции, как менингит - в этом случае следует в экстренном порядке обратиться к врачу для госпитализации. 

Также необходимо обращаться за неотложной медицинской помощью, если у заболевшего свинкой ребенка развиваются сильные боли в животе и рвота, так как это может свидетельствовать о воспалении поджелудочной железы. 

Профилактика свинки 

Безопасность и эффективность вакцины от свинки изучена очень хорошо. Основными осложнениями вакцинации являются: 

  • Гиперемия в месте инъекции
  • Лихорадка может наблюдаться в период от 24 часов до 7 суток после вакцинации
  • Аллергическая реакция встречается крайне редко, реже 1 случая на 100 000 вакцинаций. Следует предупредить врача, если у ребенка выявлена аллергия на желатин, неомицин. Так же следует проинформировать врача, если ребенок имеет врожденные или приобретенные имуннодефицитные состояния. 
Контактные, не болевшие свинкой и не привитые, должны быть вакцинированы в ближайшее время после контакта с больным.  Пациенты с паротитом должны быть изолированы до полного исчезновения отека околоушной области.  Ранее в медицинских и популярных изданиях была информация о связи вакцины и аутизма. Данный вопрос подробно освещен в статье: прививки и аутизм

Осложнения свинки, или почему важно вакцинировать детей. 

Не смотря на то, что свинка проходит самостоятельно и не требует сколько нибудь серьезного лечения, в ряде случаев могут наблюдаться серьезные осложнения заболевания: 

  • Орхит (воспаление яичек у мужчин) наиболее частое осложнение свинки, встречается в 38% случаев. В 30-50% случаев после перенесенного орхита развивается атрофия яичек, в 13% случае возникают проблемы с фертильностью, в редких случаях регистрируется стойкое мужское бесплодие.
  • У 7% девочек развивается оофорит.
  • Менингит. По разным данным встречается от 1 до 10% случаев паротита, протекает относительно благоприятно.
  • Энцефалит у невакцинированных пациентов встречается 1 раз на 6000 случаев свинки. Чаще всего завершается выздоровлением, в редких случаях сохраняется атаксия, описан случай гидроцефалии.
  • Глухота является нередким осложнением свинки, в довакцинальную эпоху частой причиной нейросенсорной тугоухости был именно эпедемический паротит. Описаны случаи лабиринтита
  • Другие неврологические осложнения свинки: синдром Гийена-Барре, полирадикулит, поперечный миелит, лицевые параличи. 
Не смотря на значительное снижение заболеваемости эпидпаротитом, которое началось после введения массовой иммунизации, спорадические вспышки свинки иногда случаются. Эти вспышки часто затрагивают и пожилых людей, которые имеют высокий риск тяжелого течения болезни и осложнений.  

Эпидемический паротит — Википедия. Что такое Эпидемический паротит

Эпидемический паротит (лат. parotitis epidemica: свинка, заушница) — острое инфекционное заболевание, с негнойным поражением железистых органов (слюнные железы, поджелудочная железа, семенники) и ЦНС, вызванное парамиксовирусом. Название «эпидемический паротит» считается устаревшим. Сейчас это заболевание чаще называют «паротит». На латыни околоушная слюнная железа называется glandula parotidea, а её воспаление — паротит; отсюда произошло название болезни. Наиболее часто болеют дети в возрасте от 3 до 15 лет.

Заражение

Заражение происходит воздушно-капельным путём (при кашле, чихании, разговоре) от больного человека, который заражен от 9 суток до появления симптомов до 5-9 суток после появления симптомов (отёчность гланд)[1].

Возбудитель

РНК-содержащий вирус из рода Rubulavirus семейства парамиксовирусов (Paramyxoviridae). Возбудитель паротита был впервые выделен и изучен в 1934 году Э. Гудпасчером и К. Джонсоном.

Вирионы полиморфны, округлые вирионы имеют диаметр 120—300 нм. Однонитевая и нефрагментированная «минус»-РНК кодирует 8 белков, в том числе Н-, N- и F-белки суперкапсидной оболочки.

Вирус обладает гемагглютинирующей, нейраминидазной и гемолитической активностью. Вирус агглютинирует эритроциты кур, уток, морских свинок, собак и др. В лабораторных условиях вирус культивируется на 7 — 8-дневных куриных эмбрионах и клеточных культурах. К вирусу чувствительны первично-трипсинизированные культуры клеток почки морской свинки, обезьян, сирийского хомяка, фибробласты куриных эмбрионов. Лабораторные животные малочувствительны к вирусу паротита. Только у обезьян удается воспроизвести заболевание, сходное с паротитом человека. Вирус нестоек, инактивируется при нагревании, ультрафиолетовом облучении, контакте с жирорастворителями, 2 % раствором формалина, 1 % раствором лизола. Аттенуированный штамм вируса (Л-3) используют в качестве живой вакцины.

Антигенная структура вируса стабильна. Он содержит антигены, способные вызвать образование нейтрализующих и комплементсвязывающих антител, а также аллерген, который можно использовать для постановки внутрикожной пробы.

Иммунитет

После перенесения эпидемического паротита чаще всего остаётся стойкий пожизненный иммунитет, однако встречаются и повторные заболевания паротитом.

Течение болезни

Инкубационный период (отрезок времени от момента заражения до развития симптомов) составляет 11-23 дней; чаще — 13-19 дней. У некоторых за 1-2 дня наблюдаются продромальные явления (разбитость, недомогания, боли в мышцах, головные боли, познабливания, нарушения сна и аппетита). С развитием болезни симптомы становятся более выраженными, отмечаются признаки поражения слюнных желез: сухость во рту; боли в области уха, усиливающиеся при жевании, разговоре.

Классификация

А. Манифестантные формы:

По тяжести течения:

  • легкие (в том числе стертые и атипичные): протекающие с субфебрильной температурой тела, с отсутствием или слабо выраженными признаками интоксикации, без осложнений.
  • среднетяжёлые: протекающие с фебрильной температурой (38-39,9°С), длительной лихорадкой и выраженными симптомами общей интоксикации (озноб, головная боль, артралгия и миалгия), значительным увеличением слюнных желез, чаще — двусторонним паротитом, наличием осложнений.
  • тяжелые: протекающие с высокой температурой (40°С и выше), длительным её повышением (до 2 нед. и более), резко выраженными признаками общей интоксикации (астенизация, резкая слабость, тахикардия, снижение АД, нарушение сна, анорексия и др.).

Б. Инаппарантная форма инфекции.

В. Резидуальные явления эпидемического паротита.

Лихорадка максимальна на 1-2-й день, продолжается 4-7 дней. Поражение слюнных желез: область железы болезненна. Боль выражена в некоторых точках: впереди мочки уха, позади мочки уха (симптом Филатова) и в области сосцевидного отростка. Симптом Мурсу — воспалительная реакция слизистой оболочки в области выводного протока пораженной околоушной железы. Кожа над ней напряжена, лоснится, припухлость может распространиться и на шею. Увеличение в течение 3 дней достигает максимума, держится 2-3 дня и постепенно (в течение 7-10 дней) уменьшается.

Прогноз при эпидемическом паротите благоприятный, летальные исходы бывают очень редко (1 на 100 000 заболевших), однако следует учитывать риск глухоты и атрофии яичек с последующим бесплодием.

Подтверждение диагноза

Из лабораторных методов подтверждения диагноза наиболее доказательным является выделение вируса паротита из крови, смывов из глотки, секрета околоушной слюнной железы, спинномозговой жидкости и мочи.

Иммунофлюоресцентные методы позволяют обнаружить вирусы на клеточной культуре уже через 2-3 дня (при стандартном методе исследования — лишь через 6 дней). Иммунофлюоресцентный метод позволяет обнаружить вирусный антиген непосредственно в клетках носоглотки, что даёт возможность наиболее быстро получить ответ.

Серологические методы позволяют выявить нарастание титра антител только через 1-3 недели от начала заболевания. Используются различные методы. Наиболее информативным является твердофазный иммуноферментный анализ, более поздние результаты получают с помощью более простых реакций (РСК и РНГА). Исследуют парные сыворотки: первая берется в начале болезни, вторая — спустя 2-4 недели. Диагностическим считается нарастание титра в 4 раза и более. Может быть использована внутрикожная проба с антигеном (аллергеном). Диагностическим считается переход отрицательной пробы в положительную. Если кожная проба будет положительной уже в первые дни болезни, то это свидетельствует о том, что человек ранее перенес паротит.

Эпидемический паротит — Википедия. Что такое Эпидемический паротит

Эпидемический паротит (лат. parotitis epidemica: свинка, заушница) — острое инфекционное заболевание, с негнойным поражением железистых органов (слюнные железы, поджелудочная железа, семенники) и ЦНС, вызванное парамиксовирусом. Название «эпидемический паротит» считается устаревшим. Сейчас это заболевание чаще называют «паротит». На латыни околоушная слюнная железа называется glandula parotidea, а её воспаление — паротит; отсюда произошло название болезни. Наиболее часто болеют дети в возрасте от 3 до 15 лет.

Заражение

Заражение происходит воздушно-капельным путём (при кашле, чихании, разговоре) от больного человека, который заражен от 9 суток до появления симптомов до 5-9 суток после появления симптомов (отёчность гланд)[1].

Возбудитель

РНК-содержащий вирус из рода Rubulavirus семейства парамиксовирусов (Paramyxoviridae). Возбудитель паротита был впервые выделен и изучен в 1934 году Э. Гудпасчером и К. Джонсоном.

Вирионы полиморфны, округлые вирионы имеют диаметр 120—300 нм. Однонитевая и нефрагментированная «минус»-РНК кодирует 8 белков, в том числе Н-, N- и F-белки суперкапсидной оболочки.

Вирус обладает гемагглютинирующей, нейраминидазной и гемолитической активностью. Вирус агглютинирует эритроциты кур, уток, морских свинок, собак и др. В лабораторных условиях вирус культивируется на 7 — 8-дневных куриных эмбрионах и клеточных культурах. К вирусу чувствительны первично-трипсинизированные культуры клеток почки морской свинки, обезьян, сирийского хомяка, фибробласты куриных эмбрионов. Лабораторные животные малочувствительны к вирусу паротита. Только у обезьян удается воспроизвести заболевание, сходное с паротитом человека. Вирус нестоек, инактивируется при нагревании, ультрафиолетовом облучении, контакте с жирорастворителями, 2 % раствором формалина, 1 % раствором лизола. Аттенуированный штамм вируса (Л-3) используют в качестве живой вакцины. Антигенная структура вируса стабильна. Он содержит антигены, способные вызвать образование нейтрализующих и комплементсвязывающих антител, а также аллерген, который можно использовать для постановки внутрикожной пробы.

Иммунитет

После перенесения эпидемического паротита чаще всего остаётся стойкий пожизненный иммунитет, однако встречаются и повторные заболевания паротитом.

Течение болезни

Инкубационный период (отрезок времени от момента заражения до развития симптомов) составляет 11-23 дней; чаще — 13-19 дней. У некоторых за 1-2 дня наблюдаются продромальные явления (разбитость, недомогания, боли в мышцах, головные боли, познабливания, нарушения сна и аппетита). С развитием болезни симптомы становятся более выраженными, отмечаются признаки поражения слюнных желез: сухость во рту; боли в области уха, усиливающиеся при жевании, разговоре.

Классификация

А. Манифестантные формы:

По тяжести течения:

  • легкие (в том числе стертые и атипичные): протекающие с субфебрильной температурой тела, с отсутствием или слабо выраженными признаками интоксикации, без осложнений.
  • среднетяжёлые: протекающие с фебрильной температурой (38-39,9°С), длительной лихорадкой и выраженными симптомами общей интоксикации (озноб, головная боль, артралгия и миалгия), значительным увеличением слюнных желез, чаще — двусторонним паротитом, наличием осложнений.
  • тяжелые: протекающие с высокой температурой (40°С и выше), длительным её повышением (до 2 нед. и более), резко выраженными признаками общей интоксикации (астенизация, резкая слабость, тахикардия, снижение АД, нарушение сна, анорексия и др.).

Б. Инаппарантная форма инфекции.

В. Резидуальные явления эпидемического паротита.

Лихорадка максимальна на 1-2-й день, продолжается 4-7 дней. Поражение слюнных желез: область железы болезненна. Боль выражена в некоторых точках: впереди мочки уха, позади мочки уха (симптом Филатова) и в области сосцевидного отростка. Симптом Мурсу — воспалительная реакция слизистой оболочки в области выводного протока пораженной околоушной железы. Кожа над ней напряжена, лоснится, припухлость может распространиться и на шею. Увеличение в течение 3 дней достигает максимума, держится 2-3 дня и постепенно (в течение 7-10 дней) уменьшается.

Прогноз при эпидемическом паротите благоприятный, летальные исходы бывают очень редко (1 на 100 000 заболевших), однако следует учитывать риск глухоты и атрофии яичек с последующим бесплодием.

Подтверждение диагноза

Из лабораторных методов подтверждения диагноза наиболее доказательным является выделение вируса паротита из крови, смывов из глотки, секрета околоушной слюнной железы, спинномозговой жидкости и мочи.

Иммунофлюоресцентные методы позволяют обнаружить вирусы на клеточной культуре уже через 2-3 дня (при стандартном методе исследования — лишь через 6 дней). Иммунофлюоресцентный метод позволяет обнаружить вирусный антиген непосредственно в клетках носоглотки, что даёт возможность наиболее быстро получить ответ.

Серологические методы позволяют выявить нарастание титра антител только через 1-3 недели от начала заболевания. Используются различные методы. Наиболее информативным является твердофазный иммуноферментный анализ, более поздние результаты получают с помощью более простых реакций (РСК и РНГА). Исследуют парные сыворотки: первая берется в начале болезни, вторая — спустя 2-4 недели. Диагностическим считается нарастание титра в 4 раза и более. Может быть использована внутрикожная проба с антигеном (аллергеном). Диагностическим считается переход отрицательной пробы в положительную. Если кожная проба будет положительной уже в первые дни болезни, то это свидетельствует о том, что человек ранее перенес паротит.

Лечение

Больных эпидемическим паротитом можно лечить дома. Госпитализируют больных тяжёлыми осложненными формами и по эпидемиологическим показаниям. Изолируют больных дома в течение 9 дней. В детских учреждениях, где выявлен случай заболевания паротитом, устанавливается карантин на 21 день. Дезинфекция в очагах паротита не проводится.

Этиотропного лечения нет. Важной задачей лечения является предупреждение осложнений. Важно соблюдение постельного режима не менее 10 дней. У мужчин, не соблюдавших постельного режима в течение 1-й недели, орхит развивался в 3 раза чаще (у 75 %), чем у лиц, госпитализированных в первые 3 дня болезни (у 26 %). Для профилактики панкреатитов необходимо соблюдать определенную диету: избегать переедания, уменьшить количество белого хлеба, макарон, жиров, капусты. Диета должна быть молочно-растительной. Из круп лучше употреблять рис, разрешается черный хлеб, картофель.

При орхитах возможно назначение преднизолона в течение 5-7 дней, начиная с 40-60 мг и уменьшая дозу каждый день на 5 мг, или другие кортикостероиды в эквивалентных дозах. На течение паротитного менингита благоприятное влияние оказывает спинномозговая пункция с извлечением небольшого количества ликвора. Некоторое значение имеет умеренная дегидратационная терапия. При остром панкреатите назначают жидкую щадящую диету, атропин, папаверин, холод на живот, при рвоте — аминазин, а также препараты, ингибирующие ферменты, в частности контрикал (трасилол), который вводят внутривенно (медленно) в растворе глюкозы, в первый день 50000 ЕД, затем 3 дня по 25000 ЕД/сут и еще 5 дней по 15000 ЕД/сут. Местно — согревающие компрессы.

Профилактика

Вакцина против паротита — безопасное средство предотвращения болезни. В большинстве случаев вакцинация уменьшает осложнения на популяционном уровне[2]. При показателях вакцинации населения в 90 % эффективность достигает 85 %[3]. В целях долгосрочной профилактики требуется введение двух доз. Введение первой дозы рекомендуется в возрасте от 12 до 18 месяцев. Введение второй дозы обычно производится в период между двумя и шестью годами[2]. Вакцинация после заражения может оказаться полезной для тех, кто ещё не обладает иммунитетом[4].

В соответствии с российским национальным календарём прививок, вакцинация против эпидемического паротита проводится с помощью комбинированной живой вакцины от кори, краснухи и паротита в возрасте 12 месяцев, а ревакцинация — в шесть лет.

Безопасность

Вакцина против паротита очень безопасна, а побочные эффекты обычно слабо выражены[2][4]. Введение вакцины может вызывать умеренную боль, отек в месте инъекции и небольшое повышение температуры. Более значительные побочные эффекты проявляются редко[2]. Недостаточно доказательств связи между вакцинацией и неврологическими осложнениями[4]. Не следует вводить вакцину беременным женщинам или лицам с глубокой иммуносупрессией[2]. Несмотря на то, что вакцина разработана на базе куриных клеток, она одобрена для введения лицам с аллергией на яйца[4].

Использование

Большая часть развитых стран и многие развивающиеся страны включают данную вакцину в свои программы иммунизации, часто в сочетании с вакциной против кори и краснухи в виде комбинированной вакцины MMR[2]. Комбинированная вакцина, включающая три вышеуказанные вакцины и вакцину против ветряной оспы, доступна под названием MMRV (англ.)[4]. По состоянию на 2005 год, 110 стран обеспечивали проведение вакцинации; было введено почти 500 миллионов доз MMR

Свинка - симптомы, причины, лечение

Найти врача Назад Найти врача Найти врачей по Специальности
  • Семейная медицина
  • Внутренняя медицина
  • Акушерство и гинекология
  • Стоматология
  • Ортопедическая хирургия
  • Все специальности
Найти врачей по
    20 Состояние Фибромиалгия
  • Беспокойство
  • СДВГ
  • Апноэ во сне
  • Мигрень
Найдите врача по процедуре
  • Обезболивание
  • Ортопедическая хирургия позвоночника
  • Консультации по вопросам брака
  • Помощь в лечении грыжи
  • 8 Помощь врача Миллионы людей находят подходящего врача и необходимую им помощь Найти больницу Назад Найти больницу Лучшие больницы
    • Просмотреть все
    Лучшие больницы по специальности
    • Аппендэктомия
    • Хирургия спины и шеи (кроме спондилодеза )
    • Бариатрическая хирургия
    • Хирургия сонных артерий
    • Просмотреть все
    Больницы по награде
    • Превосходство в уходе за женщинами
    • Безопасность пациентов
    • Лучшие больницы Америки
    • Просмотреть все
    Здоровье от А до Я Назад Здоровье от А до Я Узнать О Условиях
    • Боль в спине
    • Рак
    • Диабет
    • Высокое кровяное давление
    • Кожные заболевания
    • Просмотреть все условия
    Узнать о процедурах
    • Ангиопластика
    • Хирургия катаракты
    • Операция на колене 9011
    • Хирургия плеча
    • См. Все процедуры
    Руководства по приемам
    • Астма
    • ХОБЛ
    • Депрессия
    • Псориаз
    • Ревматоидный артрит
    • Обсудить все врачи
    • Посмотреть все врачи новейшие методы лечения и советы по здоровью Наркотики A – Z Найдите рецептурные препараты, чтобы узнать, почему они используются, побочные эффекты и многое другое.Авторизоваться Меню Найти врача Назад Найти врача Найти врачей по Специальности
      • Семейная медицина
      • Внутренняя медицина
      • Акушерство и гинекология
      • Стоматология
      • Ортопедическая хирургия
      • Все специальности
      Найти врачей по
        20 Состояние Фибромиалгия
      • Беспокойство
      • СДВГ
      • Апноэ во сне
      • Мигрень
      Найдите врача по процедуре
      • Обезболивание
      • Ортопедическая хирургия позвоночника
      • Консультации по вопросам брака
      • Помощь в лечении грыжи
      • 8 Помощь врача Миллионы людей находят подходящего врача и необходимую им помощь Найти больницу Назад Найти больницу Лучшие больницы
        • Просмотреть все
        Лучшие больницы по специальности
        • Аппендэктомия
        • Хирургия спины и шеи (кроме спондилодеза )
        • Бариатрическая хирургия
        • Хирургия сонных артерий
        • Просмотреть все
        Больницы по награде
        • Превосходство в уходе за женщинами
        • Безопасность пациентов
        • Лучшие больницы Америки
        • Просмотреть все
        Здоровье от А до Я Назад Здоровье от А до Я Узнать О Условиях
        • Боль в спине
        • Рак
        • Диабет
        • Высокое кровяное давление
        • Кожные заболевания
        • Просмотреть все условия
        Узнать о процедурах
        • Ангиопластика
        • Хирургия катаракты
        • Операция на колене 9011
        • Хирургия плеча
        • См. Все процедуры
        Руководства по приемам
        • Астма
        • ХОБЛ
        • Депрессия
        • Псориаз
        • Ревматоидный артрит
        • Обсудить все врачи
        • Посмотреть все врачи новейшие методы лечения и советы по здоровью Наркотики A – Z Найдите рецептурные препараты, чтобы узнать, почему они используются, побочные эффекты и многое другое.Авторизоваться Поиск Около Поиск
          • Right Care
          • Инфекции и заразные заболевания

          IDEA :: Портал документации MUMPS


          Внимание: в стадии строительства!

          Планируем написать про GT. M, PIP, Caché, IDEA-Technology, FB-Technology, и обо всем, что связано с MUMPS.

          Ооооо, следите за обновлениями!

          Ссылки по теме MUMPS

          • Веб-сайт IDEA (http://www.idea.cz/)
          • Материалы курса MUMPS Карлова университета (http://www-old.idea.cz/mff/) и Syllabus
          • Домашняя страница FIS GT.M (http://fis-gtm.com/)
          • Домашняя страница FIS PIP (http://fis-pip.com/)
          • GT.M для Erlang (http://github.com/ztmr/egtm)
          • Проекты IDEA Labs: EGTM и IODB (http: // labs.idea.cz/)
          • Универсальный NoSQL для людей, живущих отношениями (http://www.fooboo.org/~tmr/gtm/UniversalNoSQL.pdf)
          • Вступление MUMPS на чешском языке (http://www.fooboo.org/~tmr/gtm/MUMPS-Skoleni-Historicke.pdf)
          • Разные ресурсы GT.M (http://www.fooboo.org/~tmr/gtm/misc/)
          • Мастерская VistA (http://www.fooboo.org/~tmr/gtm/High-Available_VistA_Workshop/)
          • Уроки, извлеченные из инженерной практики OpenVMS (http://www. fooboo.org/~tmr/gtm/Lessons-Learned-From-OpenVMS-Engineering-Practices.pdf)
          • Из блога Splistream (http://www.outoftheslipstream.com/blog)
          • Фреймворк
          • Atmus (https://www.assembla.com/wiki/show/Atmus)
          • Плагин
          • Node.js для M / DB M / Gateway (http://github.com/robtweed/node-mdbm)
          • M / Веб-сайт шлюза (http://mgateway.com/)
          • M [UMPS] на примере (http://www.jacquardsystems.com/Examples/index.htm)
          • GT.M и Openstreetmap
          • GT.M на Intel Galileo
          • GT.M на FreeBSD
          • GT.M на OpenIndiana / Solaris x86 / x64
          • GT.M на DragonFlyBSD
          • OpenVista на SourceForge
          • OpenVista для предприятия
          • Пакет интерфейса OpenVista
          • ПРОФИЛЬ FIS в облаке
          • OpenVista EHR Appliance (https://medsphere.org/community/project/openvista-appliance)
          • Comp.Lang.MUMPS Группа Usenet (http://groups.google.com/group/comp.lang.mumps/topics)
          • Модуль доступа
          • GT.M для Perl (http://search. cpan.org/~SZECK/Db-GTM-1.27 / GTM.pm)
          • Различные ресурсы M от банка Львов (http://sergo.banklviv.com/files/m/)
          • Другой сборник документов M (http://www.vistaexpertise.net/docs/)
          • Группа пользователей MUMPS (http://www.mumps.org/)
          • Форум группы пользователей MUMPS (http://www.mumpster.org/phpBB3/)
          • GT.M Socket Programming HOWTO (https://www.vmth.ucdavis.edu/home/compsrv/GTM/GT.M%20socket%20summary.html)
          • Российский сайт МАМПС (http://www.mumps.orelnet.ru/)
          • Русский блог Intersystems (http: // habrahabr.ru / company / intersystems /)
          • SQL.ru Форум Caché (http://www.sql.ru/forum/actualtopics.aspx?bid=56)
          • MiniM DB: небольшой WinMUMPS из России (http://karataev.nm.ru/minim/)
          • Экспертная система в MUMPS (http://www.yrelay.com/article338.html)
          • Часто задаваемые вопросы по М-технологиям (http://www.faqs.org/faqs/m-technology-faq/)
          • Catching MUMPS (http://www.mad-computer-scientist. com/blog/2008/10/23/catching-mumps/)

          определение паротита и синонимов эпидемического паротита (английский)

          MUMPS ( M assachusetts General Hospital U tility M ulti- P rogramming S ystem) или, альтернативно, M , это язык программирования, созданный в конце 1960-х годов, первоначально для использования в отрасль здравоохранения.Он был разработан для создания многопользовательских приложений, управляемых базами данных. Он предшествует C и большинству других популярных языков в настоящее время и имеет очень другой синтаксис и терминологию.

          Он был широко принят в 1970-х и начале 1980-х годов в медицинских и финансовых информационных системах / базах данных и продолжает использоваться многими из тех же клиентов сегодня. В настоящее время он используется в системах электронных медицинских карт, а также в нескольких банковских сетях и в онлайн-торговых / инвестиционных сервисах.

          История

          MUMPS

          был разработан Нилом Паппалардо и его коллегами из лаборатории д-ра Окто Барнетта в Массачусетской больнице общего профиля (MGH) в Бостоне в 1966 и 1967 годах. Первоначальная система MUMPS, как и Unix несколькими годами позже, была построена на запасном PDP DEC 7.

          Окто Барнетт и Нил Паппалардо также участвовали в планировании MGH для больничной информационной системы, получили обратно совместимый PDP-9 и начали использовать MUMPS в цикле приема и отчетности лабораторных тестов.MUMPS был тогда интерпретируемым языком, но даже тогда он включал иерархическую файловую систему базы данных для стандартизации взаимодействия с данными. Некоторые аспекты MUMPS можно проследить от JOSS от Rand Corporation через BBN TELCOMP и STRINGCOMP. Команда MUMPS сознательно выбрала переносимость между машинами в качестве цели проектирования. Другой особенностью, которая не поддерживалась широко для компьютеров той эпохи в операционных системах или компьютерном оборудовании, была многозадачность, которая также была встроена в сам язык.

          Переносимость вскоре пригодилась, так как MUMPS был вскоре адаптирован для DEC PDP-15, где он жил некоторое время. MUMPS был разработан при поддержке государственного исследовательского гранта, поэтому MUMPS стал общественным достоянием (больше не является требованием для получения грантов) и вскоре был перенесен на ряд других систем, включая популярную DEC PDP-8, Data General Nova и DEC PDP-11 и миникомпьютер Artronix PC12. Слухи о MUMPS распространились в основном через медицинское сообщество, и к началу 1970-х годов широко использовались, часто изменяясь на местном уровне для их собственных нужд.

          К началу 1970-х было множество разнообразных реализаций MUMPS на различных аппаратных платформах. Наиболее распространенными были MUMPS-11 от DEC на PDP-11 и MIIS от MEDITECH. В 1972 году многие пользователи MUMPS посетили конференцию, которая стандартизировала тогда расколотый язык и для этого создали группу пользователей MUMPS и комитет по развитию MUMPS (MDC). Эти усилия оказались успешными; стандарт был завершен к 1974 г. и утвержден 15 сентября 1977 г. как стандарт ANSI, X11. 1-1977. Примерно в то же время DEC выпустила DSM-11 (цифровой стандарт MUMPS) для PDP-11. Это быстро доминировало на рынке и стало эталонной реализацией того времени.

          В начале 1980-х годов несколько поставщиков выпустили на рынок платформы на базе MUMPS, соответствующие стандарту ANSI. Наиболее значимыми были Digital Equipment Corporation с DSM (цифровой стандарт MUMPS), InterSystems с ISM (InterSystems M) на VMS и UNIX и M / 11 + на платформе PDP-11.Другие компании разработали важные реализации MUMPS:

          • Greystone Technology Corporation со скомпилированной версией GT.M
          • DataTree Inc. с продуктом на базе ПК Intel под названием DTM
          • Micronetics Design Corporation с линейкой продуктов под названием MSM для платформ UNIX и Intel PC (позже перенесенных на операционную систему IBM VM, платформы VAX-VMS и платформы Alpha-VMS)
          • Компания
          • Comp Consultants (позже переименованная в MGlobal), компания из Хьюстона, первоначально создала CCSM на 6800, затем на 6809 процессорах и, в конечном итоге, на порте на 68000, который позже стал MacMUMPS , продуктом на базе Mac OS. Они также работали над реализацией MGM MUMPS. MGlobal также перенесла свою реализацию на платформу DOS, где она работала как гостевая операционная система, запущенная из DOS.

          MGlobal MUMPS был первым коммерческим MUMPS для IBM PC и единственной реализацией Mac. DSM-11 был заменен на VAX / DSM для платформы VAX / VMS, который был перенесен на Alpha в двух вариантах: DSM для OpenVMS и как DSM для Ultrix .

          В этот период также была отмечена значительная активность MDC.Вторая редакция стандарта ANSI для MUMPS (X11.1-1984) была утверждена 15 ноября 1984 г. 11 ноября 1990 г. была утверждена третья редакция стандарта ANSI (X11.1-1990). В 1992 году тот же стандарт был принят как стандарт ISO 11756-1992. Примерно в то же время было одобрено использование M в качестве альтернативного названия языка. 8 декабря 1995 г. четвертая редакция стандарта (X11.1-1995) была одобрена ANSI, а в 1999 г. - ISO как ISO 11756-1999. MDC завершил новую редакцию стандарта в 1998 году, но она не была представлена ​​в ANSI для утверждения. 6 января 2005 г., а затем еще раз 25 июня 2010 г. ISO подтвердила свои стандарты, связанные с MUMPS: ISO / IEC 11756: 1999, языковой стандарт, ISO / IEC 15851: 1999, Open MUMPS Interconnect и ISO / IEC 15852: 1999. , Интерфейс программиста оконных приложений MUMPS.

          К 2000 году поставщик промежуточного программного обеспечения InterSystems стал доминирующим игроком на рынке MUMPS, купив несколько других поставщиков. Первоначально они приобрели DataTree Inc. в начале 1990-х годов. А 30 декабря 1995 года InterSystems приобрела линейку продуктов DSM у DEC. [1] InterSystems объединила эти продукты в единую линейку продуктов, обозначив их на нескольких аппаратных платформах как OpenM . В 1997 году InterSystems по существу завершила эту консолидацию, выпустив единого преемника под названием Caché. Это было основано на их продукте ISM, но с влиянием других реализаций. 21 июня 1998 г. активы Micronetics Design Corporation были также приобретены InterSystems. InterSystems остается сегодня (2011 г. ) доминирующим поставщиком MUMPS, продавая Caché разработчикам MUMPS, которые пишут приложения для различных операционных систем.

          Реализация GT.M

          Greystone Technology Corporation была продана компании Sanchez Computer Associates Inc. (ныне часть FIS) в середине 1990-х годов. 7 ноября 2000 года Санчес сделал GT.M для Linux доступным по лицензии GPL [2] , а 28 октября 2005 года GT.M для OpenVMS и Tru64 UNIX также стали доступны по лицензии AGPL. [3] GT.M по-прежнему доступен на других платформах UNIX по традиционной лицензии.

          Новейшая реализация MUMPS, выпущенная в апреле 2002 года, представляет собой производную версию MSM под названием M21 от Real Software Company из Регби, Великобритания.

          Существует также несколько реализаций MUMPS с открытым исходным кодом, включая некоторые исследовательские проекты. Наиболее заметным из них является Mumps / II профессора Кевина О'Кейна (ныне работающего в Университете Северной Айовы) и студенческий проект. Доктор О'Кейн также портировал интерпретатор на Mac OS X. [4]

          Один из первых создателей языка MUMPS, Нил Паппалардо, одним из первых основал компанию MEDITECH. Они расширили и построили на языке MUMPS, назвав новый язык MIIS (а позже и другой язык, названный MAGIC).В отличие от InterSystems, MEDITECH больше не продает промежуточное ПО, поэтому MIIS и MAGIC теперь используются в MEDITECH только внутри компании.

          Текущие пользователи приложений MUMPS

          Основная статья: пользователи MUMPS

          Министерство по делам ветеранов США (ранее - Управление по делам ветеранов) было одним из первых, кто начал использовать язык MUMPS. Их разработка (и последующий вклад в кодовую базу бесплатного приложения MUMPS) оказали влияние на многих медицинских пользователей по всему миру. В 1995 году система приема / отслеживания / выписки пациентов Департамента по делам ветеранов, децентрализованная больничная компьютерная программа (DHCP), была удостоена Смитсоновской премии Computerworld за лучшее использование информационных технологий в медицине. В июле 2006 года Департамент по делам ветеранов (VA) / Управление здравоохранения ветеранов (VHA) был удостоен награды за инновации в американском правительстве, представленной Институтом пепла Школы государственного управления им. Джона Ф. Кеннеди при Гарвардском университете за расширение DHCP в архитектуре информационных систем и технологий здравоохранения для ветеранов (VistA). Почти вся больничная система VA в США, Индийская служба здравоохранения и основные части больничной системы CHCS Министерства обороны используют базы данных MUMPS для отслеживания клинических данных.Сообщается, что Coventry Healthcare и Massachusetts Hospital также используют MUMPS.

          Крупные компании, в настоящее время использующие MUMPS, включают AmeriPath (часть Quest Diagnostics), Care Centric, Epic Systems Corporation, EMIS, Partners HealthCare, MEDITECH, GE Healthcare (ранее IDX Systems и Centricity). Многие справочные лаборатории, такие как Quest Diagnostics [5] и Dynacare, используют программное обеспечение MUMPS, написанное или основанное на коде Antrim Corporation. Antrim и его материнская компания Sunquest Information Systems были приобретены Misys в 2001 году. [6]

          MUMPS широко используется в финансовых приложениях. MUMPS быстро завоевал популярность в финансовом секторе, и приложения MUMPS используются во многих банках и кредитных союзах. Он используется Ameritrade, крупнейшим сервисом онлайн-торговли в США с более чем 12 миллиардами транзакций в день, а также Банком Англии и Barclays Bank, среди прочих. [7] [8] [9]

          С 2005 года MUMPS используются либо в форме GT.M или InterSystems Caché. Последний активно продвигается InterSystems и добился успеха в проникновении на новые рынки, такие как телекоммуникации, в дополнение к существующим. Европейское космическое агентство 13 мая 2010 года объявило, что оно будет использовать MUMPS для поддержки миссии Gaia. Цель этой миссии - нанести на карту Млечный Путь с беспрецедентной точностью. [10]

          Обзор

          MUMPS - это язык, предназначенный для создания приложений баз данных. Были включены дополнительные языковые функции, чтобы помочь программистам создавать приложения с минимальными вычислительными ресурсами.Исходные реализации были интерпретированы, хотя современные реализации могут быть полностью или частично скомпилированы. Отдельные «программы» запускаются в «разделах» памяти. Ранние разделы памяти MUMPS были ограничены 2048 байтами, поэтому агрессивная аббревиатура значительно облегчила мультипрограммирование на оборудовании с сильно ограниченными ресурсами, потому что более одного задания MUMPS могло уместиться в очень небольшой объем памяти, существующий на оборудовании в то время. Возможность создания многопользовательских систем была другим языковым дизайном. На это указывает запись M ulti- P в сокращении названия языка.Даже самые ранние машины, на которых выполнялся MUMPS, поддерживали одновременное выполнение нескольких заданий. С переходом от мини-компьютеров к микрокомпьютерам несколько лет спустя даже «однопользовательский ПК» с одним 8-разрядным процессором с 16 или 64 КБ памяти мог поддерживать нескольких пользователей, запускающих немые терминалы в режиме командной строки. (без каких-либо следов графического пользовательского интерфейса).

          Поскольку изначально памяти было мало, при разработке языка для MUMPS ценился очень краткий код. Таким образом, каждая команда или имя функции MUMPS может быть сокращено от одной до трех букв, т.е.грамм. Выйти (выйти из программы) как Q, $ P = функция $ Piece, R = команда чтения, $ TR = функция $ Translate. Пробелы и маркеры конца строки важны в MUMPS, потому что область видимости строки способствовала тому же лаконичному дизайну языка. Следовательно, целая строка программного кода могла бы выразить ту же идею - небольшое количество символов, для выражения которых в других языках программирования может потребоваться в 5-10 раз больше символов. Аббревиатура была общей чертой языков, разработанных в этот период (например, FOCAL-69, ранних BASIC, таких как Tiny BASIC и т. Д.). Прискорбным побочным эффектом этого в сочетании с ранней необходимостью писать минималистский код было то, что программисты MUMPS обычно не комментировали код и использовали обширные сокращения, а это означало, что даже опытный программист MUMPS мог не просто пролистать страницу кода, чтобы увидеть его функцию, но пришлось бы проанализировать это построчно.

          Взаимодействие с базой данных прозрачно встроено в язык. Язык MUMPS предоставляет иерархическую базу данных, состоящую из постоянных разреженных массивов, которые неявно «открываются» для каждого приложения MUMPS.") используют постоянное (вместо ОЗУ) хранилище, будут сохранять свои значения после выхода из приложения и будут видны (и могут быть изменены) другими запущенными приложениями. Переменные, использующие это общее и постоянное хранилище, в MUMPS называются Globals , потому что область видимости этих переменных "глобально доступна" для всех заданий в системе. Более недавнее и более распространенное использование имени "глобальные переменные" в других языках - это более ограниченная область видимости имен, исходя из того факта, что переменные без области действия «глобально» доступны для любых программ, работающих в одном процессе, но не совместно используются несколькими процессами.") являются временными и частными. Как и глобальные переменные, у них также есть иерархическая модель хранения, но они доступны только" локально "для одного задания, поэтому они называются" локальными ". И" глобальные ", и" локальные "могут иметь дочерних узлы (называемые индексами в терминологии MUMPS). Индексы не ограничиваются цифрами - любой символ ASCII или группа символов может быть идентификатором индекса. Хотя это не редкость для современных языков, таких как Perl или JavaScript, это было очень необычно особенность в конце 1970-х гг.Car (как имена дочерних узлов, так и сами дочерние узлы также называются индексами). Иерархические переменные похожи на объекты со свойствами во многих объектно-ориентированных языках. Кроме того, дизайн языка MUMPS требует, чтобы все индексы переменных автоматически сохранялись в отсортированном порядке. Числовые индексы (включая числа с плавающей запятой) сохраняются от наименьшего к наибольшему. Все нечисловые индексы хранятся в алфавитном порядке после чисел. В терминологии MUMPS это канонический порядок .Используя только неотрицательные целые индексы, программист MUMPS может эмулировать типы данных массивов из других языков. Хотя MUMPS изначально не предлагает полный набор функций СУБД, таких как обязательные схемы, несколько систем СУБД были созданы на его основе, которые предоставляют разработчикам приложений функции плоских файлов, реляционных и сетевых баз данных.

          Кроме того, существуют встроенные операторы, которые обрабатывают строку с разделителями (например, значения, разделенные запятыми) как массив. Ранние программисты MUMPS часто сохраняли структуру связанной информации в виде строки с разделителями, анализируя ее после того, как она была прочитана; это сэкономило время доступа к диску и дало значительное преимущество в скорости на некотором оборудовании.

          MUMPS не имеет типов данных. Числа можно рассматривать как строки цифр, или строки могут обрабатываться как числа с помощью числовых операторов ( с приведением в терминологии MUMPS). Однако принуждение может иметь некоторые странные побочные эффекты. Например, при принуждении строки синтаксический анализатор превращает как можно большую часть строки (начиная слева) в число, а затем отбрасывает остальные. Таким образом, оператор IF 20 <"30 DUCKS" оценивается как TRUE в MUMPS.

          Другие функции языка призваны помочь приложениям MUMPS взаимодействовать друг с другом в многопользовательской среде.Блокировки базы данных, идентификаторы процессов и атомарность транзакций обновления базы данных - все это требуется для стандартных реализаций MUMPS.

          В отличие от языков в традициях Си или Вирта, некоторые пробелы между операторами MUMPS имеют большое значение. Один пробел отделяет команду от ее аргумента, а пробел или новая строка отделяет каждый аргумент от следующего токена MUMPS. Команды, которые не принимают аргументов (например, ELSE ), требуют двух следующих пробелов. Идея состоит в том, что один пробел отделяет команду от (несуществующего) аргумента, следующий отделяет «аргумент» от следующей команды.Новые строки также важны; команда IF , ELSE или FOR обрабатывает (или пропускает) все остальное до конца строки. Чтобы эти операторы управляли несколькими строками, вы должны использовать команду DO для создания блока кода.

          "Привет, мир!" пример

          Простая программа Hello world в MUMPS может быть:

          Здравствуйте()
           
          напишите «Hello, World!» ,!
           
          уволиться
           

          и будет запускаться из командной строки MUMPS с командой ' do ^ hello '.Поскольку MUMPS позволяет объединять команды в одну строку и поскольку команды могут быть сокращены до одной буквы, эту процедуру можно было бы сделать более компактной:

          hello () w "Привет, мир!" ,! q
           

          ',! 'после текста создает новую строку. « quit » не является строго обязательным в конце такой функции, но является хорошей практикой программирования в случае, если другие функции будут добавлены ниже « hello () » позже.

          Краткое описание основных языковых функций

          Основная статья: синтаксис MUMPS

          Следующее краткое изложение призвано дать программистам, знакомым с другими языками, представление о том, на что похож MUMPS.Это не формальная спецификация языка, и многие функции и квалификаторы были опущены для краткости. ANSI X11.1-1995 дает полное формальное описание языка; аннотированная версия этого стандарта доступна в Интернете. [13]

          Типы данных : существует один универсальный тип данных, который неявно приводится к строковым, целочисленным или типам данных с плавающей запятой в зависимости от контекста.

          Логические значения (называемые значениями истинности в MUMPS): в командах IF и другом синтаксисе, в которых выражения оцениваются как условия, любое строковое значение оценивается как числовое значение, и если это ненулевое значение, оно интерпретируется как True . a возвращает 1, если a меньше b, в противном случае - 0.

          Заявления : Нет. Все переменные динамически создаются при первом присвоении значения.

          Строки : являются важными синтаксическими объектами, в отличие от их статуса в языках, созданных по образцу C или Pascal. Несколько операторов в строке разрешены и являются обычным явлением. Область действия любой команды IF, ELSE и FOR - «остаток текущей строки».

          Чувствительность к регистру : Команды и встроенные функции нечувствительны к регистру.Напротив, имена и метки переменных чувствительны к регистру. Нет особого значения для прописных и строчных букв и несколько широко используемых соглашений. Знак процента (%) разрешен как первый символ переменных и меток.

          Постусловия : выполнение почти всех команд можно контролировать, поставив после них двоеточие и выражение истинности. SET: N <10 A = "FOO" устанавливает A в "FOO", если N меньше 10; DO: N> 100 PRINTERR, выполняет PRINTERR, если N больше 100.Эта конструкция предоставляет условное выражение, область видимости которого меньше полной строки.

          Сокращение : Вы можете сокращать почти все команды и собственные функции до одного, двух или трех символов.

          Зарезервированные слова : Нет. Поскольку MUMPS интерпретирует исходный код по контексту, нет необходимости в зарезервированных словах. Вы можете использовать имена языковых команд в качестве переменных. Такого конкурса, как Международный конкурс запутанного кода C для MUMPS, не проводилось, несмотря на потенциальные примеры, такие как следующий совершенно законный код MUMPS:

          ГРЕПТИС ()
                 NEW SET, NEW, THEN, IF, KILL, QUIT SET IF = "KILL", SET = "11", KILL = "l1", QUIT = "RETURN", THEN = "KILL"
                 ЕСЛИ ЕСЛИ = ТО СДЕЛАТЬ ТО
                 ВЫЙТИ: $ ВЫЙТИ ВЫЙТИ ВЫЙТИ; (уволиться)
          THEN IF IF, SET & KILL SET SET = SET + KILL QUIT
           

          MUMPS можно сделать более запутанным с помощью синтаксиса сокращенного оператора, как показано в этом кратком примере, полученном из приведенного выше примера:

          ГРЕПТИС ()
                 N S, N, T, I, K, Q S I = «K», S = «11», K = «l1», Q = «R», T = «K»
                 I I = T D T
                 Q: $ Q Q Q
          Т И Я, S & K S S = S + K Q
           

          Массивы : создаются динамически, хранятся как B-деревья, являются разреженными (т.е.е. почти не использовать места для отсутствующих узлов), можно использовать любое количество индексов, а индексы могут быть строковыми или числовыми (включая числа с плавающей запятой). Массивы всегда автоматически сохраняются в отсортированном порядке, поэтому никогда не возникает необходимости сортировать, упаковывать, переупорядочивать или иным образом реорганизовывать базу данных. Встроенные функции, такие как $ DATA, $ ORDER, $ NEXT (не рекомендуется) и $ QUERY, обеспечивают эффективное изучение и обход основной структуры массива на диске или в памяти.

          для i = 10000: 1: 12345 установите sqtable (i) = i * i
          установить адрес ("Smith", "Daniel") = "dpbsmith @ world.деф . Они хранятся на диске, доступны для всех процессов и остаются постоянными, когда процесс создания завершается. Очень большие глобальные объекты (например, сотни гигабайт) практичны и эффективны в большинстве реализаций. Это основной механизм "базы данных" MUMPS. Он используется вместо вызова операционной системы для создания, записи и чтения файлов. 

          Косвенное обращение : во многих контекстах может использоваться @VBL , который эффективно заменяет содержимое VBL на другой оператор MUMPS. SET XYZ = "ABC" SET @ XYZ = 123 устанавливает для переменной ABC значение 123. SET SUBROU = "REPORT" DO @SUBROU выполняет подпрограмму с именем REPORT. Эта подстановка допускает ленивую оценку и позднее связывание, а также фактически является операционным эквивалентом «указателей» в других языках.

          Функция Piece : разбивает переменные на сегментированные части, руководствуясь заданной пользователем разделительной строкой (иногда называемой «разделителем»). Те, кто знает awk, найдут это знакомым.", 3) означает" третью часть STRINGVAR, разделенную кареткой ". Функция piece также может отображаться как цель назначения (команда SET). После

          УСТАНОВИТЬ X = "[email protected]"
           

          $ PIECE ("world.std.com", ".", 2) возвращает "std" SET $ P (X, "@", 1) = "office" превращает X в "office @ world" .std.com "(обратите внимание, что $ P эквивалентно $ PIECE и может быть записано как таковое).

          Функция заказа : Эта функция обрабатывает входные данные как структуру и находит следующий существующий индекс, который имеет ту же структуру, за исключением последнего нижнего индекса.Он возвращает отсортированное значение, упорядоченное после введенного в качестве входных данных. (При этом ссылка на массив рассматривается как данные с адресацией по содержимому, а не как адрес значения)

          Установите stuff (6) = "xyz", stuff (10) = 26, stuff (15) = ""
           

          $ Order (stuff ("")) дает 6, $ Order (штука (6)) дает 10, $ Order (штука (8)) дает 10, $ Order (штука (10)) дает 15, $ Заказ (штука (15)) дает "".

          Set i = "" For Set i = $ O (stuff (i)) Quit: i = "" Write!, I, 10, stuff (i)
           

          Для итерации базы данных функция Order возвращает следующий ключ для использования. | "DENVER" | A (1000) = "Foo" ), что может позволить вам для доступа к данным на удаленных машинах.

          Подробный список остальных команд, операторов, функций и специальных переменных MUMPS можно найти на следующих онлайн-ресурсах:

          Споры об именах "MUMPS" и "M"

          Хотя эта тема не очень интересна для тех, кто не участвует в сообществе MUMPS / M, здесь возникают споры.

          Все следующие должности могут поддерживаться и поддерживались знающими людьми в разное время:

          • Язык стал называться M в 1993 году, когда M Technology Association приняла его.
          • Название стало M 8 декабря 1995 г. с одобрения ANSI X11.1-1995
          • .
          • Имена M и MUMPS являются официально принятыми названиями.
          • M - это всего лишь «альтернативное имя» или «псевдоним» для языка, а MUMPS по-прежнему является официальным названием.

          Некоторые разногласия возникли в ответ на решительную защиту M со стороны одного коммерческого заинтересованного лица, InterSystems, исполнительный директор которой не любил название MUMPS и считал его серьезным маркетинговым препятствием.Таким образом, предпочтение M в некоторой степени было идентифицировано как согласование с InterSystems. Спор также отражал соперничество между организациями (Ассоциация M Technology, Комитет по развитию MUMPS, Комитеты по стандартам ANSI и ISO) относительно того, кто определяет «официальное» название языка. Некоторые авторы попытались решить эту проблему, обозначив язык как M [UMPS] , квадратные скобки являются обычным обозначением дополнительных элементов синтаксиса. Ведущий специалист и автор реализации MUMPS с открытым исходным кодом, профессор Кевин О'Кейн, использует только «MUMPS».

          Самый последний стандарт (ISO / IEC 11756: 1999, подтвержденный 25 июня 2010 г.) по-прежнему упоминает M и MUMPS как официально принятые названия.

          Выбор эпохи

          В MUMPS текущая дата и время содержатся в специальной системной переменной $ H (сокращение от «HOROLOG»). Формат представляет собой пару целых чисел, разделенных запятой, например «54321,12345» Первое число - это количество дней, прошедших с 31 декабря 1840 г., т.е. номер дня 1 - 1 января 1841 г .; второй - количество секунд после полуночи.

          Джеймс М. Пойтрас написал, что он выбрал эту эпоху для процедур даты и времени в пакете, разработанном его группой в MGH в 1969 г .:

          Я вспомнил, как читал старейшего (одного из самых старых?) Гражданина США, ветерана гражданской войны, которому в то время было 121 год. Поскольку я хотел иметь возможность представлять даты в форме юлианского типа, чтобы можно было легко вычислить возраст и иметь возможность представлять любую дату рождения в выбранном числовом диапазоне, я решил, что датой начала в начале 1840-х годов будет ' Безопасно.«Поскольку мой алгоритм наиболее логично работал, когда каждый четвертый год был високосным, за первый год был взят 1841 год. Нулевая точка тогда была 31 декабря 1840 года .... Я не участвовал в переговорах по MDC, но участвовал. объяснить членам Комитета логику моего выбора.

          (В фольклоре ходили более красочные версии, предполагающие, например, что 31 декабря 1840 года было точной датой первой записи в записях MGH, но это, похоже, городские легенды. Другая легенда гласит, что дата была выбрана в ознаменование первого использования эфира в качестве анестетика в Mass General.)

          Примеры программ

          Прямое выполнение исходного кода на исторических вычислительных платформах в эпоху крошечных дисков, крохотной оперативной памяти и последовательных соединений 300 бод привело к историческому стилю кодирования, который был кратким, плотным и дружественным к экспертам, хотя более современные стили кодирования MUMPS обеспечивают более удобочитаемость код.

          Во-первых, пример M-кода из 2010 года, решение контрольного тестирования, основанное на вычислении самой длинной последовательности, встречающейся при вычислении самой длинной последовательности гипотезы Коллатца для диапазона целых чисел.Этот пример написан на GT.M, использует и иллюстрирует многие возможности MUMPS.

          threeen1f
                  ; Найдите максимальное количество шагов для задачи 3n + 1 для всех целых чисел через два входных целых числа.
                  ; См. Http://docs.google.com/View?id=dd5f3337_24gcvprmcw.
                  ; Предполагается, что формат ввода - 3 целых числа, разделенных пробелом, при этом первое целое число меньше второго.
                  ; Третье целое число - это количество параллельных вычислительных потоков. Если он меньше чем в два раза
                  ; количество процессоров или ядер, параметр изменяется на это значение.Необязательное четвертое целое число - это
                  ; размеры блоков целых чисел, над которыми работают порожденные дочерние процессы. Если он не указан, то
                  ; Размер блока - это примерно диапазон, деленный на количество параллельных потоков. Если размер блока
                  ; больше, чем диапазон, деленный на количество потоков выполнения, он уменьшается до этого значения.
                  ; Проверка ошибок ввода не выполняется.
           
                  ; Хотя проблему можно решить, используя строго целые индексы и значения, эта программа
                  ; написано, чтобы показать, что GT.M хранилище ключей и значений может использовать произвольные строки как для ключей, так и для значений -
                  ; каждый нижний индекс и значение записываются с использованием строк в строке исходного кода программы, обозначенных как «цифры».
                  ; Кроме того, при запуске GT.M в режиме UTF-8 строки находятся на нескольких международных языках.
           
                  ; К.С. Бхаскар 2010612
           
                  ; В отношении этой программы не делается никаких заявлений об авторских правах.
           
                  ; Переменные не нужно объявлять перед использованием, они добавляются в подпрограммы, чтобы гарантировать, что они
                  ; не конфликтуют с именами в звонилке.процессор / proc / cpuinfo | wc -l ": ТОЛЬКО ДЛЯ ЧТЕНИЯ) ::" ТРУБА "
                  Использовать "cpus" Потоки чтения Использовать $ PRINCIPAL
                  Закройте "cpus"
                  Установить потоки = 2 * потока; Как минимум два потока выполнения на процессор
           
                  ; На верхнем уровне программа считывает и обрабатывает строки ввода по одной. В каждой строке указано
                  ; одна проблема, которую нужно решить. Поскольку программа предназначена для возобновления работы после сбоя и повторного использования частичного
                  ; результаты, вычисленные до сбоя, данные в базе данных в начале считаются частичными
                  ; результаты предыдущего прогона.После вычисления и записи результатов для строки база данных
                  ; очищено для следующей строки ввода или следующего запуска программы.
           
                  ; Цикл навсегда, прочтите строку (завершите работу в конце файла), обработайте эту строку
                  Для чтения ввода Quit: $ ZEOF! '$ Length (input) Do; ввод имеет всю строку ввода
                  .
                  . Установить i = $ Piece (input, "", 1); i - первое число в строке - это начальное целое число для задачи
                  . Установить j = $ Piece (input, "", 2); j - второе число в строке является конечным целым числом для задачи
                  .Напишите $ FNumber (i, ",", 0), "", $ FNumber (j, ",", 0); печатать начальные и конечные целые числа, форматирование запятыми
                  .
                  . Установите k = $ Piece (input, "", 3); k - третье число в строке ввода - количество параллельных потоков
                  . Если потоки> k Do; распечатать количество потоков выполнения, при необходимости исправлено
                  .. Напишите "(", $ FNumber (k, ",", 0)
                  .. Установите k = streams
                  .. Напишите "->", $ FNumber (k, ",", 0), ")"
                  . Иначе напишите "", $ FNumber (k, ",", 0)
                  .. Установить blk = + $ Piece (input, "", 4); blk - размер блоков целых чисел не обязателен четвертый кусок
                  . Установите tmp = (j-i + k) \ k; по умолчанию / максимальный размер блока
                  . Если blk & (blk '> tmp) Напишите "", $ FNumber (blk, ",", 0); размер блока печати, опционально исправленный
                  . Еще сделать
                  .. Напишите "(", $ FNumber (blk, ",", 0)
                  .. Установите blk = tmp
                  .. Напишите "->", $ FNumber (blk, ",", 0), ")"
                  .
                  . ; Определите блоки целых чисел для дочерних процессов, над которыми они будут работать
                  .count); Атомарное приращение счетчика в базе данных для синхронизации процессов
                  .. Установить def = $ ZTRNLNM ("gtm_tmp") Установить: '$ Length (def) def = $ ZTRNLNM ("PWD"); Рабочий каталог для процесса Jobbed
                  .. Установить err = $ Text (+0) _ "_" _ $ Job _ "_" _ s _ ". Mje"; STDERR для рабочего процесса
                  .. Setout = $ Extract (err, 1, $ Length (err) -1) _ "o"; STDOUT для рабочего процесса
                  .. Установите cmd = "doblk (i) :( ERROR =" "" _ err _ "" ": OUTPUT =" "" _ out _ "" ": DEFAULT =" "" _ def_ "" ")"; Команда для работы
                  .счет идет на 0, когда они это делают)
                  . Замок -l1; Снимите блокировку, чтобы процессы могли запускаться
                  . Установите startat = $ HOROLOG; Получить время начала
                  . Замок + l2; Дождитесь завершения процессов
                  .
                  . ; Когда родительский элемент получает блокировку l2, дочерние процессы завершаются, а родительский процесс собирает и сообщает результаты.
                  . установить endat = $ HOROLOG; Получить время окончания - время между startat и endat - это прошедшее время
                  .обновления
                  Уволиться
           
          digitsinit; Инициализировать массивы для преобразования строк в целые числа
                  Новый м, х
                  Установить x = $ Text (цифры)
                  Для m = 0: 1: 9 установите di ($ Piece (x, ";", m + 2)) = m, ds (m) = $ Piece (x, ";", m + 2)
                  Уволиться
           
          inttostr (n); Преобразовать целое число в строку
                  Новые м, с
                  Установить s = ds ($ Extract (n, 1))
                  Для m = 2: 1: $ Length (n) Установить s = s_ "" _ds ($ Extract (n, m))
                  Выйти
                  ;
          strtoint (s); Преобразуйте строку в целое число
                  Новый м, н
                  Установить n = di ($ Piece (s, "", 1))
                  Для m = 2: 1: $ Length (s, "") Установить n = 10 * n + di ($ Piece (s, "", m))
                  Выйти
           
          ; Здесь начинаются рабочие процессы
          доблк (все сначала)
                  Установить (чтения, обновления, наивысший) = 0; Начните с нуля операций чтения, записи и максимального числа
                  Сделайте digitsinit; Инициализировать данные для преобразования между целыми числами и строками
                  Lock + l2 ($ JOB); Получите блокировку l2, которую родитель будет ждать, пока не будут выполнены эти процессы Jobbed
                  Если $ Increment (^ count, -1); Уменьшите ^ подсчитайте, чтобы сказать, что этот процесс жив
                  Блокировка + l1 ($ JOB); Этот процесс получит блокировку l1 ($ JOB), только родитель снял блокировку на l1
                  ;
                  ; Обрабатывать следующий блок в ^ пределах, который требует обработки; выйти, когда закончишь
                  Для выхода: '$ Data (^ limits ($ increment (tmp))) Do: 1 = $ increment (^ limits (tmp, 1)) dostep ($ select ($ data (^ limits (tmp-1)): ^ пределы (tmp-1) +1,1: все сначала), ^ пределы (tmp))
                  ;
                  TStart (); Обновить глобальную статистику внутри транзакции
                  ; Следующая строка безоговорочно добавляет количество операций чтения и записи, выполненных этим процессом, к
                  ; количество операций чтения и записи, выполненных всеми процессами, и устанавливает максимальное значение для всех процессов, если
                  ; максимальное значение, вычисленное этим процессом, больше, чем рассчитанное до сих пор для всех процессов
                  Установить: $ Increment (^ читает, читает) & $ Increment (^ обновляет, обновляет) & (самый высокий> $ Get (^ самый высокий)) ^ самый высокий = самый высокий
                  TCommit
                  Блокировка -l1 ($ JOB), - l2 ($ JOB); Освободите блокировки, чтобы сообщить родителю, что этот родитель готов
                  Уволиться                                    ; Здесь завершаются рабочие процессы
           
          достеп (первый, последний); Рассчитайте максимальное количество шагов от первого до последнего
                  Новый ток, currpath, i, n
                  Для current = first: 1: last Do
                  .шаг ($$ inttostr (currpath (n))) = $$ inttostr (i-n)
                  Уволиться
           

          Далее, пример «традиционного» стиля кодирования M, подпрограммы исходного кода VistA с конца 1970-х годов (последний раз редактировалась в 1992 году), первоначально написанная Джорджем Тимсоном в то время, когда стандарт языка не развивал такие функции, как область видимости переменных. Общеизвестно, что этот код сегодня не очень удобен для чтения для многих программистов, хотя следует отметить, что код «удобен для экспертов», , то есть для опытных программистов VistA, он удобочитаем и правильно структурирован.

          Из-за краткости полностью сокращенного кода MUMPS размер аналогичного кода на других языках программирования, обеспечивающих такую ​​же функциональность, будет значительно больше.

          % DTC
          % DTC; SF / XAK - ДАТА / ВРЕМЯ ОПЕРАЦИИ; 16.01.92, 11:36
               ;; 19.0; VA FileMan ;; 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
               К% H, X1, X2 Q
               ;
          CSX = X1 Q: 'XDHS% H =% H + X2 D YMD S: $ P (X1, ".", Г + 1) _ "ДЕНЬ"
               S: Y <0 X = "" Q
          7 S% =% H> 21608 +% H-.% DT
          PF S% H = $ HD 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
          СЕЙЧАС 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: Х, 1: 0)
               Q
          ЗАПЯТА;
               S% D = X <0 S:% DX = -XS% = $ 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 SX = $ J ($ E ("(",% D) _X_ $ E (")",% D + 1 ),% L) K%,% D,% L
               Q
          HELP S DDH = $ S ($ D (DDH): DDH, 1: 0), A1 = "Примеры допустимых дат:" D%
               S A1 = "20 ЯНВ 1957 или 20 ЯНВ 57 или 20 января 57" _ $ S (% DT '["N": "или 012057", 1: "") D%
               S A1 = «T (СЕГОДНЯ), T + 1 (ЗАВТРА), T + 2, T + 7 и т. Д."D%
               S A1 = «T-1 (ВЧЕРА), T-3W (3 НЕДЕЛИ НАЗАД) и т. Д.» D%
               S A1 = "Если год не указан, компьютер" _ $ S (% DT ["P": "предполагает дату в ПРОШЛОМ.", 1: "использует ТЕКУЩИЙ ГОД.") D%
               I% DT '["X" S A1 = "Вы можете не указывать точный день, например: JAN, 1957" D%
               I% DT '["T",% DT' ["R" G 0
               S A1 = "Если дата не указана, предполагается текущая дата". D%
               S A1 = "После даты укажите время, например, 20 января 10 января, T @ 10:00, 10:30 и т. Д." D%
               S A1 = "Вы можете ввести время, например ПОЛДЕНЬ, ПОЛУНОЧЬ или СЕЙЧАС.% DT: Y '["СЕЙЧАС"
               I '$ D (DDS) W Y, "." К A1 Q
               S DDH (DDH, "T") = DDH (DDH, "T") _ Y_ "." К A1 Q
               ;
          % I '$ D (DDS) W!, "", A1 Q
               S DDH = DDH + 1, DDH (DDH, "T") = "" _A1 Q
           

          Следующий код представляет собой полную реализацию ROT13, тривиально взламываемого шифра, используемого для различных целей в сети, без высокой безопасности. Он иллюстрирует компактный характер кода MUMPS и гораздо менее загадочен, чем приведенный выше пример. ROT13 (.А) ; РОТ (R); S S1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" S S2 = "NOPQRSTUVWXYZABCDEFGHIJKLM" S s1 = "abcdefghijklmnopqrstuvwxyz" S s2 = "nopqrstuvwxyzabcdefghijklm" S R = $ TR (R, S1_s1, S2_s2) Q R

          Ниже приводится вторая реализация, которая иллюстрирует возможности краткости в MUMPS.

          s A = "Строка" F i = 1: 1: $ L (A) W $ c ($ S ($ A ($ E (A, i)) <91: $ A ($ E (A, i)) -52 # 26 + 65,1: $ A ($ E (A, i)) - 84 # 26 + 97))
           

          Наконец, одна из самых коротких программ, когда-либо написанных на языке высокого уровня, демонстрирующая исключительную лаконичность, на которую способен MUMPS.

          Тот же алгоритм с использованием расширенных имен переменных и команд

          Установить X = "Xecute X" Xecute X
           

          Эта программа устанавливает значение «x x» переменной с именем x , а затем запускает бесконечное рекурсивное выполнение x , что, вероятно, приводит к переполнению стека. Всего 13 символов, включая пробелы и знак конца строки (поскольку стандарт MUMPS определяет хранение в символах, а не в байтах), с использованием всего двух символов, первый вариант демонстрирует, что также можно писать неясный и запутанный код в М.

          См. Также

          • PSL расширение к MUMPS
          • Caché ObjectScript объектно-ориентированное расширение MUMPS от известного поставщика MUMPS
          • EsiObjects объектно-ориентированное расширение с открытым исходным кодом для MUMPS

          Список литературы

          Дополнительная литература

          • Уолтерс, Ричард (1989). "Азбука MUMPS. 1989: Баттерворт-Хайнеманн, ISBN 1-55558-017-3.
          • "
          • Уолтерс, Ричард (1997). Программирование M: подробное руководство. Цифровой пресс. ISBN 1-55558-167-6.
          • Левкович, Джон. The Complete MUMPS: Введение и справочное руководство по языку программирования MUMPS. ISBN 0-13-162125-4
          • Кирстен, Вольфганг и др. (2003) Разработка объектно-ориентированных приложений с использованием постреляционной базы данных Caché ISBN 3-540-00960-4
          • Мартинес де Карвахаль Хедрих, Эрнесто (1993). "Эль Ленгуае МАМПЫ". Complete obra en castellano sobre el lenguaje Mumps. ISBN 84-477-0125-5.Исключительное распределение от автора ([email protected])
          • O'Kane, K.C .; Язык для реализации программного обеспечения для поиска информации, Online Review, Vol 16, No. 3, pp 127–137 (1992).
          • O'Kane, K.C .; и McColligan, E. E., Пример истории болезни пациента во внутренней сети, журнал Общества информационных и управленческих систем здравоохранения, Том 11, № 3, стр. 81–95 (1997).
          • O'Kane, K.C .; and McColligan, E.E., A Web Based Virtual Machine, Proceedings of the American Medical Informatics Association 1997
          • О'Кейн, К.C., Язык программирования Mumps, Createspace, ISBN 1-4382-4338-3, 120 страниц (2010).

          Внешние ссылки

          .

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *