| |||
Реферат: Разработка автоматизированной системы учета выбывших из стационараАннотация Дипломный проект посвящен разработке автоматизированной информационной
системы учета выбывших из стационара. Система базируется на форме №066/у Система предназначена для работы в отделениях медстатистики больниц и не требует от пользователя дополнительных знаний по программированию, она предоставляет ему удобный экранный интерфейс для работы с многофайловой базой данных. База данных содержит информацию о выбывших больных, адекватную информации в форме №066/у МЗ России. На основании этой информации система позволяет формировать отчетные документы по фиксированным формам. Документы формируются за любой отчетный период (дни, месяцы, годы), по всему стационару или по любому его отделению. Система прошла опытную эксплуатацию в Детской городской клинической больнице N13 им. Н.Ф. Филатова и передана для внедрения в отделении медстатистики этой больницы. Программное обеспечение системы написано на языке программирования Экономико-организационная часть включает в себя анализ информации по теме дипломного проекта, расчет годового экономического эффекта и рекламу разработки. Отчетные материалы к дипломному проекту включают пояснительную записку, 5 приложений и графический материал. Содержание Введение 4 1. Анализ существующих методов создания информационных систем в медицине 6 1.1. Классификация МИС 6 1.2. Методология создания автоматизированных больничных информационных систем 7 1.2.1. Декомпозиция АБИС 8 1.2.2. Интеграция компонент АБИС 9 1.3. Архитектура интегрированных АБИС 10 1.4. Эффективность применения АБИС 11 2. Технология работы отдела Медстатистики по обработке данных о выбывших из стационара, выбор технических и программных средств 13 2.1. Технологическая схема работы отдела 13 2.2. Формализованное описание документооборота 15 2.3. Оценка потоков информации, проходящих через отдел Медстатистики 17 3. Разработка структуры базы данных (БД) и алгоритмов обработки 18 3.1. Структура БД 18 3.1.1. Файловая структура таблиц 19 3.1.2. Сохранность БД 21 3.2. Алгоритм программы 22 4. Описание программной реализации 25 4.1. Описание программы 25 4.1.1. Ввод текущей даты 26 4.1.2. Работа в главном меню 26 4.1.3. Ввод новых данных 27 4.1.4. Редактирование ранее введенной информации 28 4.1.5. Просмотр БД 28 4.1.6. Удаление информации 29 4.1.7. Получение отчетных форм 29 4.1.8. Настройка 32 4.1.9. Выход из программы 33 4.2. Результаты опытной эксплуатации 33 5.Экономико-организационная часть 35 5.1.Анализ потока публикаций 35 5.2. Расчет годового экономического эффекта 36 Заключение 40 Литература. 42 Приложение 1 43 “Техническое задание на разработку автоматизированной информационной системы учета выбывших из стационара (форма №066/у)” 43 Приложение 2 77 Описание применения “Автоматизированной системы учета выбывших из стационара” 77 Приложение 3 83 Руководство оператора “Автоматизированной системы учета выбывших из стационара” 83 Приложение 4 92 Руководство системного программиста “Автоматизированной системы учета выбывших из стационара” 92 Приложение 5 107 Текст и описание программы: “Автоматизированная система учета выбывших из стационара” 107 Введение В последнее время все более возрастает интерес к использованию средств
вычислительной техники в медицине. Это объясняется теми возможностями,
которые несут в себе вычислительные средства, в первую очередь современные
персональные ЭВМ. Эти ЭВМ являются удобным средством для автоматизации
обработки информации в различных областях человеческой деятельности. Современные ПЭВМ имеют быстродействие и объем оперативной памяти достаточные для обработки больших массивов информации, их применение в таких областях медицины как, например, Медстатистика, позволяет значительно сократить затраты ручного труда, повысить качество и правильность работы, сократить время получения конечного результата. Именно этой проблеме и посвящен дипломный проект. Его целью была
разработка автоматизированной системы выбывших из стационара, в основе
которой лежит форма №066/у Министерства Здравоохранения России: О важности данной разработки говорит тот факт, что прикладное программное обеспечение информационных систем, необходимое учреждениям здравоохранения, редко может быть закуплено в готовом виде и так как практически все учреждения здравоохранения обладают своей спецификой. Выполнение дипломного проекта потребовало решения следующих основных
задач: Содержание пояснительной записки в значительной степени определяется перечисленными задачами.
Обеспечение здоровья населения требует постоянного сбора и хранения данных. Затраты на создание и функционирование системы сбора, хранения, обработки и передачи информации составляют значительную и постоянно возрастающую часть бюджета лечебных учреждений. По одним оценкам [1] эти затраты составляют от 10 до 20% от суммарных затрат на лечение, по другим они составляют до 33% бюджета лечебных учреждений. Для снижения этих затрат, дальнейшего совершенствования обработки и представления информации, а также для повышения эффективности управления лечебными учреждениями разрабатываются и внедряются разнообразные медицинские информационные системы (МИС). 1.1. Классификация МИС Согласно [1], общим для всех МИС является рутинный систематический
сбор данных, интегрируемых в информацию, обеспечивающую принятие
управляющих административных и медицинских решений. В той же работе [1]
описывается следующая классификация МИС: Амбулаторные МИС обеспечивают сбор данных о каждом визите пациента к врачу, включая диагноз, оказанные медицинские услуги и предписанные назначения. Эти данные используются при повторных визитах, планирования работы, выписке счета пациенту и т.д. МИС стационаров обеспечивают сбор данных для выписного эпикриза, в том числе краткий анамнез, диагнозы, продолжительность госпитализации, состояние при выписке и перечень оказанных медицинский услуг вместе с их стоимостью. Эти данные используются при повторной госпитализации, для учета и планирования работы подразделений и отдельных врачей, для расчетов с пациентами и т.д. МИС социального страхования здоровья населения собирают данные обо всех медицинских услугах, стоимость которых требуется возместить из бюджета страховой компании, и обеспечивают расчеты с лечебными учреждениями. Национальные МИС собирают данные о функционировании медицинских учреждений и обобщают эту информацию для руководства национальным сектором здравоохранения. 1.2. Методология создания автоматизированных больничных информационных систем Современная автоматизированная больничная информационная система АБИС обладает высокой сложностью и в целях управляемости, как в
техническом, так и в организационном отношениях целесообразнее разделить ее
на отдельные системы или подсистемы, которые можно создавать поэтапно. АБИС, спроектированная по такому принципу, получила название 1.2.1. Декомпозиция АБИС Существует много подходов к декомпозиции АБИС. Все они опираются на сочетание двух принципов ее разделения на отдельные взаимосвязанные компоненты: горизонтального и вертикального [1] . Горизонтальный принцип соответствует созданию отдельных систем, ориентированных на нужды конкретного пользователя или достаточно однородной группы пользователей, например, подразделяют АБИС на административную систему, лабораторную систему и группу специализированных систем (аптечная система, система диетпитания, консультационные системы и пр.). Вертикальный или функциональный принцип деления соответствует выделению систем, каждая из которых имеет определенный набор функций и может выполнять их по запросу любого пользователя системы. Примером может служить следующее вертикальное деление АБИС на 5 подсистем, каждая из которых наделена специфической функцией: 1) обеспечение выполнения медицинских действий; 2) эксплуатация медицинских данных в целях увеличения объема медицинских знаний в лечебном учреждении; 3) обеспечение материально-технического и медицинского снабжения; 4) оперативное планирование административной деятельности; 5) оперативное планирование лечебной деятельности. Исторически преобладающим оказался горизонтальный подход, при котором вначале создаются автоматизированные системы отдельных подразделений и служб, которые затем объединяются в интегрированную АБИС. Так, первые интегрированные АБИС появились в результате слияния административно- финансовых систем с независимо разрабатывающимися автоматизированными системами диагностических подразделений больниц, в первую очередь клинических лабораторий и отделений лучевой диагностики. 1.2.2. Интеграция компонент АБИС Интеграция компонент АБИС является не менее сложным предприятием, чем ее декомпозиция на отдельные компоненты. Выделяют три основных требования к интеграции систем АБИС [1]: Интеграция не является самоцелью и должна вводится для улучшения функционирования больницы. Отдельные системы интегрированной АБИС вводятся в эксплуатацию, как правило, поэтапно. Состав АБИС, сроки и последовательность ввода ее отдельных систем в эксплуатацию зависят от приоритетов, устанавливаемых руководством больницы, и имеющихся финансовых возможностей. 1.3. Архитектура интегрированных АБИС Можно выделить следующие модели архитектуры АБИС: АБИС модели с централизованной обработкой данных выполнены на базе одной или нескольких тесно связанных больших ЭВМ или супер-ЭВМ, которые выполняют централизованную обработку всех потоков информации. Достоинством централизованной обработки данных является относительная простота организации доступа к данным о пациенте, отсутствие избыточности хранения информации. К недостаткам можно отнести необходимость значительных начальных капиталовложений, в том числе на оборудование машинного зала и стандартное программное обеспечение, а также определенные трудности развития прикладного программного обеспечения АБИС. АБИС модели с распределенной обработкой данных выполнены на базе сети малых или больших ЭВМ, каждая из которых имеет собственную базу данных. Основное достоинство этой модели состоит в том, что средства вычислительной техники могут приобретаться постепенно и компоненты АБИС могут быть внедрены поэтапно. Однако распределенность базы данных по нескольким ЭВМ приводит к усложнению разработки прикладного программного обеспечения АБИС и определенным трудностям обеспечения бесперебойной эксплуатации оборудования, а также эксплуатации баз данных. Архитектура многих АБИС не укладывается в рамки описанных выше моделей, они имеют смешанную архитектуру. Например, в связи с широким распространением ПЭВМ в ряде АБИС они используются в качестве терминалов центральных ЭВМ, для решения локальных задач в нуждах отдельных подразделений больницы или даже отдельных специалистов, а также для предоставления справочно-информационных услуг. Имеются примеры совместного использования центральной ЭВМ и локальной сети ПЭВМ, предназначенной для диспетчеризации амбулаторного приема [1]. 1.4. Эффективность применения АБИС Будучи средством организации труда персонала больницы АБИС не
оказывает прямого влияния на лечение пациента. Однако система позволяет
активно влиять на процессы принятия персоналом больницы как
административных, так и медицинских решений. В качестве целей создания АБИС
можно привести следующие: Если раньше основным назначением АБИС было улучшение управления больницей, то теперь - это улучшение качества лечения. Внедрение АБИС не приводит к снижению бюджетных затрат, а лишь
способствует уменьшению их роста. Основной потенциал рационализации
функционирования больницы заключается в снижении расходов на зарплату
персонала, которая составляет 60-70% бюджета больницы [1]. Такое снижение
может быть достигнуто только за счет изменения в организации труда,
распределения работ и ответственности за их выполнение. Поскольку
наибольшие штаты и средства (за исключением собственно лечения) отвлекает
обработка информации, на что расходуется до 15-25% бюджета больницы, то
потенциальный экономический эффект внедрения АБИС достаточно высок.
2.1. Технологическая схема работы отдела Для обеспечения оперативной информацией различных категорий сотрудников больницы и формирования отчетных материалов о лечебной деятельности отделений стационара в нем существует отделение медстатистики. Рассмотрим технологию работы медстатистики при поступлении информации
из отделений стационара. На рис.1 представлена структура функциональной
связи отдела с другими подразделениями больницы при поступлении информации
о выбывших больных. Рис. 1. Технологическая схема работы отдела медстатистики. В медстатистику поступают истории болезни (ИБ) с заполненными врачами
статистическими картами на выбывших из стационара (форма №066/у). Форма Таблицы 1-3,16-19 формируются для написания отчетов о деятельности стационара для администрации больницы и в вышестоящие организации, 4-15 - только для администрации больницы. 2.2. Формализованное описание документооборота Форма №066/у является обязательным документом для любого стационара 2.3. Оценка потоков информации, проходящих через отдел Медстатистики В 1998 году план на пролеченных больных в ДГКБ составил 22 400 человек. На каждого пролеченного больного должна быть сформирована ф.№066/у. Объем одной этой формы составляет около 1 КБ, тогда объем поступающей информации по ф.№066/у в год составит порядка 19 МБ. При этом в медстатистику поступает и другая информация: о движении больных и коечного фонда (ф.7), а также информация из хирургического центра, районной поликлиники и травмопункта. Самый большой объем здесь имеет форма 7. Если считать, что объем одной ф.7 также равен 1 КБ, то в день объем поступившей информации по ф.7 составит 15 КБ. Если полагать, что число рабочих дней в году 273, то годовой объем информации, поступившей в медстатистику по ф.7 составит порядка 4 МБ. Тогда общий объем информации составит 23 МБ. При этом объем информации, поступающий в день, составит порядка 0.1 МБ. В стационар из медстатистики поступает порядка 0.003 МБ информации, в том случае, если администрации передается информация, сформированная на основе ф.7. Учитывая характер работы стационара, следует предположить, что основная информация будет проходить в сети с 8 до 14 часов. При этом интенсивность потока информации составляет порядка 0.036 Кбит/с. При пропускной способности стандартной сети Ethernet 10 Мбит/с этот поток не представляет большой нагрузки на сеть. Следует ожидать, что не рассмотренные оценки потоков информации из хирургического центра, районной поликлиники и травмопункта не окажут существенного влияния на загрузку сети. 3. Разработка структуры базы данных (БД) и алгоритмов обработки 3.1. Структура БД Для хранения информации по выбывшим больным была разработана БД,
концептуальная модель которой представлена на рис.2. Рис. 2. Концептуальная модель базы данных. БД является распределенной - она состоит из трех таблиц: Связь осуществляется по номеру истории болезни. Каждому выбывшему
соответствует одна запись в таблице "KARTA" и такое количество записей в
таблицах "DIA66" и "OP66", сколько диагнозов ему проставлено и сколько
операций ему было проведено соответственно. Другими словами между таблицей Для уменьшения объема, отводимого для хранения одной записи в таблице 3.1.1. Файловая структура таблиц Каждая таблица включает в себя файл(ы) данных и файл(ы) индексов. Структура файла KARTA66.DBF: Индексное выражение для файла: NUM_IB. Структура файла DIA66.DBF: Индексное выражение для файла: NUM_IB+KOD1. Структура файла OP66.DBF: Индексное выражение для файла: NUM_IB. 3.1.2. Сохранность БД В целях поддержания сохранности и целостности БД были разработаны организационно - технические мероприятия, заключающиеся в создании программы сохранения на дискеты основных баз данных автоматизированной системы и обучения работы с ней пользователей, а также рекомендации по ее применению, заключающиеся в следующем: по окончанию сеанса работы с системой желательно сохранить вновь введенную информацию на дискеты для возможности ее восстановления, если жесткий диск выйдет из строя. При сохранении информации на дискеты переносятся все основные базы данных полностью, причем каждая база данных на свою дискету. Если объема одной дискета будет не достаточно для сохранения какой-либо базы данных, то эта база данных будет сохранена на нескольких дискетах. Программа сохранения не требует от персонала специальных навыков: необходимо только запустить ее и вставлять/вынимать дискеты, реагируя на сообщения, которые она будет выдавать на экран. Частоту запусков программы сохранения определяет сам пользователь. 3.2. Алгоритм программы Система предназначена для автоматизации заполнения формы №066/у В соответствии с ТЗ на разработку системы взаимодействие программы с пользователем должно быть реализовано по следующему алгоритму: 1) Ввод текущей даты; 2) Выбор из главного меню одной из следующих функций: а) Ввод данных (перечень данных см. пункт 2.2) и печать; б) Коррекция ранее введенных данных; в) Поиск данных больного по N ИБ или по фамилии. г) Получение отчетных форм (за отчетный период с по ); д) Выход из программы. После выполнения каждой функции необходимо обеспечить возврат в главное меню и выбор любой другой функции. При выборе функции "Выход из программы" работа программы завершается. При выборе функции "Коррекция ранее введенных данных" пользователь может откорректировать данные, введенные ранее. Предусмотрен также режим "Настройка программы", который должен обеспечивать адаптацию программы к изменяющимся справочникам, используемым в программе. Режим настройки должен быть скрыт от конечного пользователя программы и доступен лишь администратору БД. Разработанный алгоритм программы приведен на рис.3. Алгоритм процедуры формирования отчетных документов приведен на рис.4. [pic] Рис. 3.Алгоритм программы. [pic] Рис. 4. Алгоритм формирования отчетов. 4. Описание программной реализации 4.1. Описание программы Как уже отмечалось ранее, автоматизированная система выбывшего из
стационара предназначена для автоматизации процесса заполнения формы №066/у Программа обеспечивает: Она ориентирована на пользователя, не являющегося профессионалом в области вычислительной техники. Система реализована для персональных ЭВМ IBM PC XT/AT со следующим набором периферийных устройств: принтер; дисплей с платой адаптера EGA/VGA, накопитель на жестком диске объемом не менее 80 Мб. Минимальный объем свободной оперативной памяти 540 Кб. Программа написана на языке программирования Clipper и работает под управлением операционной системой MS DOS версии 3.1 и выше. Для запуска программы необходимо набрать в командной строке => karta и нажать клавишу ENTER. Об успешном запуске программы свидетельствует приглашение ввести дату Процесс работы с системой разбивается на несколько этапов: 4.1.1. Ввод текущей даты При запуске программы на экране появляется заставка с надписью Для подтверждения даты нажмите клавишу ENTER, для изменения - наберите нужную дату и нажмите клавишу ENTER. Можно также ввести любую дату, а не только текущую. 4.1.2. Работа в главном меню Главное меню программы содержит следующие пункты: Перемещение по пунктам главного меню осуществляется клавишами
перемещения курсора: стрелка вправо, стрелка вниз и стрелка влево, стрелка
вверх. Выбор и отказ от выбора пункта меню осуществляется клавишами ENTER и 4.1.3. Ввод новых данных Если выбран пункт главного меню "Создание", то можно ввести данные в новую карту, выбывшего из стационара (другими словами, заполнить новую форму №066/у). Высвечивается приглашение для введения номера истории болезни вновь выбывшего из стационара больного. Новая карта будет создана только в том случае, если информации о больном, с указанным номером истории болезни, в базе данных нет. После этого на экране появляется текст, который содержит основные
пункты формы №066/у, подлежащие заполнению (см. пункт 2.2). Движение по
этому тексту осуществляется клавишами перемещения курсора, при этом по
экрану перемещается "световое пятно". Для заполнения нужного пункта надо
подвести "световое пятно" к данному пункту текста и нажать клавишу ENTER. Возврат в основное меню происходит по нажатию клавиши F10. Если некоторые пункты (а именно, те которые нужны для составления отчетных документов) не будут заполнены, то вновь введенная форма не будет сохранена. При попытке выхода, в этом случае, пользователю будет предложено заполнить нужные пункты. 4.1.4. Редактирование ранее введенной информации Выбрав пункт главного меню "Редактирование", пользователь может произвести коррекцию любой ранее введенной формы, хранящейся в БД. Для этого ему предлагается либо ввести номер истории болезни, либо фамилию интересующего его больного. Коррекция осуществляется по тем же правилам, что о при "Создании" (см. пункт 4.1.3.). Для поиска №066/у формы интересующего больного, пользователь может использовать "Навигатор" БД (см. пункт 4.1.5.). Пользователь имеет возможность получить твердую копию
отредактированной им формы. Для этого ему надо, находясь в режиме 1. "Печатать текущий раздел документа", т.е. тот пункт, на котором в данный момент находится курсор ("световое пятно"); 2. "Печатать весь документ", т.е. всю данную №066/у форму целиком; 3. "Отказ от печати". Клавишами перемещения курсора и клавишей ENTER пользователь осуществляет выбор. 4.1.5. Просмотр БД Выбрав пункт "Навигатор", пользователь может просмотреть всю
информацию, которая хранится в БД. Для этого ему предлагается меню второго
уровня, используя пункты "Текущая карта", "Следующая карта" и "Предыдущая
карта" которого, пользователь может последовательно просмотреть всю БД. При
этом в нижней части экрана будет представлены номер истории болезни
пациента, его фамилия и дата выписки, соответствующие очередной №066/у
форме. Кроме того, пользователь может ввести условия просмотра: Возврат в основное меню - по F10 или по ESC. После выхода из "Навигатора" текущим номер истории болезни становится тот номер, который был у последней из просмотренных форм. Это можно использовать для поиска и последующего редактирования интересующей пользователя формы или для её удаления ( см. пункт 4.1.6.). 4.1.6. Удаление информации Выбрав этот пункт основного меню, пользователь получает возможность, путем последовательного просмотра БД, помечать интересующие его №066/у формы на удаление. Помеченные пользователем на удаление формы после выполнения пункта 4.1.7. Получение отчетных форм Блок- схема процедуры формирования отчетов была представлена ранее на рис.4. Выбрав пункт главного меню "Отчеты", можно получить отчеты
фиксированной формы на основе введенной информации. Предлагается меню со
следующими пунктами: Выбрав первый пункт, можно получить месячный отчет по любому отделению
стационара. Для этого пользователю предлагается указать названия отделения,
по которому будет формироваться отчет. Если отделение не будет указано, то
отчет формироваться не будет. Можно получить квартальные отчеты, как по всему стационару, так и по любому его отделению. Для этого пользователю предлагается определить отделение, по которому будет формироваться отчет. Если отделение не будет указано (нажата клавиша ESC), то отчет будет формироваться по всему стационару. После выбора отчета необходимо ввести дату начала и окончания отчетного периода. Для ввода даты надо набрать чч/мм/гг на клавиатуре и нажать клавишу ENTER. Для отказа от ввода - ESC. После обработки получается необходимая отчетная форма, которая изображается на экране и сохраняется в файле. Можно получить твердую копию отчетной формы на принтере. Чтобы получить твердую копию на принтере необходимо вы-
полнить следующие действия: Некоторые отчетные документы имеют большую ширину, поэтому для их распечатки необходим широкий принтер. Ширину отчета можно определить при его просмотре после того, как он появится на экране. 4.1.8. Настройка Настройка программы на режим конкретного использования заключается в корректировке справочников. Режим настройки скрыт от конечного пользователя программы и доступен лишь администратору БД. Для корректировки справочников необходимо, находясь в главном меню
программы, нажать Control-F10. При этом пользователь попадает в меню со
следующими альтернативами: При выборе любого пункта меню пользователь переходит к меню добавления, удаления и переименования выбранного списка. В меню, для добавления нового элемента необходимо нажать клавишу INS. При нажатии клавиши ENTER осуществляется выбор текущего элемента в списке с целью его переименования. Вводится новое название элемента и нажимается клавиша ENTER. ESC означает отказ от переименования. При нажатии ESC происходит возврат в предыдущее меню. 4.1.9. Выход из программы Для окончания работы с системой следует выбрать пункт "Выход" главного меню. В программе не предусмотрено специальных сообщений для системного
программиста. При работе программы возможна выдача сообщений исполнительной
системой Clipper. Типичными сообщениями могут быть: "Not enought memory", "Unable to open file " - следует проверить наличие в каталоге указанного файла и при его отсутствии скопировать с резервной дискеты. В более сложных случаях следует записать сообщение и ситуацию, в которой оно возникло, и обратиться к системному программисту, сопровождающему программу. 4.2. Результаты опытной эксплуатации Опытная эксплуатация проходила в Детской городской клинической больнице N13 им. Н. Ф. Филатова (ДГКБ N 13). В систему было заложено порядка 900 форм №066/у действительно выбывших из ДГКБ N13 больных. Ввод информации проводился сотрудниками отдела медстатистики этой больницы. В процессе работы были определенны некоторые особенности ввода информации и формирования отчетных документов. Все они были учтены в окончательном варианте программы. На основании этих 900 форм были получены все возможные отчетные документы. Сверка их с отчетами отдела медстатистики, полученными в ручную, подтвердила правильность работы системы. Система передана для внедрения в отделение медстатистики ДГКБ N13. 5.Экономико-организационная часть 5.1.Анализ потока публикаций В соответствии с заданием на дипломное проектирование проводилось
изучение изменения потока публикаций по теме дипломного проекта. Анализ
проводился с помощью автоматизированной поисковой системы, действующей в Для поиска использовались следующие ключевые слова: Для оценки потока публикаций был взят отрезок времени, начинающийся 1993 годом. Полученные результаты представлены на гистограмме изменения потока публикаций (рис.5). Рис. 5. Гистограмма изменения потока публикаций. Из данной гистограммы видно, что наблюдается непрерывное увеличение числа
публикаций, говорящее, вероятно, о возрастании интереса к проблеме
использования средств вычислительной техники в работе отдела медицинской
статистики. Это, скорее всего, связано со значительным увеличением парка Неослабевающий интерес к этой теме связан с теми большими возможностями, которые представляют такие средства, как СУБД и пакеты прикладных программ. 5.2. Расчет годового экономического эффекта Годовой экономический эффект будем рассчитывать согласно [7]: Э = (Эб – Эн) * Ан, где В качестве единицы работы возьмем работу, проводимую отделом Капитальные затраты Кн представляют собой затраты на выполнение
дипломного проекта Сдп, которые отражаются в величине его себестоимости Кн = Сдп = Спр + Снакл, где Спр = Зосн + Зэвм + Осс + Оп, где Зосн = Зстуд * Тдп + Зрук * Трук + Зконс * Тконс, где Таблица 1. Расчет заработной платы.
Таким образом: Зосн=(800+800+1600+1600) + 62*24 + 62*2=4800+1488+124=6412. Выполнение ДП потребовало 320 часов машинного времени. Стоимость 1 часа на PC XT составляла 40 рублей. Таким образом, Зэвм = 320*40 = 12800 рублей. Отчисления на социальное страхование и в пенсионный фонд составляют (Осс + Оп)= 0.37 * Зосн = 0.37*6412 = 2372.44 рублей Таким образом: Себестоимость эксплуатации Сн представляет собой стоимость единицы работы, сделанной новым образцом. Эта стоимость включает в себя зарплату оператора, работающего с программой (новым образцом) и стоимость машинного времени. Зарплата оператора Зоп вычисляется как произведение времени работы с программой в часах Траб с почасовой оплатой оператора (35 руб./час). Стоимость машинного времени определяется как произведение Траб со стоимостью одного часа машинного времени (40руб/час). Траб определяется из содержания самой работы, которую выполняет
программа: Следовательно, Траб= 12*(14*15/60) + 19*45/60 = 42+14.25 = 56.25 часов. Таким образом, Зоп= 56.25*35 = 1968.75 рублей, а стоимость машинного
времени 56.25*40=2250 рублей. Отчисления в фонд социального страхования и в
пенсионный фонд составят 37% от Зоп, т.е. 1968.75 * 0.37 = 728.44 рублей. Для оценки Эб рассчитаем затраты отдела медстатистики стационара без
использования ЭВМ. В отделе работает пять человек: 12 * (4 * 4000 + 6000) * (1 + 0.37) = 361680 рублей. . Заключение В результате проделанной работы были получены следующие результаты: ПЭВМ IBM PC XT/АТ со следующим набором периферийных устройств: принтер, дисплей с платой адаптера EGA/VGA, накопитель на жестком диске объемом не менее 40 МБ, и минимальным объемом свободной оперативной памяти не менее 540 КБ; а в качестве программных средств – язык программирования Clipper; России); Система прошла опытную эксплуатацию в Детской городской клинической больнице N13 им. Н.Ф.Филатова и передана для внедрения в отделение медстатистики этой больницы. Литература 1. Clipper Summer'87. Комплект документации. Пер. с англ. - К: Диалектика,1998. - 784с.: ил. М: Финансы и статистика, 1991. - 240с.: ил. пер. с англ. - М:Мир, 1990. - 660с.:ил. выпуск N 5: "Использование автоматизированных больничных информационных систем за рубежом": М: Медицина и здравоохранение, 1998. Учебное пособие - М: МИФИ, 1982. - 44с. М: МИФИ, 1990. - 67с. Приложение 1 “Техническое задание на разработку автоматизированной информационной системы учета выбывших из стационара (форма №066/у)” 1. Введение. Автоматизированная система учета выбывших из стационара (условное
обозначение КАРТА) предназначена для автоматизации заполнения формы №066/у 2. Основание для разработки. Основанием для разработки является договор N 12-1-99 на создание научно-технической продукции между ДГКБ N13 и ИТЦ ИА. 3. Назначение разработки. Указано во введении. 4. Требования к программе. 4.1. Функциональные характеристики. Программа должна выполнять функции ввода, хранения и обработки информации о выбывшем больном и формирования ежедневных, месячных и годовых отчетов по фиксированным формам. В программе должен быть обеспечен: Контроль непротиворечивости и целостности информации должен состоять из
двух этапов: Для удобства пользователя в качестве базы для экранного интерфейса необходимо использовать полноэкранное редактирование полей БД. Входной информацией программы является информация из формы №066/у (см. Выходной информацией программы являются таблицы: Приложение 1.5); 1.7); 1.10); 1.14); Таблицы 1-3,16-19 формируются для написания отчетов о деятельности стационара для администрации больницы и в вышестоящие организации, 4-15 - только для администрации больницы. Взаимодействие программы с пользователем должно быть реализовано по
следующему алгоритму: 1. Ввод данных (перечень данных см. в Приложении 1.1) и печать; 2. Коррекция ранее введенных данных; 3. Поиск данных больного по №ИБ или по Фамилии И.О; 4. Получение отчетных форм (за отчетный период с по ); 5. Выход из программы. После выполнения каждой функции необходимо обеспечить возврат в главное меню и выбор любой другой функции. При выборе функции "Выход из программы" работа программы завершается. При выборе функции "Коррекция ранее введенных данных" пользователь может откорректировать данные, вводимые ранее. Предусмотрен также режим "Настройка программы", который должен
обеспечивать адаптацию программы к изменяющимся справочникам, используемым
в программе, а именно: Режим настройки должен быть скрыт от конечного пользователя программы и доступен лишь администратору БД. Концептуальная модель БД ф. №066/у представлена в Приложении 14. 4.2. Требования к надежности. Разработанная программа должна обладать средствами защиты от ошибочных действий персонала. 4.3. Условия эксплуатации. Программа должна быть ориентирована на пользователя, не имеющего специальных навыков работы в области вычислительной техники и программирования. 4.4. Требования к составу и параметрам технических средств. Программу необходимо реализовать на базе ПЭВМ типа IBM PC/XT/AT с набором периферийных устройств (принтер, дисплей с платой адаптера EGA/VGA, накопителем на жестком диске с объемом не менее 40 МБ). 5. Требования к программной документации. Документация на программу должна включать объединенный документ: описание программы и текст программы, эксплуатационные документы в согласованном с пользователем объеме. Приложение 1.1. Данные о больном, фиксируемые в форме №066/у: 1. Мужской; 2. Женский; 1. 0-6 дней. 2. 7-28 дней; 3. 29 дней-3 мес.; 4. 4-6 мес.; 5. 7-9 мес.; 6. 10-12 мес.; 7. 1год; 8. 2-3 года; 9. 4-7 лет; 1. Адрес постоянного местожительства; 2. Район: 1. Москва; 2. Московская область; 3. Иногородний; 4. Сельский житель; 5. Иностранец; 1. Города; 2. Села; 1. Род. дома, род. отделения больниц; 2. Клиники, больницы: 1. ДГКБ №32; 2. ДГКБ №67; 3. ДГКБ №1; 4. ДКБ №11; 5. ДГКБ №3; 6. ГКБ №13; 7. ДКБ №2; 8. ДГКБ №9; 9. 5 ДИБ; 10. ДИБ 12; 11. ДИБ 6; 3. Поликлиники; 4. Консультации; 5. Минздрав России; 6. Скорая; 7. Самотек; 8. ГУЗМ; 9. Военная часть; 1. Оперативное вмешательство; 2. На гемодиализ; 3. В реанимационное отделение; 4. Прочее; 1. Микрохирургия; 2. Хирургия новорожденных; 3. Урология; 4. Травматология; 5. Гнойной хирургии; 6. Торакальное; 7. Искусственная почка; 8. Нефрология; 9. Терапия старшего возраста; 1. Хирургический; 2. Терапевтический; 3. Реологический; 4. Реанимационный; 1. Да; 2. Нет; 1. в первые 6 часов; 2. 7-24 ч.; 3. позднее 24 ч.; 1. выписан; 2. умер; 3. переведен; 1. Куда: 1. ДГКБ №32; 2. ДГКБ №67; 3. ДГКБ №1; 4. ДКБ №11; 5. ДГКБ №3; 6. ГКБ №13; 7. ДКБ №2; 8. ДГКБ №9; 9. 5 ДИБ; 10. ДИБ 12; 11. ДИБ 6; 2. Причины перевода: 1. по профилю; 2. для дальнейшего лечения; 3. оперативное вмешательство; 1. Впервые; 2. Повторно; 1. Основной; 1. клинический; 2. патологоанатомический; 2. осложнения; 1. клинический; 2. патологоанатомический; 3. сопутствующие заболевания; 1. клинический; 2. патологоанатомический; 1. основное заболевание; 2. осложнения основного заболевания; 3. другие важные заболевания, способствовавшие смертельному исходу, но не связанные с заболеванием или его осложнениями, послужившим непосредственной причиной смерти; 1. Дата (число, месяц, год); 2. Название операции (берется из каталога операций в ф.№14 - отчет о деятельности стационара и каталога операций из ф.№30-здрав - отчет ЛПУ) 1. Число, месяц, год; 2. Результат: 1. Положительный; 2. Отрицательный; Приложение 1.2. Месячная таблица для отделений “Хирургия новорожденных” и “Патология
новорожденных” должна включать следующие графы: По каждому названию болезни: 1. 0 - 6 дней; 2. 7 - 14 дней; 3. 15- 21 дня; 4. 22- 28 дней; 5. 29 дней - 3 мес.; 6. 4 - 6 мес.; 7. 7 - 9 мес.; 8. 10 - 12 мес.; 1. Всего; 2. В т.ч. сельских жителей; 3. К/Д; 4. В т.ч. сельских жителей; 1. Всего; 2. Москва; 3. Московская область; 4. Иногородние; 5. Сельские жители; 6. Иностранцы; Приложение 1.3. Месячная таблица для всех отделений стационара (кроме отделений 1. 29 дней. - 3 мес.; 2. 4 - 6 мес.; 3. 7 - 9 мес.; 4. 10 - 12 мес.; 1. Всего; 2. В т.ч. сельских жителей; 3. К/Д; 4. В т.ч. сельских жителей; 1. 1 год; 2. 2 года; 3. 3- 7 лет; 4. 8- 17 лет; 5. Всего; 6. В т.ч. сельские жители; 7. К/Д; 8. В т.ч. сельские жители; 1. Всего; 2. В т.ч. сельские жители; 3. К/Д; 4. В т.ч. сельские жители; 1. Всего; 2. Москва; 3. Московская область; 4. Иногородние; 5. Сельские жители; 6. Иностранцы; 7. К/Д; Приложение 1.4. Таблица распределения выбывших по возрасту и району за год должна
включать следующие графы: 1. 0 - 6 дней; 2. 7 - 28 дней; 3. Всего новорожденных; 4. 29 дней - 3 мес.; 5. 4 - 6 мес.; 6. 7 - 9 мес.; 7. 10 - 12 мес.; 8. Всего до одного года; 9. Один год; 1. Выбыло домой; 2. Переведено в другие учреждения; 3. Умерло; 1. Москва; 2. Московская область; 3. Иногородние; 4. Сельские жители; 5. Иностранцы; Приложение 1.5. Таблица "Состав больных выбывших в возрасте от 0 до 6 суток жизни"
должна включать следующие графы: 1. Острые распираторные инфекции 460 – 466; 2. Пневмония 480-486; 3. Инфекции кожи и подкожной клетчатки 680 – 686; 4. Врожденные аномалии 740 – 759; 5. Внутричерепная родовая травма 767.6; 6. Другие родовые травмы 767.4-7; 7. Внутриматочная гипоксия и асфиксия при родах 768; 8. Синдром дыхательных расстройств и другие распираторные состояния 769, 770.1-9; 9. Врожденные пневмонии 770.0; 1. До 1000 грамм; 2. Большей либо равной 1000 грамм. 3. Для новорожденных с массой тела как меньшей 1000 грамм, так и большей либо равной 1000 грамм. 1. Всего; 2. В том числе в первые 0 - 6 суток после рождения. Приложение 1.6. Таблица "Больные, переведенные в другие лечебные учреждения" должна
включать следующие графы: Приложение 1.7. Таблица "Нозология больных, переведенных из других лечебных
учреждений" должна включать следующие графы: 1. до 28 дней; 2. до года; 3. всего; 1. оперативное вмешательство; 2. на гемодиализ; 3. в реанимационное отделение; 4. прочее; Приложение 1.8. Таблица “Нозология умерших” должна включать следующие графы: По каждому названию болезни. 1. Всего мальчиков; 2. Всего девочек; Приложение 1.9. Таблица "Нозология умерших больных по возрастам" должна включать
следующие графы: 1. Всего мальчиков; 2. Всего девочек; 1. 0 - 6 дней; 2. 7 - 28 дней; 3. Всего новорожденных; 4. 29 дней - 3 мес.; 5. 4 - 6 мес.; 6. 7 - 9 мес.; 7. 10 - 12 мес.; 8. Всего до одного года; 9. Койко-дни больных до одного года; 1. Род. Дома; 2. Клиники, больницы; 3. Поликлиники; 4. Консультации; 5. Минздрав России; 6. Скорая; 7. Самотек; 8. ГУЗМ; 9. Военная часть; 1. Москва; 2. Московская область; 3. Иногородние; 4. Сельские жители; 5. Иностранцы; 1. До суток; 2. Одни сутки; 3. Двое суток; 4. Трое суток; 5. Свыше трех суток; Приложение 1.10. Таблица “Нозология умерших в возрасте от 0 до 6 дней жизни” должна
включать следующие графы: 1. Всего мальчиков; 2. Всего девочек; 1. 0 - 1 дня; 2. 2 - 3 дней; 3. 4 - 6 дней; 4. Всего умерло; 1. Род. Дома; 2. Клиники, больницы; 3. Поликлиники; 4. Консультации; 5. Минздрав России; 6. Скорая; 7. Самотек; 8. ГУЗМ; 9. Военная часть; 1. Москва; 2. Московская область; 3. Иногородние; 4. Сельские жители; 1. До суток; 2. Сутки; 3. Двое суток; 4. Трое суток; 5. Четверо суток; 6. Пять суток; 7. Шесть суток. Приложение 1.11. Таблица "Операции умерших" должна включать следующие графы: По каждому названию болезни; На нервной системе: 1. На головном мозге; 2. На периферийной нервной системе; 1. Из них тиреотомии; 1. По поводу глуакомы; 2. По поводу энуклеации; 3. По поводу катаракты; 1. Из них на ухе; 1. На миндалинах и аденоидах; 2. Пульмонэктомия; 3. Резекция доли легкого; 4. Резекция сегмента легкого; 1. На открытом сердце; 2. Имплантации кардиостимулятора; 1. Операции на артериях; 2. Операции на венах; 1. На желудке по поводу язвенной болезни; 2. По поводу острой непроходимости кишечника; 3. По поводу острого аппендицита; 4. По поводу прободной язвы желудка; 5. По поводу желудочно-кишечного кровотечения; 6. По поводу ущемленной грыжи; 7. По поводу острого холецистита; 8. По поводу острого панкреатита; 9. Аппендиктомии при хроническом аппендиците; 1. Выскабливание матки (кроме аборта); 2. По поводу стерилизации женщин; 1. По поводу внематочной беременности; 2. Наложение щипцов; 3. Вакуум-экстрация; 4. Кесарево сечение (кроме малого влагалищного); 5. Плодоразрушающие; 6. Аборт; 1. На костях и суставах; 1. Прочие операции; Приложение 1.12. Таблица "Нозология умерших до суток" должна включать следующие графы: 1. Всего мальчиков; 2. Всего девочек; 1. 0 - 6 дней; 2. 7 - 14 дней; 3. 15 - 21 дня; 4. 22 дней - 28 дней; 5. Всего новорожденных; 6. 29 дней - 3 мес.; 7. Всего умерло; 1. Род. Дома; 2. Клиники, больницы; 3. Поликлиники; 4. Консультации; 5. Минздрав России; 6. Скорая; 7. Самотек; 8. ГУЗМ; 9. Военная часть; 1. 0-30 мин; 2. 30 мин; 3. 1 час; 4. 1-3 ч; 5. 10-24 ч; 6. более 24 ч; Приложение 1.13. Таблица "Нозология инфекционных заболеваний" должна включать следующие
графы: 1. Общее количество больных выбывших из стационара; 2. Количество больных в возрасте до 1 года, выбывших из стационара; 3. Количество койко-дней проведенное выписанными больными; 4. Количество умерших; 5. Количество умерших до года; 6. Количество койко-дней умерших; 7. Летальность от общего числа умерших. Приложение 1.14. Таблица "Распределение инфекционных заболеваний по отделениям" должна
включать следующие графы: Приложение 1.15. Таблица “Распределения выбывших иногородних больных по каналам
госпитализации и отделениям больницы” должна включать следующие графы: 1. из Москвы; 2. иностранцев; По каждой стране содружества: Приложение 2 Описание применения “Автоматизированной системы учета выбывших из стационара” . 1.Назначение программы. Автоматизированная система учета выбывших из стационара (условное обозначение КАРТА) предназначена для автоматизации процесса заполнения формы №066/у Минздрава России и формирования на ее основе отчетных форм для стационара. Программа позволяет во много раз сократить время получения справочной информации по выбывшим больным за отчетный период, практически исключить ошибки, возникающие при оформлении документов, упростить процедуру коррекции данных. Программа обеспечивает: Программа ориентирована на пользователя, не являющегося профессионалом в области вычислительной техники. 2.Условия применения. Программа КАРТА реализована для персональных ЭВМ IBM PC XT/АТ со
следующим набором периферийных устройств: принтер, дисплей с платой
адаптера EGA/VGA, накопитель на жестком диске объемом не менее 40 МБ. Программа работает под управлением операционной системы MS DOS версии Программа реализована на языке программирования Clipper Summer'87. 3.Описание задачи. Программа обеспечивает ввод и хранение следующих данных: Программа обеспечивает формирование отчетных документов: Таблицы 1-3,16-19 формируются для написания отчетов о деятельности стационара для администрации больницы и в вышестоящие организации, 4-15 - только для администрации больницы. Различия между месячными и квартальными отчетами наблюдаются только в составе информации, выводимой в таблицы. И те, и другие отчеты могут формироваться за любой период. Программа обеспечивает использование и настройку следующих видов
справочников: 4. Входная и выходная информация программы. 4.1 Входная информация. Входной информацией программы является следующая: 4.2 Выходная информация. Выходной информацией программы является следующая: Приложение 3 Руководство оператора “Автоматизированной системы учета выбывших из стационара” . 1.Введение. Автоматизированная система учета выбывших из стационара (условное обозначение КАРТА) предназначена для автоматизации процесса заполнения формы №066/у Минздрава России и формирования на ее основе отчетных форм для стационара. Программа обеспечивает: Программа ориентирована на пользователя, не являющегося профессионалом в области вычислительной техники. 2.Условия выполнения программы. Программа "КАРТА" реализована на персональных ЭВМ IBM PC XT/AT со
следующим набором периферийных устройств: принтер, дисплей с платой
адаптера EGA/VGA, накопитель на жестком диске объемом не менее 80 Мб. Программа работает под управлением операционной системы MS DOS версии 3.Выполнение программы. 3.1 Запуск программы. Для запуска программы необходимо набрать в командной строке =>karta и нажать клавишу ENTER. Об успешном запуске программы свидетельствует приглашение ввести дату 3.2 Выполнение программы. Процесс работы с программой разбивается на несколько этапов: 3.2.1 Ввод текущей даты При запуске программы на экране появляется заставка с надписью Внимание! Можно также ввести любую дату, а не только текущую. 3.2.2 Работа в главном меню. Главное меню программы содержит следующие пункты: Перемещение по пунктам главного меню осуществляется клавишами перемещения курсора: стрелка вправо, стрелка вниз и стрелка влево, стрелка вверх. Выбор и отказ от выбора пункта меню осуществляется клавишами ENTER и ESC соответственно. В нижней части экрана имеется подсказка о тех действиях, которые будут производиться при выборе соответствующего пункта главного меню. 3.2.3 Ввод новых данных Если выбран пункт главного меню "СОЗДАНИЕ", то можно ввести данные в новую карту, выбывшего из стационара (другими словами, заполнить новую форму №066/у). Перед вами высвечивается приглашение для введения номера истории болезни вновь выбывшего из стационара больного. Внимание! Новая карта будет создана только в том случае, если информации о больном, с введенным вами номером истории болезни, в базе данных нет. После этого на экране появляется текст, который содержит основные
пункты формы №066/у, подлежащие заполнению (см. пункт 3 "Описания
применения"). Движение по этому тексту осуществляется клавишами перемещения
курсора, при этом по экрану перемещается "световое пятно". Для заполнения
нужного пункта КАРТЫ надо подвести "световое пятно" к данному пункту текста
и нажать клавишу ENTER. Если данный пункт формы №066/у может содержать одно
из наперед заданных значений, то на экран выводятся все эти значения и
пользователь, используя клавиши перемещения курсора и клавишу ENTER,
осуществляет выбор (используя клавишу ESC, можно выйти из данного пункта Возврат в основное меню происходит по нажатию клавиши F10. Внимание! Если некоторые пункты КАРТЫ (а именно, те которые нужны для составления отчетных документов) не будут заполнены, то вновь введенная форма не будет сохранена. При попытке выхода, в этом случае, пользователю будет предложено заполнить нужные пункты КАРТЫ. 3.2.4. Редактирование ранее введенных форм. Выбрав пункт главного меню "Редактирование", пользователь может произвести коррекцию любой ранее введенной формы, хранящейся в БД. Для этого ему предлагается либо ввести номер истории болезни, либо фамилию интересующего его больного. Коррекция осуществляется по тем же правилам, что и при "Создании" (см. пункт 3.2.3.). Для поиска КАРТЫ интересующего больного, пользователь может использовать "Навигатор" БД (см. пункт 3.2.5.). Пользователь имеет возможность получить твердую копию
отредактированной им КАРТЫ. Для этого ему надо, находясь в режиме Перед пользователем появится меню, пунктами которого являются: Клавишами перемещения курсора и клавишей ENTER пользователь осуществляет выбор. 3.2.5. Навигация (просмотр) БД. Выбрав пункт "Навигатор", пользователь может просмотреть всю
информацию, которая хранится в БД. Для этого ему предлагается меню второго
уровня, используя пункты "Текущая карта", "Следующая карта" и "Предыдущая
карта" которого, пользователь может последовательно просмотреть всю БД. При
этом в нижней части экрана будет представлены номер истории болезни
пациента, его фамилия и дата выписки, соответствующие очередной КАРТЕ. Возврат в основное меню - по F10 или по ESC. Внимание! После выхода из "Навигатора" текущим номер истории болезни становится тот номер, который был у последней из просмотренных КАРТ. Это можно использовать для поиска и последующего редактирования интересующей пользователя КАРТЫ или для ее удаления (см. пункт 3.2.6). 3.2.6. Удаление КАРТ. Выбрав этот пункт основного меню, пользователь получает возможность, путем последовательного просмотра БД, помечать определенные им КАРТЫ на удаление. Внимание! Помеченные пользователем на удаление КАРТЫ после выполнения пункта "Удаление" физически удаляются из БД. 3.2.7. Получение отчетных форм. Выбрав пункт главного меню "Отчеты", можно получить отчеты
фиксированной формы на основе введенной информации. Предлагается меню со
следующими пунктами: Выбрав первый пункт, можно получить месячный отчет по любому отделению стационара. Для этого пользователю предлагается указать названия отделения, по которому будет формироваться отчет. Если отделение не будет указано, то отчет формироваться не будет. Если выбран второй пункт, то необходимо указать конкретный отчет, который
надо сформировать. Выбор осуществляется с помощью следующего меню: Можно получить квартальные отчеты, как по всему стационару, так и по любому его стационару. Для этого пользователю предлагается определить отделение, по которому будет формироваться отчет. Если отделение не будет указано (нажата клавиша ESC), то отчет будет формироваться по всему стационару. После выбора отчета необходимо ввести дату начала и окончания отчетного периода. Для ввода даты наберите чч/мм/гг на клавиатуре и нажмите клавишу ENTER. Для отказа от ввода нажмите клавишу ESC. После обработки получается необходимая отчетная форма, которая изображается на экране и сохраняется в файле. Можно получить твердую копию отчетной формы на принтере. Чтобы получить твердую копию на принтере необходимо выполнить
следующие действия: Всюду для возврата в предыдущее меню используйте клавишу ESC. Внимание! Некоторые отчетные документы имеют большую ширину, поэтому для их распечатки необходим широкий принтер. Ширину отчета можно определить при его просмотре после того, как он появится на экране. 3.2.8. Настройка. Режим настройки скрыт от конечного пользователя программы и доступен
лишь администратору БД, используя его можно настроить программу на
структуру конкретного стационара. Подробнее процедура настройки описана в 3.2.9. Выход из программы. Для окончания работы с программой "КАРТА" следует выбрать пункт Приложение 4 Руководство системного программиста “Автоматизированной системы учета выбывших из стационара” 1. Общие сведения о программе ВНИМАНИЕ! Перед прочтением данного документа следует ознакомиться с документами Автоматизированная система учета выбывших из стационара (условное обозначение КАРТА) предназначена для автоматизации процесса заполнения формы №066/у Минздрава России и получения на ее основе фиксированных отчетных форм. Программа обеспечивает: Программа "КАРТА" реализована на персональных ЭВМ IBM PC XT/AT со
следующим набором периферийных устройств: принтер, дисплей с платой
адаптера EGA/VGA, накопитель на жестком диске объемом не менее 80 Мб. Программа работает под управлением операционной системы MS DOS версии 3.1 и выше. Перед первым запуском программы в файл AUTOEXEC.BAT необходимо включить запись: SET CLIPPER=F50. В файле CONFIG.SYS параметр FILES установить равным 50 (FILES=50). Программа реализована на языке программирования Clipper Summer'87. 2.Структура базы данных 2.1 Общая структура База данных (БД) программы "КАРТА" состоит из следующих основных
компонентов: 2.2 Файловая структура БД Каждая таблица включает в себя файл (ы) данных и файл (ы) индексов. КАRТА66.DBF и КАRТА66.NTX DIA66.DBF и DIA66.NTX OP66.DBF и OP66.NTX MENU.DBF и MENU.NTX CODIF.DBF и CODIF.NTX CLASS.DBF и CLASS.NTX GRUP1.DBF и GRUP1.NTX GRUP2.DBF и GRUP2.NTX BUFF8.DBF и BUFF8.NTX OTD.FRM; OTD1.FRM; OTD2.FRM; OTD5.FRM, OTD51.FRM; NEONAT.FRM; OTCH.FRM; OTCH1.FRM; OTCH2.FRM; OTCH3.FRM; OTCH4.FRM, OTCH41.FRM; OTCH5.FRM; OTCH6.FRM; OTCH7.FRM; OTCH8.FRM; OTCH9.FRM; OTCH91.FRM; OTCH92.FRM; OTCH10.FRM; OTCH101.FRM; OTCH102.FRM; OTCH11.FRM; OTCH111.FRM; OTCH112.FRM; OTCH12.FRM; OTCH121.FRM; OTCH13.FRM; OTCH14.FRM; OTCH15.FRM; OTCH151.FRM; OTCH16.FRM; OTCH17.FRM; OTCH18.FRM; OTCH19.FRM; 2.3 Структуры файлов БД 2.3.1 Структура файла KARTA66.DBF. ИМЯ ТИП ДЛИНА СОДЕРЖАНИЕ NUM_IB C 7 номер истории болезни FAM C 30 фамилия больного F_S_NAME C 30 имя, отчество больного DATE_B D 8 дата рождения HOUR_B N 2 часы рождения MINS_B N 2 минуты рождения OLD N 2 код возраста POL N 1 код пола MASSA C 6 масса PLACE_LIV C 60 адрес RAION N 2 код района CITY_VIL N 1 код: горожанин/селянин DIRECT1 N 2 код направляющего учреждения DIRECT2 N 2 код стационара STATE N 2 код государства WHY N 1 код причины направления DEPARTMENT N 2 код отделения стационара KOIKA N 2 код профиля койки PASS N 1 код состояния поступления TIME N 1 код поступления после болезни DATE_IN D 8 дата поступления в стационар HOUR_IN N 2 часы поступления MINS_IN N 2 минуты поступления END1 N 1 код исхода END2 N 1 код причины исхода END3 N 2 код учреждения для перевода DATE_END D 8 дата исхода HOUR_END N 2 часы исхода MINS_END N 2 минуты исхода ALL_DAY N 2 количество дней в стационаре DIA_DIRECT C 4 направляющий диагноз NUM_COME N 1 код числа поступлений RW_DATE D 8 дата анализа на RW RW_REZ N 1 код результата RW FAM_DOCTOR N 2 код фамилии лечащего врача 2.3.2 Структура файла DIA66.DBF ИМЯ ТИП ДЛИНА СОДЕРЖАНИЕ NUM_IB C 7 номер истории болезни KOD1 C 1 код заболевания KOD2 C 1 код диагноза SHIFR C 4 шифр заболевания COMM M 10 названия заболеваний 2.3.3 Структура файла OP66.DBF ИМЯ ТИП ДЛИНА СОДЕРЖАНИЕ NUM_I C 7 номер истории болезни SHIFR C 4 шифр операции DATA D 8 дата операции COMM M 10 название операции 2.3.4 Структура файла MENU.DBF ИМЯ ТИП ДЛИНА СОДЕРЖАНИЕ KEY C 9 ключ элемента 66 формы TEXT C 60 текст элемента 2.3.5 Структура файла CODIF.DBF ИМЯ ТИП ДЛИНА СОДЕРЖАНИЕ KEY C 9 ключ элемента справочника TEXT C 60 текст элемента справочника 2.3.6 Структура файла CLASS.DBF ИМЯ ТИП ДЛИНА СОДЕРЖАНИЕ NAME_CLASS C 100 название класса заболеваний SHIFR_LEFT C 4 левая граница класса SHIFR_RIGH C 4 правая граница класса Файлы GRUP1.DBF и GRUP2.DBF имеют аналогичную структуру. 2.3.7 Структура файла BUFF8.DBF ИМЯ ТИП ДЛИНА СОДЕРЖАНИЕ NUMBER C 2 Содержание каждого поля SHIFR C 4 зависит от вида отчетного NAME C 100 документа, который формируется NAMECL C 100 и затем хранится в SHIFRL C 4 этой базе данных. SHIFRR C 4 COUNT1 N 10 COUNT2 N 10 A1 N 5 ........ E1 N 5 3. Структура программы КАРТА 3.1 Общие сведения о структуре программы Структура программы КАРТА представлена на рис.6. [pic] Рис. 6. Логическая структура программы Программа состоит из 5 функциональных модулей функций и библиотеки функций. Главный модуль выполняет следующие функции: Модуль ввода данных выполняет следующие функции: Модуль навигации организует просмотр БД по определенным пользователем условиям. Модуль удаления удаляет из БД КАРТЫ, определенные пользователем. Модуль отчетов формирует следующие отчеты: Модуль настройки выполняет следующие функции: Вызов всех модулей второго уровня осуществляется из главного меню программы. Связь между отдельными модулями второго уровня осуществляется только по данным через глобальные переменные и файлы активной базы данных. Работа программы во всех режимах кроме режима настройки детально
описана в документе "Руководство программиста". Режим настройки является
режимом администратора базы данных и описан в настоящем документе в разделе 4. Настройка программы Настройка программы на режим конкретного использования заключается в
корректировке справочников. Для корректировки справочников необходимо,
находясь в главном меню программы, нажать Ctrl-F10. При выборе любого пункта меню пользователь переходит к меню добавления, удаления и переименования выбранного списка. В меню, для добавления нового элемента необходимо нажать клавишу INS. При нажатии клавиши ENTER осуществляется выбор текущего элемента в
списке с целью его переименования. Введите новое название и нажмите клавишу При нажатии ESC происходит возврат в предыдущее меню. 5. Сообщения системному программисту В программе не предусмотрено специальных сообщений для системного
программиста. При работе программы возможна выдача сообщений исполнительной
системой Clipper. Типичными сообщениями могут быть: В более сложных случаях следует записать сообщение и ситуацию, в которой оно возникло и обратиться к разработчикам программы.. Приложение 5 Текст и описание программы: “Автоматизированная система учета выбывших из стационара” . 1. Общие сведения о программе. ВНИМАНИЕ! Перед прочтением данного документа следует ознакомиться с документами Автоматизированная система учета выбывших из стационара (условное обозначение КАРТА) предназначена для автоматизации процесса заполнения формы №066/у Минздрава и получения фиксированных отчетных форм. Программа работает под управлением операционной системы MS DOS версии Перед первым запуском программы в файл AUTOEXEC.BAT необходимо включить запись: SET CLIPPER=F50. В файле CONFIG.SYS параметр FILES установить равным 50 (FILES=50). Программа реализована на языке программирования Clipper Summer'87. 2. Функциональное назначение. Программа выполняет следующие функции: 3. Описание логической структуры программы КАРТА. 3.1 Общие сведения о структуре программы Структура программы КАРТА представлена на рис.7. Рис. 7. Логическая структура программы. Программа состоит из 5 функциональных модулей функций и библиотеки функций. Главный модуль выполняет следующие функции: Модуль ввода данных выполняет следующие функции: Модуль навигации организует просмотр БД по определенным пользователем условиям. Модуль удаления удаляет из БД КАРТЫ, определенные пользователем. Модуль отчетов формирует следующие отчеты: Модуль настройки выполняет следующие функции: Вызов всех модулей второго уровня осуществляется из главного меню программы. Связь между отдельными модулями второго уровня осуществляется только по данным через глобальные переменные и файлы активной базы данных. Работа программы во всех режимах кроме режима настройки детально описана в документе "Руководство оператора". Режим настройки является режимом администратора базы данных и описан в документе "Руководство системного программиста и администратора базы данных" в разделе "Настройка программы". Исходный текст программы (всех модулей) находится в файле KARTA.PRG. 3.2 Описание алгоритма программы Схема алгоритма работы программы представлена на рис. 8. Для работы с Международным классификатором болезней (МКБ) использовалась функция MKB(). Для работы с каталогом операций использовалась функция CATALOG(). [pic] Рис. 8. Схема алгоритма работы программы. Для работы со справочниками используются следующие функции: - полей баз данных. Для представления текста отчетного документа на экране используется функция viewer(). 4. Используемые технические средства Программа "КАРТА" предназначена для установки на персональных ЭВМ IBM 5. Вызов и загрузка Для вызова программы следует набрать в командной строке: =>karta или выбрать файл karta.EXE с помощью «оболочки» типа 'NORTON COMMANDER' и нажать клавишу ENTER. 6. Входные данные Входной информацией программы является следующая: 7. Выходные данные Выходной информацией программы является следующая: "Руководство системного программиста"); . Текст программы на языке Clipper Summer'87 Модуль: Karta.prg ********************************************************************* && .F.- можно edit_index=.F. && .T.- прервать внутренний цикл и вернуться в MAIN gotomain=.F. CHR(217) + CHR(196) + CHR(192) + CHR(179) f2 = CHR(201) + CHR(205) + CHR(187) + CHR(186) + ; CHR(188) + CHR(205) + CHR(200) + CHR(186) f3 = CHR(218) + CHR(196) + CHR(191) + CHR(179) + ; CHR(180) + CHR(196) + CHR(195) + CHR(179) f1_fon = CHR(218) + CHR(196) + CHR(191) + CHR(179) + ; CHR(217) + CHR(196) + CHR(192) + CHR(179) + ; CHR(178) f2_fon = CHR(201) + CHR(205) + CHR(187) + CHR(186) + ; CHR(188) + CHR(205) + CHR(200) + CHR(186) + ; CHR(178) dn_s=CHR(198)+CHR(205)+CHR(181)+CHR(179)+; && стыкуется с рамкой CHR(217)+CHR(196)+CHR(192)+CHR(179) && по верхней границе fon1=CHR(177) fon2=CHR(32) singl=CHR(218)+CHR(196)+CHR(191)+CHR(179)+; CHR(217)+CHR(196)+CHR(192)+CHR(179) doubl=CHR(201)+CHR(205)+CHR(187)+CHR(186)+; CHR(188)+CHR(205)+CHR(200)+CHR(186) IF .NOT. ISCOLOR() color1="W+/N,N/W,W+/N,W/N,W/N" && для меню color2="W/N,W+/N" && для gets color3="W+/N,N/W" && для кодификаторов color4="W/N,N/W" && для рамки каталога color5="W/N,N/W" && для меню при
редактировании color6="W/N,W+/N" && для memed color7=color2 && для шаблонов color8="W/N,W+/N,N/W" && для HYPERTEXT 1-го уровня color9="W/N,W+/N,N/W" && для HYPERTEXT 2-го уровня ******************** ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ ********************** PRIVATE _KOD1 && Клинический диагноз *********************************************************************
******************** ВВОД СЕГОДHЯШHЕЙ ДАТЫ *********************** @ 1,2 PROMPT "Создание" MESSAGE " ввод новой записи ИБ" CASE choice=1 && Добавления записи IF( inpindex()=0) && Ввод ключа "НОМЕР ИСТОРИИ БОЛЕЗНИ" @ 11,18 CLEAR TO 14,62 saycent(12,20,60,"ПОДОЖДИТЕ НЕМНОГО - ИДЕТ ИНИЦИАЛИЗАЦИЯ") DO edit WITH .T. ENDIF CASE choice=2 && Удаление записи DO del CASE choice=3 && Изменение записи ИБ SET COLOR TO(color2) PRIVATE D1 DO WHILE .T. D1=det() && Поиск нужной записи IF D1=1 && Запись найдена saycent(12,20,60,"ПОДОЖДИТЕ НЕМНОГО - ИДЕТ СЧИТЫВАНИЕ ИЗ БД") DO edit WITH .T. EXIT ELSEIF D1=2 && Запись не найдена saycent(12,20,60,"ИНФОРМАЦИИ ОБ УКАЗАННОМ БОЛЬНОМ В БД НЕТ ") INKEY(5) ELSE EXIT ENDIF ENDDO RELEASE D1 CASE choice=4 && Движение по БД DO navy CASE choice=5 && Составление отчетных документов rez() CASE choice=6 && Завершение программы EXIT ********************************************************************** IF LASTKEY()=27 && ESC ret= (-1) EXIT ENDIF SEEK _NUM_IB IF FOUND() TONE(100,3) message('e',"ТАКАЯ ЗАПИСЬ УЖЕ СУЩЕСТВУЕТ,ПРОВЕРЬТЕ HОМЕР ИБ ") LOOP ENDIF ret=0 EXIT TONE(100,3) message('e','HЕ ЗАПОЛHЕH НОМЕР ИБ,ПРОВЕРЬТЕ ЗАПИСЬ') ret=-1 ********************************************************************** _NUM_IB=NUM_IB ********************************************************************** **************** ОБЪЯВЛЕНИЕ МЕНЮ ***************** && массив промптеров для основного меню AFILL(vars1,' ') AFILL(col1,1) IF yesno(12," Сохранить изменения в базе данных ? ")=1 IF all_r() DO new_save RETURN ELSE gotomain=.F. ENDIF ELSE RETURN ENDIF RETURN DO CASE CASE i=0 LOOP CASE i=1 LOOP CASE i=2 vars[i]=offset_get(wt,wl,beg_line,row[i],col[i],promp[i],@_FAM,; "","RUSSIAN(_FAM)") CASE i=3 vars[i]=offset_get(wt,wl,beg_line,row[i],col[i],promp[i],@_F_S_NAME,; "","RUSSIAN(_F_S_NAME)") CASE i=4 _DATE_IN=d_input(_DATE_IN) vars[i]=DTOC(_DATE_IN) _ALL_DAY=_DATE_END-_DATE_IN IF _ALL_DAY=0 _ALL_DAY=1 ENDIF DO ch_day && Изменение количества дней, проведеннх в стационаре CASE i=5 vars[i]=offset_get(wt,wl,beg_line,row[i],col[i],promp[i],@time_IN,; "99.99","check_T(time_IN)") _HOUR_IN=VAL(SUBSTR(time_IN,1,2)) _MINS_IN=VAL(SUBSTR(time_IN,4,5)) CASE i=6 vars[i]=codif1("POLS",@_POL) CASE i=7 _DATE_B=d_input(_DATE_B) vars[i]=DTOC(_DATE_B) CASE i=8 vars[i]=offset_get(wt,wl,beg_line,row[i],col[i],promp[i],@time_B,; "99.99","check_T(time_B)") _HOUR_B=VAL(SUBSTR(time_B,1,2)) _MINS_B=VAL(SUBSTR(time_B,4,5)) y_m_day(_DATE_B,_HOUR_B,_MINS_B,_DATE_IN,_HOUR_IN,_MINS_IN) CASE i=9 vars[i]=codif1("OLDS",@_OLD) CASE i=10 vars[i]=m_input() && Ввод веса тела CASE i=11 vars[i]=offset_get(wt,wl,beg_line,row[i],col[i],promp[i],@_PLACE_LIV) CASE i=12 vars[i]=codif1("RIGS",@_RAION) CASE i=13 vars[i]=codif1("CITZ",@_CITY_VILL) CASE i=14 vars[i]=codif1("DIRS",@_DIRECT1) IF _DIRECT1=1 vars[i]=codif1("BIRS",@_DIRECT2) ELSEIF _DIRECT1=2 vars[i]=codif1("HOSP",@_DIRECT2) ELSE _DIRECT2=0 ENDIF CASE i=15 vars[i]=codifpic("CODIF","STTE",@_STATE) IF _STATE=1 promp[i]="Регион :" vars[i]=codifpic("CODIF","PLCE",@_PLACE) ELSE promp[i]="Государство :" ENDIF CASE i=16 vars[i]=codif1("DEPS",@_DEPARTMENT) CASE i=17 vars[i]=codif1("KOIK",@_KOIKA) CASE i=18 vars[i]=codif1("EXTR",@_PASS) CASE i=19 vars[i]=codif1("TIMS",@_TIME) CASE i=20 vars[i]=codif1("REZS",@_END1) CASE i=21 _DATE_END=d_input(_DATE_END) vars[i]=DTOC(_DATE_END) _ALL_DAY=_DATE_END-_DATE_IN IF _ALL_DAY=0 _ALL_DAY=1 ENDIF IF _ALL_DAY>=0.AND.EMPTY(_DATE_IN)=.F. vars[i]=vars[i]+SPACE(5)+"Проведено дней в стационаре ENDIF CASE i=22 vars[i]=offset_get(wt,wl,beg_line,row[i],col[i],promp[i],@time_END,; "99.99","check_T(time_END)") _HOUR_END=VAL(SUBSTR(time_END,1,2)) _MINS_END=VAL(SUBSTR(time_END,4,5)) CASE i=23 PRIVATE txtd txtd=SPACE(100) vars[i]=offset_get(wt,wl,beg_line,row[i],col[i],promp[i],@_DIA_DIRECT,; "@R 999.9") mkb(1,1,@_DIA_DIRECT,@txtd) IF _DIA_DIRECT=" " vars[23]="" ELSE vars[23]=SUBSTR(_DIA_DIRECT,1,3)+"."+SUBSTR(_DIA_DIRECT,4,1)+" "" new_str=.T. ENDIF RELEASE txtd CASE i=24 vars[i]=codif1("VIZI",@_NUM_COME) CASE i=27 _RW_DATE=d_input(_RW_DATE) vars[i]=DTOC(_RW_DATE) CASE i=28 vars[i]=codif1("RWRZ",@_RW_REZ) CASE i=29 vars[i]=codifpic("CODIF","FAMS",@_FAM_DOCTOR) CASE i=25 vars[i]=diagn() new_str=.T. CASE i=26 DO op new_str=.T. ENDCASE IF _END1=2 && переведен context(@string1,"Причина:",codif1("RIZ2",@_END2)+".",length,.F.) context(@string1,"Куда:",codif1("HOSP",@_END3)+".",length,.F.) ELSEIF _END1=3 && умер context(@string1,"Причина:",codif1("RIZ3",@_END2)+".",length,.F.) ENDIF context(@string1,"Возраст на момент смерти :",; extra1(_OLD_D,"OLDS")+".",length,.F.) ENDIF
stuff1(@string,length,string1,choice,row,len(promp)) RETURN ********************************************************************** IF(_DIRECT1=1,extra1(_DIRECT2,"BIRS"),; extra1(_DIRECT2,"HOSP"))) IF(PLACE=0,"Российская "Российская Федерация") _HOUR_END=HOUR_END PRIVATE txtd txtd=SPACE(100) mkb(1,1,@_DIA_DIRECT,@txtd) vars[23]=SUBSTR(_DIA_DIRECT,1,3)+"."+SUBSTR(_DIA_DIRECT,4,1)+" "+; "" RELEASE txtd _SHIFR_ILL="0000" &&SHIFR_ILL PRIVATE txts,string8 txts=SPACE(70) STORE "" TO string8 DO WHILE NUM_IB=_NUM_IB _SHIFR_ILL=SHIFR catalog(@_SHIFR_ILL,@txts) txts=TRIM(txts) context(@string8,"",txts,length,.F.) context(@string8," Дата проведения : SKIP 1 ENDDO RELEASE txts,string8 SELECT BUFF2 COMMIT APPEND FROM OP66 FOR NUM_IB=_NUM_IB IF (i=23.AND._DIA_DIRECT#" ").OR.i=25.OR.i=26 New_Str=.T. ENDIF IF rez.AND.!EMPTY(vars[i]) row[i]=context(@string,promp[i],TRIM(vars[i])+".",length,New_Str) ELSE row[i]=context(@string,promp[i],vars[i],length,New_Str) ENDIF New_Str=.F. IF i=20 && Промпт "ИСХОД" IF _END1=2 && переведен context(@string,"Причина:",extra1(_END2,"RIZ2")+".",length,.F.) context(@string,"Куда:",extra1(_END3,"HOSP")+".",length,.F.) ELSEIF _END1=3 && умер context(@string,"Причина:",extra1(_END2,"RIZ3")+".",length,.F.) ENDIF ELSEIF i=22.AND._END1=3 context(@string,"Возраст на момент смерти :",; extra1(_OLD_D,"OLDS")+".",length,.F.) ELSEIF i=26 context(@string,"Обследование на реакцию ВАССЕРМАНА ENDIF ********************************************************************* IF _END1=3 vars1[4]="" && Основной диагноз vars1[5]="" && Осложнения vars1[6]="" && Сопутствующие заболевания ENDIF _SHIFR=SPACE(4) && SHIFR _KOD1=0 && KOD1 _KOD2=0 && KOD2 PRIVATE txts,string2,string3,string4,string5,string6,string7 txts=SPACE(100) STORE "" TO string2,string3,string4,string5,string6,string7 DO WHILE NUM_IB=_NUM_IB _KOD1=KOD1 _KOD2=KOD2 _SHIFR=SHIFR IF _SHIFR="0000" txts="Здоров" ELSE IF _KOD1="1".OR._KOD1="2".AND._KOD2#"2" mkb(1,1,@_SHIFR,@txts) ENDIF ENDIF txts=SUBSTR(_SHIFR,1,3)+"."+SUBSTR(_SHIFR,4,1)+" "+"" IF _KOD2#"2" IF _KOD1="1" context(@string2,"",txts,length,.F.) context(@string2,"",ALLTRIM(COMM1),length,.F.) vars1[1]=string2 ELSEIF _KOD1="2" context(@string3,"",txts,length,.F.) vars1[2]=string3 ELSEIF _KOD1="3" context(@string4,"",ALLTRIM(COMM1),length,.F.) vars1[3]=string4 ENDIF ELSEIF _KOD2="2".AND._END1=3 IF _KOD1="1" context(@string5,"",txts,length,.F.) context(@string5,"",ALLTRIM(COMM1),length,.F.) vars1[4]=string5 ELSEIF _KOD1="2" context(@string6,"",ALLTRIM(COMM1),length,.F.) vars1[5]=string6 ELSEIF _KOD1="3" context(@string7,"",ALLTRIM(COMM1),length,.F.) vars1[6]=string7 ENDIF ENDIF SKIP 1 ENDDO RELEASE txts,string2,string3,string4,string5,string6,string7 SELECT BUFF APPEND FROM DIA66 FOR NUM_IB=_NUM_IB IF rez1.AND.!EMPTY(vars1[j]) row1[j]=context(@string11,promp1[j],TRIM(vars1[j])+".",length,New_Str) ELSE row1[j]=context(@string11,promp1[j],vars1[j],length,New_Str) ENDIF IF j=3.AND._END1=3 context(@string11," "," ",length,.T.) context(@string11,SPACE(10)+"Паталого-анатомический диагноз"," ENDIF ********************************************************************* ********************************************************************* ********************************************************************* KEYBOARD CHR(13) ENDIF MENU TO w_do str=vars1[q] IF w_do=1 @ 13,30 SAY "ВВЕДИТЕ КОД" GET _SHIFR PICTURE "@R 999.9" READ IF LASTKEY()=27 vars1[q]=str RESTORE SCREEN FROM screen LOOP ENDIF F1=mkb(1,1,@_SHIFR,@txtf) IF F1#-1 txtf=SUBSTR(_SHIFR,1,3)+"."+SUBSTR(_SHIFR,4,1)+" "+; ""+"." SELECT BUFF APPEND BLANK REPLACE NUM_IB WITH _NUM_IB REPLACE SHIFR WITH _SHIFR REPLACE KOD2 WITH IF(q=4,"2","1") REPLACE KOD1 WITH IF(q=1.OR.q=4,"1","2") REPLACE COMM1 WITH MEMPRO(COMM1,10,5,18,75,; " ВВЕДИТЕ НЕОБХОДИМЫЕ ENDIF ELSEIF w_do=2 PRIVATE i,j,k,EN,ET,NALL,MALL,NDEL NALL=INT(LEN(str)/length) MALL=NALL FOR i=1 TO NALL ET=ALLTRIM(SUBSTR(str,length*(i-1)+1,length)) EN=ASC(ET) IF EN>57 MALL=MALL-1 ENDIF NEXT DECLARE _0B[MALL],_0S[MALL] k=1 FOR j=1 TO NALL ET=ALLTRIM(SUBSTR(str,length*(j-1)+1,length)) EN=ASC(ET) IF EN0 y=yesno(10,"Удалить помеченные "+alltrim(str(flag_del))+" записей IF y=1 temp="NUM_IB='" del_str=temp+stor_ib[1]+"'" temp=".OR."+temp FOR tr=2 TO flag_del del_str=del_str+temp+stor_ib[tr]+"'" NEXT DELETER(del_str,"DIA66") && Удаление из DIA66.DBF DELETER(del_str,"OP66") && Удаление из OP66.DBF *************************************** pack && Удаление из KARTA66.DBF ELSE RECALL ALL GOTO TOP ENDIF ********************************************************************* SELECT BUFF8 USE EXIT _OTCH_N=codif1("OTCH",@_OTCH) IF _OTCH=0 SELECT BUFF8 USE EXIT ENDIF SELECT BUFF8 USE LOOP _OTCH_N="Месячный отчет" SELECT DIA66 SET RELATION TO SHIFR INTO BUFF8 SELECT karta SET RELATION TO NUM_IB INTO DIA66 GO TOP PRIVATE OT1D1,OT2D1,OT1D2,OT2D2 IF dep=2.OR.dep=11 OT1="OTD5.FRM" OT1D1="OTD2.FRM" OT2D1="OTD51.TXT" ELSE OT1="OTD.FRM" OT1D1="OTD1.FRM" OT2D1="OTD_1.TXT" OT1D2="OTD2.FRM" OT2D2="OTD_2.TXT" ENDIF DO show_st && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ DO WHILE !EOF() IF dep=KARTA->DEPARTMENT.AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDEND1#3.AND.DIA66->KOD1="1" _SHIFR=DIA66->SHIFR SELECT BUFF8 IF EOF() APPEND BLANK REPLACE SHIFR WITH _SHIFR mkb(1,1,@_SHIFR,@txt) REPLACE NAME WITH txt ENDIF REPLACE COUNT1 WITH COUNT1+KARTA->ALL_DAY && ПРОВЕДЕНО ДНЕЙ REPLACE COUNT2 WITH COUNT2+1 && ВСЕГО БОЛЬНЫХ pole=FIELD(8+KARTA->RAION) REPLACE &pole WITH &pole+1 && из REPLACE &pole WITH &pole+1 && Первично/Повторно pole=FIELD(16+KARTA->DIRECT1) REPLACE &pole WITH &pole+1 && Направляющие организации IF dep=2.OR.dep=11 IF KARTA->OLDALL_DAY && К/Д IF KARTA->CITY_VILL=2 REPLACE C5 WITH C5+1 && В том числе из села REPLACE C6 WITH C6+KARTA->ALL_DAY && К/Д ENDIF ELSE IF KARTA->CITY_VILL=2 REPLACE C9 WITH C9+1 && Из села старше 1 года ENDIF ENDIF IF KARTA->OLD=1 pole=FIELD(43) ELSEIF KARTA->OLD=2 ad=piece(KARTA->HOUR_B,KARTA->MINS_B,KARTA->HOUR_END,KARTA- ENDIF ELSE IF KARTA->OLDALL_DAY && К/Д IF KARTA->CITY_VILL=2 REPLACE C5 WITH C5+1 && В том числе из села REPLACE C6 WITH C6+KARTA->ALL_DAY && К/Д ENDIF ELSEIF KARTA->OLDALL_DAY && К/Д IF KARTA->CITY_VILL=2 REPLACE C9 WITH C9+1 && В том числе из села REPLACE C0 WITH C0+KARTA->ALL_DAY && К/Д ENDIF ELSE REPLACE D1 WITH D1+1 && Всего 15 лет и старше REPLACE D2 WITH D2+KARTA->ALL_DAY && К/Д IF KARTA->CITY_VILL=2 REPLACE D3 WITH D3+1 && В том числе из села REPLACE D4 WITH D4+KARTA->ALL_DAY && К/Д ENDIF ENDIF IF KARTA->OLDOLD) ENDIF ENDIF REPLACE &pole WITH &pole+1 && Возраст SELECT KARTA ENDIF SKIP 1 show_din(count) && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ ENDDO SET RELATION TO SELECT DIA66 SET RELATION TO grad() && РАЗБИЕНИЕ БОЛЕЗНЕЙ НА КЛАССЫ SELECT BUFF8 OT2="OTD"+ALLTRIM(STR(dep))+".TXT" @ 13,25 SAY " СОЗДАЕТСЯ ОТЧЕТ : "+OT2+" " IF dep#2.AND.dep#11 REPORT FORM &OT1D2 TO FILE &OT2D2 PLAIN ENDIF REPORT FORM &OT1D1 TO FILE &OT2D1 PLAIN REPORT FORM &OT1 TO FILE &OT2 PLAIN REPORT FORM OTCH.FRM TO FILE OTCH.TXT PLAIN USE corr_ttl("OTCH.TXT",dep_name,DTOC(_DATE_FROM),DTOC(_DATE_TILL)) link2("OTCH.TXT",OT2) RENAME OTCH.TXT TO &OT2 link2(OT2,OT2D1) IF dep#2.AND.dep#11 link2(OT2,OT2D2) ENDIF OT1="OTCH"+ALLTRIM(STR(_OTCH))+".FRM" CASE _OTCH=1 SELECT DIA66 SET RELATION TO SHIFR INTO BUFF8 SELECT karta SET RELATION TO NUM_IB INTO DIA66 GO TOP DO show_st DO WHILE !EOF() IF IF(dep=0,.T.,IF(dep=KARTA->DEPARTMENT,.T.,.F.)).AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDKOD1="1" state() && Поиск паталого-анатомического диагноза (если он есть) _SHIFR=DIA66->SHIFR SELECT BUFF8 IF EOF() APPEND BLANK REPLACE SHIFR WITH _SHIFR ENDIF IF KARTA->OLD>10 && СТАРШЕ 14 лет IF KARTA->END1=1.OR.KARTA->END1=2 REPLACE COUNT1 WITH COUNT1+1 && ВЫПИСАНО REPLACE A1 WITH A1+KARTA->ALL_DAY && ПРОВЕДЕНО ИМИ ДНЕЙ ELSE && KARTA->END1=3 REPLACE A2 WITH A2+1 && УМЕРЛО ENDIF ELSE && KARTA->OLDEND1=1.OR.KARTA->END1=2 REPLACE COUNT2 WITH COUNT2+1 && ВЫПИСАНО REPLACE A3 WITH A3+KARTA->ALL_DAY && ПРОВЕДЕНО ИМИ ДНЕЙ IF KARTA->OLDEND1=3 REPLACE A5 WITH A5+1 && УМЕРЛО IF KARTA->OLDDEPARTMENT,.T.,.F.)).AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDDATE_IN-KARTA->DATE_B+piece(KARTA->HOUR_B,KARTA->MINS_B,; KARTA->HOUR_IN,KARTA->MINS_IN))KOD1="1" state() && Поиск паталого-анатомического диагноза (если он есть) _SHIFR=DIA66->SHIFR SELECT BUFF8 IF EOF() APPEND BLANK REPLACE SHIFR WITH _SHIFR ENDIF IF LEFT(KARTA->MASSA,2)="00".OR.LEFT(KARTA->MASSA,2)=" ".AND.; VAL(RIGHT(KARTA->MASSA,3))>500 REPLACE A1 WITH A1+1 IF KARTA->END1=3 REPLACE A2 WITH A2+1 IF (KARTA->DATE_END-KARTA->DATE_B+; piece(KARTA->HOUR_B,KARTA->MINS_B,; KARTA->HOUR_END,KARTA->MINS_END))END1=3 REPLACE A5 WITH A5+1 IF (KARTA->DATE_END-KARTA->DATE_B+; piece(KARTA->HOUR_B,KARTA->MINS_B,; KARTA->HOUR_END,KARTA->MINS_END))DEPARTMENT,.T.,.F.)).AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDSHIFR SELECT BUFF8 IF EOF() APPEND BLANK REPLACE SHIFR WITH _SHIFR_ILL catalog(@_SHIFR_ILL,@txt) REPLACE NAME WITH ALLTRIM(txt) ENDIF REPLACE COUNT1 WITH COUNT1+1 IF KARTA->OLDEND1=3 REPLACE A1 WITH A1+1 ENDIF SELECT OP66 ENDIF SKIP 1 show_din(count) && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ ENDDO SET RELATION TO summ() && Суммирование по классам операций CASE _OTCH=4 SELECT BUFF8 APPEND BLANK REPLACE NUMBER WITH "1" REPLACE NAME WITH "ВЫПИСАНО" APPEND BLANK REPLACE NUMBER WITH "2" REPLACE NAME WITH "ПЕРЕВЕДЕНО" APPEND BLANK REPLACE NUMBER WITH "3" REPLACE NAME WITH "УМЕРЛО" SELECT KARTA GO TOP PRIVATE OT1D1,OT2D1 DO show_st && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ DO WHILE !EOF() IF IF(dep=0,.T.,IF(dep=KARTA->DEPARTMENT,.T.,.F.)).AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDEND1 pole=FIELD(8+KARTA->OLD) REPLACE &pole WITH &pole+1 && ВОЗРАСТ БОЛЬНЫХ pole=FIELD(19+KARTA->RAION) REPLACE &pole WITH &pole+1 && РАЙОН ПРОЖИВАНИЯ REPLACE COUNT1 WITH COUNT1+KARTA->ALL_DAY && ПРОВЕДЕНО ДНЕЙ REPLACE COUNT2 WITH COUNT2+1 && ВСЕГО БОЛЬНЫХ SELECT KARTA ENDIF SKIP 1 show_din(count) && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ ENDDO OT1D1="OTCH"+ALLTRIM(STR(_OTCH))+"1"+".FRM" && OTCH*1.FRM OT2D1="OTCH"+ALLTRIM(STR(_OTCH))+"1"+".TXT" && OTCH*1.TXT SELECT BUFF8 REPORT FORM &OT1D1 TO FILE &OT2D1 PLAIN CASE _OTCH=6.OR._OTCH=8 SELECT DIA66 SET RELATION to NUM_IB into KARTA, TO SHIFR INTO BUFF8 GO TOP DO show_st && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ DO WHILE !EOF() IF IF(dep=0,.T.,IF(dep=KARTA->DEPARTMENT,.T.,.F.)).AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDKOD1="1" count=state() && Поиск паталого-анатомического диагноза (если он есть) _SHIFR=DIA66->SHIFR SELECT BUFF8 IF _OTCH=6.AND.KARTA->END1=2 IF EOF() APPEND BLANK REPLACE SHIFR WITH _SHIFR ENDIF REPLACE COUNT1 WITH COUNT1+1 ELSEIF _OTCH=8.AND.KARTA->END1=3 pole=FIELD(8+KARTA->POL) IF EOF() APPEND BLANK REPLACE SHIFR WITH _SHIFR mkb(1,1,@_SHIFR,@txt) REPLACE NAME WITH txt ENDIF REPLACE &pole WITH &pole+1 ENDIF SELECT DIA66 ENDIF SKIP 1 show_din(count) && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ ENDDO SET RELATION TO grad() && РАЗБИЕНИЕ БОЛЕЗНЕЙ НА КЛАССЫ CASE _OTCH=7 SELECT KARTA SET RELATION TO SHIFR INTO BUFF8 GO TOP DO show_st && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ DO WHILE !EOF() IF IF(dep=0,.T.,IF(dep=KARTA->DEPARTMENT,.T.,.F.)).AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDSHIFR SELECT BUFF8 IF EOF() APPEND BLANK REPLACE SHIFR WITH _SHIFR mkb(1,1,@_SHIFR,@txt) REPLACE NAME WITH ALLTRIM(txt) ENDIF REPLACE A3 WITH A3+1 && Всего IF KARTA->OLDOLDWHY) REPLACE &pole WITH &pole+1 && Причины направления pole=FIELD(15+KARTA->DIRECT1) REPLACE &pole WITH &pole+1 && Направляющие организации SELECT KARTA ENDIF SKIP 1 show_din(count) && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ ENDDO SET RELATION TO numb_STR() && НУМЕРАЦИЯ СТРОК CASE (_OTCH=9.AND.dep#14).OR._OTCH=10.OR._OTCH=12 SELECT DIA66 SET RELATION to NUM_IB into KARTA, TO SHIFR INTO BUFF8 GO TOP PRIVATE OT1D1,OT2D1,OT1D2,OT2D2 DO show_st && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ DO WHILE !EOF() IF IF(dep=0,.T.,IF(dep=KARTA->DEPARTMENT,.T.,.F.)).AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDEND1=3.AND.DIA66->KOD1="1" IF (_OTCH=9.OR.; _OTCH=10.AND.; (KARTA->DATE_END-KARTA->DATE_B+; piece(KARTA->HOUR_B,KARTA->MINS_B,KARTA->HOUR_END,KARTA- SELECT BUFF8 IF EOF() APPEND BLANK REPLACE SHIFR WITH _SHIFR mkb(1,1,@_SHIFR,@txt) REPLACE NAME WITH txt ENDIF pole=FIELD(6+KARTA->POL) REPLACE &pole WITH &pole+1 && ПОЛ УМЕРШИХ IF _OTCH=9.OR._OTCH=12 REPLACE B2 WITH B2+KARTA->ALL_DAY && КОЛ-ВО ДНЕЙ, ПРОВЕДЕННОЕ ИМИ IF _OTCH=9.AND.KARTA->OLD_DALL_DAY && ---"--- БОЛЬНЫМИ ДО 1 года ENDIF pole=FIELD(8+KARTA->OLD_D) ELSEIF _OTCH=10 PRIVATE ad ad=piece(KARTA->HOUR_B,KARTA->MINS_B,KARTA->HOUR_END,KARTA- IF(ad=1,1,IF(ad>=0,0,-1)))) ENDIF REPLACE &pole WITH &pole+1 && ВОЗРАСТ УМЕРШИХ pole=FIELD(21+KARTA->DIRECT1) REPLACE &pole WITH &pole+1 && НАПРАВЛЯЮЩЕЕ УЧРЕЖДЕНИЕ pole=FIELD(35+KARTA->RAION) REPLACE &pole WITH &pole+1 && РАЙОН IF _OTCH=9 IF KARTA->ALL_DAY=1 pole=FIELD(44+IF(KARTA->DATE_END-KARTA->DATE_IN+; piece(KARTA->HOUR_IN,KARTA->MINS_IN,; KARTA->HOUR_END,KARTA->MINS_END)ALL_DAYALL_DAY,4)) ENDIF ELSEIF _OTCH=10 IF KARTA->ALL_DAY=1 pole=FIELD(44+IF(KARTA->DATE_END-KARTA->DATE_IN+; piece(KARTA->HOUR_IN,KARTA->MINS_IN,; KARTA->HOUR_END,KARTA->MINS_END)ALL_DAY) ENDIF ELSE &&_OTCH=12 PRIVATE t,d STORE 0 TO t,d t=KARTA->DATE_END-KARTA->DATE_IN+; piece(KARTA->HOUR_IN,KARTA->MINS_IN,KARTA->HOUR_END,KARTA- _SHIFR=DIA66->SHIFR SELECT BUFF8 IF EOF() APPEND BLANK REPLACE SHIFR WITH _SHIFR mkb(1,1,@_SHIFR,@txt) REPLACE NAME WITH txt ENDIF pole=FIELD(6+KARTA->POL) REPLACE &pole WITH &pole+1 && Пол pole=FIELD(16+KARTA->DIRECT1) REPLACE &pole WITH &pole+1 && Направляющие организации REPLACE C3 WITH C3+1 && Всего умерло REPLACE C4 WITH C4+KARTA->ALL_DAY && К/Д IF KARTA->OLD=1 pole=FIELD(43) ELSEIF KARTA->OLD=2 ad=piece(KARTA->HOUR_B,KARTA->MINS_B,KARTA->HOUR_END,KARTA- ENDIF REPLACE &pole WITH &pole+1 && Возраст SELECT KARTA ENDIF SKIP 1 show_din(count) && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ ENDDO SET RELATION TO SELECT DIA66 SET RELATION TO grad() && РАЗБИЕНИЕ БОЛЕЗНЕЙ НА КЛАССЫ CASE _OTCH=11 IF f=0 LOOP ENDIF SELECT DIA66 SET CURSOR OFF SET RELATION to SHIFR into BUFF8 SELECT OP66 SET RELATION to NUM_IB into KARTA, TO NUM_IB INTO DIA66 GO TOP DO show_st && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ DO WHILE !EOF() IF IF(dep=0,.T.,IF(dep=KARTA->DEPARTMENT,.T.,.F.)).AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDEND1=3.AND.DIA66->KOD1="1" state() && Поиск паталого-анатомического диагноза (если он есть) _SHIFR=DIA66->SHIFR _NUM_IB=OP66->NUM_IB SELECT BUFF8 IF EOF() APPEND BLANK REPLACE SHIFR WITH _SHIFR mkb(1,1,@_SHIFR,@txt) REPLACE NAME WITH txt ENDIF REPLACE COUNT1 WITH COUNT1+1 && ВСЕГО ОПЕРИРОВАННЫХ БОЛЬНЫХ SELECT 0 USE CATO.DBF INDEX CATO ALIAS CATO DO WHILE .T. SEEK OP66->SHIFR SELECT BUFF8 pole=FIELD(8+CATO->NUMBER) REPLACE &pole WITH &pole+1 REPLACE COUNT2 WITH COUNT2+1 && ВСЕГО ОПЕРАЦИЙ SKIP 1 ALIAS OP66 SELECT CATO IF OP66->NUM_IB#_NUM_IB SKIP -1 ALIAS OP66 EXIT ENDIF show_din(count) && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ ENDDO USE ENDIF SELECT OP66 SKIP 1 show_din(count) && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ ENDDO SET RELATION TO SELECT DIA66 SET RELATION TO grad() && РАЗБИЕНИЕ БОЛЕЗНЕЙ НА КЛАССЫ IF f=1 OT1="OTCH"+ALLTRIM(STR(_OTCH))+"L"+".FRM" ELSE OT1D1="OTCH"+ALLTRIM(STR(_OTCH))+"1"+".FRM" && OTCH*1.FRM OT2D1="OTCH"+ALLTRIM(STR(_OTCH))+"1"+".TXT" && OTCH*1.TXT SELECT BUFF8 REPORT FORM &OT1D1 TO FILE &OT2D1 PLAIN OT1D2="OTCH"+ALLTRIM(STR(_OTCH))+"2"+".FRM" && OTCH*2.FRM OT2D2="OTCH"+ALLTRIM(STR(_OTCH))+"2"+".TXT" && OTCH*2.TXT REPORT FORM &OT1D2 TO FILE &OT2D2 PLAIN link2(OT2D1,OT2D2) && СЛИЯНИЕ ДВУХ ФАЙЛОВ ENDIF CASE _OTCH=13 SELECT DIA66 SET RELATION to NUM_IB into KARTA, TO SHIFR INTO BUFF8 GO TOP DO show_st && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ DO WHILE !EOF() IF IF(dep=0,.T.,IF(dep=KARTA->DEPARTMENT,.T.,.F.)).AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDSHIFR>"0000".AND.DIA66->SHIFRKOD1="1" count=state() && Поиск паталого-анатомического диагноза (если он есть) _SHIFR=DIA66->SHIFR SELECT BUFF8 IF EOF() APPEND BLANK REPLACE SHIFR WITH _SHIFR ENDIF IF KARTA->END1=1.OR.KARTA->END1=2 REPLACE COUNT1 WITH COUNT1+1 && ОБЩЕЕ КОЛИЧЕСТВО ВЫБЫВШИХ REPLACE A1 WITH A1+KARTA->ALL_DAY && ПРОВЕДЕНО ИМИ ДНЕЙ IF KARTA->OLDEND1=3 REPLACE A2 WITH A2+1 && ОБЩЕЕ КОЛИЧЕСТВО УМЕРШИХ REPLACE A3 WITH A3+KARTA->ALL_DAY && ПРОВЕДЕНО ИМИ ДНЕЙ IF KARTA->OLDDEPARTMENT,.T.,.F.)).AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDSHIFR>"0000".AND.DIA66->SHIFRKOD1="1" count=state() && Поиск паталого-анатомического диагноза (если он есть) _SHIFR=DIA66->SHIFR SELECT BUFF8 IF EOF() APPEND BLANK mkb(1,1,@_SHIFR,@txt) REPLACE NAME WITH txt REPLACE SHIFR WITH _SHIFR ENDIF pole=FIELD(8+KARTA->DEPARTMENT) REPLACE &pole WITH &pole+1 SELECT DIA66 ENDIF SKIP 1 show_din(count) && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ ENDDO SET RELATION TO numb_STR() && НУМЕРАЦИЯ СТРОК CASE _OTCH=15 SELECT KARTA GO TOP PRIVATE _NAME,_NUMBER PRIVATE OT1D1,OT2D1 DO show_st && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ DO WHILE !EOF() IF IF(dep=0,.T.,IF(dep=KARTA->DEPARTMENT,.T.,.F.)).AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDRAION>1 SELECT BUFF8 IF KARTA->STATE=1 _NUMBER="" IF KARTA->PLACE=0 _SHIFR="99 " _NAME="Прочие области и районы РФ" ELSE _SHIFR=RIGHT(ALLTRIM(extra1(KARTA->PLACE,"PLCE")),4) _NAME=extra1(KARTA->PLACE,"PLCE") ENDIF IF KARTA->RAION=2 _NUMBER="*" _SHIFR="1000" _NAME="Московская область" ENDIF ELSE _NUMBER="*" _SHIFR=SPACE(2)+STR(KARTA->STATE,2) _NAME=extra1(KARTA->STATE,"STTE") ENDIF SEEK _SHIFR IF !FOUND() APPEND BLANK REPLACE NUMBER WITH _NUMBER,SHIFR WITH _SHIFR,NAME WITH _NAME ENDIF pole=FIELD(8+KARTA->DIRECT1) REPLACE &pole WITH &pole+1 && НАПРАВЛЯЮЩЕЕ REPLACE &pole WITH &pole+1 && ОТДЕЛЕНИЯ БОЛЬНИЦЫ pole=FIELD(38+KARTA->PASS) REPLACE &pole WITH &pole+1 && Планово/экстренно REPLACE COUNT1 WITH COUNT1+KARTA->ALL_DAY && Проведено дней REPLACE COUNT2 WITH COUNT2+1 && ВСЕГО ВЫПИСАНО SELECT KARTA ENDIF ENDIF SKIP 1 show_din(count) && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ ENDDO SELECT BUFF8 SUM COUNT1,COUNT2,A1,A2,A3,A4,A5,A6,A7,A8,A9,A0,; B1,B2,B3,B4,B5,B6,B7,B8,B9,B0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C0 TO; _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,; _20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32 && Суммирование по всем столбцам APPEND BLANK REPLACE SHIFR WITH " ",NAME WITH "Всего",COUNT1 WITH _1,; COUNT2 WITH _2,A1 WITH _3,A2 WITH _4,A3 WITH _5,A4 WITH _6,; A5 WITH _7,A6 WITH _8,A7 WITH _9,A8 WITH _10,A9 WITH _11,A0 WITH B1 WITH _13,B2 WITH _14,B3 WITH _15,B4 WITH _16,B5 WITH _17,; B6 WITH _18,B7 WITH _19,B8 WITH _20,B9 WITH _21,B0 WITH _22,; C1 WITH _23,C2 WITH _24,C3 WITH _25,C4 WITH _26,C5 WITH _27,; C6 WITH _28,C7 WITH _29,C8 WITH _30,C9 WITH _31,C0 WITH _32 SUM COUNT1,COUNT2,A1,A2,A3,A4,A5,A6,A7,A8,A9,A0,; B1,B2,B3,B4,B5,B6,B7,B8,B9,B0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C0 TO; _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,; _20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32; FOR SHIFR>" ".AND.SHIFR"1000" && Суммирование столбцов по всем областям РФ APPEND BLANK REPLACE SHIFR WITH "9990",NAME WITH "Всего по РФ",COUNT1 WITH _1,; COUNT2 WITH _2,A1 WITH _3,A2 WITH _4,A3 WITH _5,A4 WITH _6,; A5 WITH _7,A6 WITH _8,A7 WITH _9,A8 WITH _10,A9 WITH _11,A0 WITH B1 WITH _13,B2 WITH _14,B3 WITH _15,B4 WITH _16,B5 WITH _17,; B6 WITH _18,B7 WITH _19,B8 WITH _20,B9 WITH _21,B0 WITH _22,; C1 WITH _23,C2 WITH _24,C3 WITH _25,C4 WITH _26,C5 WITH _27,; C6 WITH _28,C7 WITH _29,C8 WITH _30,C9 WITH _31,C0 WITH _32 OT1D1="OTCH"+ALLTRIM(STR(_OTCH))+"1"+".FRM" && OTCH*1.FRM OT2D1="OTCH"+ALLTRIM(STR(_OTCH))+"1"+".TXT" && OTCH*1.TXT REPORT FORM &OT1D1 TO FILE &OT2D1 PLAIN CASE _OTCH=16.OR._OTCH=17.OR._OTCH=18.OR._OTCH=19 SELECT BUFF8 APPEND BLANK SELECT KARTA SET RELATION TO NUM_IB INTO DIA66 GO TOP DO show_st DO WHILE !EOF() IF IF(dep=0,.T.,IF(dep=KARTA->DEPARTMENT,.T.,.F.)).AND.; KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDEND1=2 REPLACE A1 WITH A1+1 && ВСЕГО IF KARTA->OLDSHIFR="0000" && ОКАЗАВШИЕСЯ ЗДОРОВЫМИ REPLACE A3 WITH A3+1 ENDIF ELSEIF _OTCH=17.AND.KARTA->END1=3 IF KARTA->OLD=1 REPLACE A1 WITH A1+1 && УМЕРЛО В ВОЗРАСТЕ 0-6 СУТОК ENDIF IF (KARTA->DATE_END-KARTA->DATE_IN+; piece(KARTA->HOUR_IN,KARTA->MINS_IN,KARTA->HOUR_END,KARTA- IF DIA66->KOD1="1".AND.; (DIA66->SHIFR>="4800".AND.DIA66->SHIFRSHIFR="410 ".OR.KARTA->SHIFR="412 ") IF KARTA->TIMEEND1=3.AND.(KARTA->DATE_END-KARTA->DATE_IN+; piece(KARTA->HOUR_IN,KARTA->MINS_IN,KARTA->HOUR_END,KARTA- REPLACE A1 WITH A1+1 && ВСЕГО УМЕРЛО БЕРЕМЕННЫХ,РОЖЕНИЦ И SELECT DIA66 state() && Поиск паталого-анатомического диагноза (если он есть) DO WHILE DIA66->NUM_IB=KARTA->NUM_IB IF DIA66->KOD1="1".AND.; (DIA66->SHIFR>="6300".AND.DIA66->SHIFRSHIFR_LEFT SEEK seek IF !EOF() IF BUFF8->SHIFR SHIFR_RIGH numb1=numb1+1 rec=RECNO() IF _OTCH=1 _SHIFR=SHIFR _COUNT1=COUNT1 _COUNT2=COUNT2 _A1=A1 _A2=A2 _A3=A3 _A4=A4 _A5=A5 _A6=A6 APPEND BLANK REPLACE SHIFR WITH _SHIFR,COUNT1 WITH _COUNT1,COUNT2 WITH A1 WITH _A1,A2 WITH _A2,A3 WITH _A3,A4 WITH _A4,; A5 WITH _A5,A6 WITH _A6 SUM COUNT1,COUNT2,A1,A2,A3,A4,A5,A6 TO ; _COUNT1,_COUNT2,_A1,_A2,_A3,_A4,_A5,_A6 ; WHILE BUFF8->SHIFR SHIFR_RIGH GOTO rec REPLACE COUNT1 WITH _COUNT1,COUNT2 WITH _COUNT2,A1 WITH _A1,; A2 WITH _A2,A3 WITH _A3,A4 WITH _A4,A5 WITH _A5,A6 WITH ENDIF REPLACE BUFF8->NUMBER WITH STR(numb1,2) REPLACE BUFF8->NAMECL WITH CLASS->NAME_CLASS REPLACE BUFF8->SHIFRL WITH CLASS->SHIFR_LEFT REPLACE BUFF8->SHIFRR WITH CLASS->SHIFR_RIGH IF _OTCH=6 SUM COUNT1 TO _COUNTALL WHILE BUFF8->SHIFR SHIFR_RIGH GO rec REPLACE BUFF8->COUNT2 WITH _COUNTALL ENDIF ENDIF SKIP 1 ALIAS CLASS ELSE EXIT ENDIF NEXT SET SOFTSEEK OFF SELECT CLASS USE SELECT (lsl) ********************************************************************* SELECT 0 IF _OTCH=1 USE GRUP1.DBF INDEX GRUP1 ALIAS GRUP ELSE && для _OTCH=2 и _OTCH=5 USE GRUP2.DBF INDEX GRUP2 ALIAS GRUP ENDIF PRIVATE coun1,K,seek coun1=RECCOUNT() seek=" " GO TOP SELECT BUFF8 SET SOFTSEEK ON FOR K=1 TO coun1 seek=GRUP->SHIFR_LEFT SEEK seek IF !EOF() IF BUFF8->SHIFR SHIFR_RIGH IF !EMPTY(BUFF8->NUMBER) SKIP 1 ALIAS BUFF8 ENDIF rec=RECNO() SUM COUNT1,COUNT2,A1,A2,A3,A4,A5,A6 TO ; _COUNT1,_COUNT2,_A1,_A2,_A3,_A4,_A5,_A6 ; WHILE BUFF8->SHIFR SHIFR_RIGH GOTO rec REPLACE COUNT1 WITH _COUNT1,COUNT2 WITH _COUNT2,A1 WITH _A1,; A2 WITH _A2,A3 WITH _A3,A4 WITH _A4,A5 WITH _A5,A6 WITH REPLACE BUFF8->NUMBER WITH "-" REPLACE BUFF8->NAMECL WITH GRUP->NAME_GRUP REPLACE BUFF8->SHIFRL WITH GRUP->SHIFR_LEFT REPLACE BUFF8->SHIFRR WITH GRUP->SHIFR_RIGH ENDIF SKIP 1 ALIAS GRUP ELSE EXIT ENDIF NEXT SET SOFTSEEK OFF SELECT GRUP USE SELECT (lsl) ********************************************************************* ********************************************************************* ********************************************************************* ********************************************************************* ELSE ins_pic(code_name,' ') ENDIF first=count+1 CASE LASTKEY()=7 && IF count>0 del_pic(code_name,i) ENDIF first=i-1 ENDCASE ENDIF ********************************************************************* SAVE SCREEN TO screen @ 8,8 CLEAR TO 15,71 @ 8,8 TO 15,71 DOUBLE saycent(8,20,60,"ВНИМАНИЕ") @ 11,15 SAY "ДЛЯ СОЗДАНИЯ ОТЧЕТА НЕОБХОДИМ ФАЙЛ :"+OT1 @ 12,15 SAY "УКАЗАННОГО ФАЙЛА НЕТ В РАБОЧЕЙ ДИРЕКТОРИИ" INKEY(10) RESTORE SCREEN FROM screen ********************************************************************* EXIT M1=1 R1=1 EXIT ********************************************************************* IF YN=2 SET CURSOR OFF TYPE &OT2 TO PRINT ENDIF ********************************************************************* IF VAL(years)=1 txt=txt+" год" ELSEIF VAL(years)0 txt=ALLTRIM(STR(mons)) IF mons=1 txt=txt+" месяц" ELSEIF mons |
|