Рефераты

Разработка автоматизированной системы учета выбывших из стационара

7. Нозология больных, переведенных из других стационаров;

8. Нозологическая таблица умерших;

9. Нозология больных умерших по возрастам;

10. Нозология умерших в возрасте от 0 до 6 дней жизни;

11. Операции умерших;

12. Нозология умерших до суток;

13. Нозология инфекционных заболеваний;

14. Распределение инфекционных заболеваний по отделениям;

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

отделениям больницы;

16. Число больных, переведенных в другие стационары, из них число

новорожденных, переведенных в другие стационары, и число лиц,

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

17. Число новорожденных, умерших в возрасте от 0-6 суток, число умерших в

первые 24 часа после поступления в стационар: в возрасте 0-24 часа после

рождения, до 1 года, в том числе от пневмонии;

18. Число больных инфарктом миокарда, поступивших в первые сутки от начала

заболевания, число больных инфарктом миокарда, умерших в первые 24 часа

после поступления в стационар;

19. Число умерших беременных, рожениц и родильниц, из них число умерших от

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

Модуль настройки выполняет следующие функции:

> организация меню настройки;

> коррекция справочников по структуре стационара.

Вызов всех модулей второго уровня осуществляется из главного меню

программы. Связь между отдельными модулями второго уровня осуществляется

только по данным через глобальные переменные и файлы активной базы данных.

Работа программы во всех режимах кроме режима настройки детально

описана в документе "Руководство программиста". Режим настройки является

режимом администратора базы данных и описан в настоящем документе в разделе

"Настройка программы".

4. Настройка программы

Настройка программы на режим конкретного использования заключается в

корректировке справочников. Для корректировки справочников необходимо,

находясь в главном меню программы, нажать Ctrl-F10.

При этом пользователь попадает в меню со следующими альтернативами:

> выбор и изменение списка отделений стационара;

> выбор и изменение списка профилей коек;

> выбор и изменение списка направляющих организаций;

> выбор и изменение списка причин смерти;

> выбор и изменение списка районов;

> выбор и изменение списка возрастов;

> выбор и изменение списка причин перевода;

> выбор и изменение списка причин направлений;

> выбор и изменение списка стран содружества.

При выборе любого пункта меню пользователь переходит к меню

добавления, удаления и переименования выбранного списка.

В меню, для добавления нового элемента необходимо нажать клавишу INS.

При этом вам будет предложено ввести новое название. Введите его и нажмите

клавишу ENTER. Для удаления элемента нажмите клавишу DEL. Предоставляется

другое меню из двух альтернатив "Удалять элемент из списка", "Не удалять".

Для отказа от удаления выберите пункт "Не удалять" и нажмите клавишу ENTER

либо клавишу ESC. Для удаления стационара выберите пункт меню "Удалять

стационар из списка" и нажмите клавишу ENTER.

При нажатии клавиши ENTER осуществляется выбор текущего элемента в

списке с целью его переименования. Введите новое название и нажмите клавишу

ENTER. ESC означает отказ от переименования.

При нажатии ESC происходит возврат в предыдущее меню.

5. Сообщения системному программисту

В программе не предусмотрено специальных сообщений для системного

программиста. При работе программы возможна выдача сообщений исполнительной

системой Clipper. Типичными сообщениями могут быть:

> "Not enought memory","Memory fault" - по этим сообщениям следует удалить

из оперативной памяти все резидентные программы, кроме русификаторов.

> "Unable to open file " - следует проверить наличие в

директории указанного файла и при его отсутствии скопировать с резервной

дискеты.

В более сложных случаях следует записать сообщение и ситуацию, в

которой оно возникло и обратиться к разработчикам программы..

Приложение 5

Текст и описание программы:

“Автоматизированная система учета выбывших из стационара”

.

1. Общие сведения о программе.

ВНИМАНИЕ!

Перед прочтением данного документа следует ознакомиться с документами

"Описание применения" и "Руководство оператора".

Автоматизированная система учета выбывших из стационара (условное

обозначение КАРТА) предназначена для автоматизации процесса заполнения

формы №066/у Минздрава и получения фиксированных отчетных форм.

Программа работает под управлением операционной системы MS DOS версии

3.1 и выше.

Перед первым запуском программы в файл AUTOEXEC.BAT необходимо

включить запись:

SET CLIPPER=F50.

В файле CONFIG.SYS параметр FILES установить равным 50

(FILES=50).

Программа реализована на языке программирования Clipper Summer'87.

2. Функциональное назначение.

Программа выполняет следующие функции:

1. Ввод, хранение, коррекцию данных по выписанным из стационара больным;

2. Оформление печатных документов по данным о выписанных больных за

отчетный период;

3. Настройку на структуру конкретного стационара.

3. Описание логической структуры программы КАРТА.

3.1 Общие сведения о структуре программы

Структура программы КАРТА представлена на рис.7.

[pic]

Рис. 7. Логическая структура программы.

Программа состоит из 5 функциональных модулей функций и библиотеки

функций.

Главный модуль выполняет следующие функции:

> инициализация глобальных переменных;

> ввод текущей даты;

> открытие всех рабочих областей с индексными файлами;

> организация главного меню.

Модуль ввода данных выполняет следующие функции:

> создание и ввод данных в новую КАРТУ;

> редактирование данных уже существующих КАРТ.

Модуль навигации организует просмотр БД по определенным пользователем

условиям.

Модуль удаления удаляет из БД КАРТЫ, определенные пользователем.

Модуль отчетов формирует следующие отчеты:

> месячные по любому отделению;

> квартальные как по всему стационару, так и по любому его отделению:

1. Состав больных в стационаре, сроки и исход лечения;

2. Состав больных новорожденных, поступивших в возрасте 0-6 суток жизни и

исход их лечения;

3. Хирургическая работа учреждений;

4. Распределение больных по возрасту и району;

5. Состав больных, выбывших в возрасте от 0 до 6 суток жизни;

6. Больные, переведенные в другие лечебные учреждения;

7. Нозология больных, переведенных из других стационаров;

8. Нозологическая таблица умерших;

9. Нозология больных умерших по возрастам;

10. Нозология умерших в возрасте от 0 до 6 дней жизни;

11. Операции умерших;

12. Нозология умерших до суток;

13. Нозология инфекционных заболеваний;

14. Распределение инфекционных заболеваний по отделениям;

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

отделениям больницы;

16. Число больных, переведенных в другие стационары, из них число

новорожденных, переведенных в другие стационары, и число лиц,

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

17. Число новорожденных, умерших в возрасте от 0-6 суток, число умерших в

первые 24 часа после поступления в стационар: в возрасте 0-24 часа после

рождения, до 1 года, в том числе от пневмонии;

18. Число больных инфарктом миокарда, поступивших в первые сутки от начала

заболевания, число больных инфарктом миокарда, умерших в первые 24 часа

после поступления в стационар;

19. Число умерших беременных, рожениц и родильниц, из них число умерших от

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

Модуль настройки выполняет следующие функции:

> организация меню настройки;

> коррекция справочников по структуре стационара.

Вызов всех модулей второго уровня осуществляется из главного меню

программы. Связь между отдельными модулями второго уровня осуществляется

только по данным через глобальные переменные и файлы активной базы данных.

Работа программы во всех режимах кроме режима настройки детально

описана в документе "Руководство оператора". Режим настройки является

режимом администратора базы данных и описан в документе "Руководство

системного программиста и администратора базы данных" в разделе "Настройка

программы".

Исходный текст программы (всех модулей) находится в файле KARTA.PRG.

Библиотека функций находится в файле LIB.OBJ. Справочники размещены в файле

CODIF.DBF. Для получения загрузочного модуля необходимо набрать на

клавиатуре следующую команду:

rtlink fi KARTA, lib lib terminal, clipper, extend, dbfntx

и нажать клавишу ENTER.

3.2 Описание алгоритма программы

Схема алгоритма работы программы представлена на рис. 8.

Для работы с Международным классификатором болезней (МКБ)

использовалась функция MKB().

Для работы с каталогом операций использовалась функция CATALOG().

[pic]

Рис. 8. Схема алгоритма работы программы.

Для работы со справочниками используются следующие функции:

> codif() - функция выбора альтернативы из вертикального меню, построенного

на основе данных справочника.

> mempro(), codpic(), codtxt() - функции для экранного редактирования МЕМО

- полей баз данных.

> extra() - функция восстановления текста выбранной альтернативы по ее

номеру в справочнике.

> ins_pic() - функция добавления информации в справочник.

> del_pic() - функция удаления инфомации из справочника.

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

функция viewer().

4. Используемые технические средства

Программа "КАРТА" предназначена для установки на персональных ЭВМ IBM

PC XT/AT cо следующим набором периферийных устройств: принтер, дисплей с

платой адаптера EGA\VGA, накопитель на жестком диске объемом не менее 80

Мб. Минимальный объем свободной оперативной памяти 540 Кб.

5. Вызов и загрузка

Для вызова программы следует набрать в командной строке:

=>karta

или выбрать файл karta.EXE с помощью «оболочки» типа 'NORTON COMMANDER' и

нажать клавишу ENTER.

6. Входные данные

Входной информацией программы является следующая:

> данные, вводимые пользователем (см. "Руководство оператора");

> данные, хранящиеся в базе данных по пациентам (см. "Руководство

системного программиста");

> текущая системная дата;

> данные, хранящиеся в справочных базах данных (см. "Руководство системного

программиста").

7. Выходные данные

Выходной информацией программы является следующая:

> данные, введенные пользователем в базу данных по пациентам (см.

"Руководство системного программиста");

> документы, сформированные по введенным данным(см. "Руководство

оператора");

.

Текст программы на языке Clipper Summer'87

Модуль: Karta.prg

*********************************************************************

* Название программы : "KARTA" *

* Дата последних изменений : 23.12.92 *

* Исходный текст : Clipper Summer'87 *

*********************************************************************

SET CONSOLE OFF

SET ESCAPE ON

SET MESSAGE TO 23 CENTER

SET BELL OF

SET DATE GERMAN

SET SCOREBOARD OFF

SET CONFIRM ON

SET WRAP ON

SET KEY -9 TO GO_MAIN && ПО F10 - ВОЗВРАТ В МЕHЮ

SET KEY -29 TO recon

init_lib() && Функция настройки для работы с библиотекой LIB29

t_qwerty=.T.

CLEAR

********************************************

* глобальные переменные программы

*******************************************

PUBLIC edit_index && .T.- редактировать номер ИБ нельзя

&& .F.- можно

edit_index=.F.

PUBLIC gotomain && принудительный возврат в главную процедуру

&& .T.- прервать внутренний цикл и вернуться в MAIN

gotomain=.F.

PUBLIC _today && Текущая дата работы

PUBLIC rec_num && Номер текущей записи

*******************************************

f1 = CHR(218) + CHR(196) + CHR(191) + CHR(179) + ;

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-го уровня

ELSE

color1="W+/B,N/G,BG/N,RB+/B,BG/B"

color2="BG/B,GR+/B,BG/B,RB+/B,BG/B"

color3="N/W,W+/GR"

color4="N/GR,W+/GR"

color5="G+/B,N/W,BG/B,RB+/B,+GR/B"

color6="W+/GR,N+/W"

color7="N/GR,+GR/GR"

color8="W+/B,G+/B,N/W"

color9="B/G,W+/G,W+/N"

ENDIF

******************** ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ **********************

PRIVATE _NUM_IB && Номер истории болезни больного

PRIVATE _FAM && Фамилия больного

_FAM=SPACE(25)

PRIVATE _F_S_NAME && Имя,Отчество больного

PRIVATE _DATE_B && Дата рождения больного

PRIVATE time_B && Время рождения

time_B="00.00"

PRIVATE _HOUR_B && Часы рождения

PRIVATE _MINS_B && Минуты рождения

PRIVATE _POL && Пол

PRIVATE _OLD && Возраст на момент поступления

PRIVATE _OLD_D && Возраст на момент смерти

PRIVATE _MASSA && Масса

PRIVATE _PLACE_LIV && Место жительства

PRIVATE _RAION && Район проживания

PRIVATE _CITY_VILL && Городской/сельский житель

PRIVATE _DIRECT1 && Кем направлен

PRIVATE _DIRECT2 && Номер направляющего стационара

PRIVATE _STATE && Название государства

PRIVATE _PLACE && Название области РФ

*PRIVATE _WHY && Причины направления

PRIVATE _DEPARTMENT && Отделение

PRIVATE _KOIKA && Профиль койки

PRIVATE _PASS && Характер поступления (экстренно,не экстренно)

PRIVATE _TIME && Через какое время после заболевания

PRIVATE _DATE_IN && Дата поступления

_DATE_IN=DATE()

PRIVATE time_IN && Время поступления

time_IN="00.00"

PRIVATE _HOUR_IN && Часы поступления

PRIVATE _MINS_IN && Минуты поступления

PRIVATE _END1 && Исход заболевания

PRIVATE _END2 && Причина исхода

PRIVATE _END3 && Если переведен, то куда

PRIVATE _DATE_END && Дата выписки

PRIVATE time_END && Время выписки

time_END="00.00"

PRIVATE _HOUR_END && Часы выписки

PRIVATE _MINS_END && Минуты выписки

PRIVATE _ALL_DAY && Общее количество дней, проведенных в стационаре

PRIVATE _DIA_DIRECT && Диагноз направляющего учреждения

PRIVATE _NUM_COME && Номер поступления

PRIVATE _RW_DATE && Дата анализа на RW

PRIVATE _RW_REZ && Результат анализа

PRIVATE _FAM_DOCTOR && Фамилия лечащего врача

PRIVATE _KOD1 && Клинический диагноз

PRIVATE _KOD2 && Поталого-анатомический диагноз

PRIVATE _SHIFR && Шифр заболевания по МКБ

PRIVATE _SHIFR_ILL && Шифр операции из каталога операций

*********************************************************************

SELECT 0 && БД шифров заболеваний всех больных

USE DIA66 INDEX DIA66 ALIAS DIA66

COPY STRUCTURE TO BUFF.DBF

SELECT 0 && Вспомогательная БД для формирования диагнозов

больного

USE BUFF ALIAS BUFF

INDEX ON NUM_IB+KOD2+KOD1 TO BUFF.NTX

SELECT 0 && БД шифров операций всех больных

USE OP66 INDEX OP66 ALIAS OP66

COPY STRUCTURE TO BUFF2.DBF

SELECT 0 && Вспомогательная БД для формирования шифров операций

USE BUFF2 ALIAS BUFF2

INDEX ON NUM_IB TO BUFF2.NTX

SELECT 0 && БД кодификаторов

USE CODIF INDEX CODIF ALIAS CODIF

SELECT 0 && БД с основной информацией о пациентах

USE KARTA66 INDEX KARTA66 ALIAS KARTA

SELECT 0 && БД с шаблонами

USE CODPIC INDEX CODPIC ALIAS CODPIC

SELECT 0 && БД с прототипами

USE CODTXT INDEX CODTXT ALIAS CODTXT

*********************** ОСHОВHАЯ РАМКА ***************************

SET COLOR TO "W+/N"

flop_box('c', 0,0,24,79,doubl+fon1)

saycent(0,0,79," ФОРМА N 66 ")

saycent(24,0,79,' перемещение - выбор F10-меню ')

******************** ВВОД СЕГОДHЯШHЕЙ ДАТЫ ***********************

SET COLOR TO(color2)

_today=DATE()

flop_box('c', 9,25,11,55,singl+fon2)

@ 10,32 SAY "СЕГОДHЯ:" GET _today

READ

_NUM_IB=RIGHT(STR(YEAR(_today)),2)+"00000"

**********************************************************************

* ОСНОВНОЙ ЦИКЛ ПРОГРАММЫ *

**********************************************************************

@ 1,1 CLEAR TO 23,78 && очистка экрана для переменных

SET COLOR TO (color1)

@ 2,1,22,78 BOX f1_fon

choice = 1

PRIVATE screen0

DO WHILE choice # 6

SET COLOR TO (color1)

gotomain=.f.

***************** ВЫВОД ГЛАВНОГО МЕНЮ *********************

@ 1,2 PROMPT "Создание" MESSAGE " ввод новой записи ИБ"

@ 1,12 PROMPT "Удаление" MESSAGE " удаление записи из ИБ"

@ 1,22 PROMPT "Редактирование/Печать" MESSAGE " редактирование записи ИБ

"

@ 1,45 PROMPT "Навигатор" MESSAGE "движение по базе данных"

@ 1,56 PROMPT "Отчет" MESSAGE "составление отчетных форм"

@ 1,67 PROMPT " Выход " MESSAGE " выход из программы "

MENU TO choice

SAVE SCREEN TO screen0

DO CASE

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

ENDCASE

PRIVATE sel

sel=SELECT()

SELECT BUFF

ZAP

SELECT BUFF2

ZAP

SELECT (sel)

RELEASE sel

RESTORE SCREEN FROM screen0

ENDDO

COMMIT && Сохраняем рабочие области на диске

CLOSE ALL

DELETE FILE BUFF.DBF

DELETE FILE BUFF.DBT

DELETE FILE BUFF.NTX

DELETE FILE BUFF2.DBF

DELETE FILE BUFF2.DBT

DELETE FILE BUFF2.NTX

RETURN

**********************************************************************

* КОHЕЦ ГЛАВHОГО МОДУЛЯ *

**********************************************************************

**********************************************************************

* INPINDEX() - функция ввода номера истории болезни *

**********************************************************************

FUNCTION inpindex

PRIVATE sel,ret,scr

ret=-1

@ 2,1,4,78 BOX f3+fon2

sel=SELECT()

SELECT KARTA

SET CURSOR ON

DO WHILE !gotomain

SET COLOR TO(color2)

@ 3,28 SAY "Номер ИБ " GET _NUM_IB PICTURE "@R 99/99999"

READ

IF LASTKEY()=27 && ESC

ret= (-1)

EXIT

ENDIF

IF LEN(ALLTRIM(_NUM_IB))=7

SEEK _NUM_IB

IF FOUND()

TONE(100,3)

message('e',"ТАКАЯ ЗАПИСЬ УЖЕ СУЩЕСТВУЕТ,ПРОВЕРЬТЕ HОМЕР ИБ ")

LOOP

ENDIF

ret=0

EXIT

ELSE

TONE(100,3)

message('e','HЕ ЗАПОЛHЕH НОМЕР ИБ,ПРОВЕРЬТЕ ЗАПИСЬ')

ret=-1

ENDIF

ENDDO

SELECT(sel)

RETURN (ret)

**********************************************************************

**********************************************************************

* DET() - функция поиска необходимой для редактирования записи *

**********************************************************************

FUNCTION det

PRIVATE ret1,menu1

PRIVATE sel1,clr1,screen1

ret1=2

sel1=SELECT()

clr1=SETCOLOR()

SELECT karta

SET COLOR TO &color5

@ 10,8 CLEAR TO 14,72

SAVE SCREEN TO screen1

@ 11,15 PROMPT "ВВЕДИТЕ НОМЕР И/Б "

@ 13,15 PROMPT "ВВЕДИТЕ ФАМИЛИЮ БОЛЬНОГО "

MENU TO menu1

IF menu1=0

ret1=0

ELSEIF menu1=1

SET CURSOR ON

@ 11,45 GET _NUM_IB PICTURE "@R 99/99999"

READ

SET CURSOR OFF

SEEK _NUM_IB

IF FOUND()

ret1=1

ENDIF

ELSEIF menu1=2

SET CURSOR ON

@ 13,45 GET _FAM PICTURE "@K" VALID RUSSIAN(_FAM)

READ

SET CURSOR OFF

SET FILTER TO FAM=ALLTRIM(_FAM)

GO TOP

IF !EOF()

ret1=1

_NUM_IB=NUM_IB

ENDIF

SET FILTER TO

ENDIF

RESTORE SCREEN FROM screen1

SELECT (sel1)

SET COLOR TO (clr1)

RETURN (ret1)

**********************************************************************

* ЗАПОЛНЕНИЕ 66 ФОРМЫ *

**********************************************************************

PROCEDURE edit

PARAMETERS do_edit

PRIVATE wt,wb,wl,wr,choice,beg_line,length,string,string1,title

PRIVATE sel,str,i

**************** ОБЪЯВЛЕНИЕ МЕНЮ *****************

PRIVATE last,numenu

last=SELECT()

numenu=1

select 0

use menu.dbf index menu alias menu

numenu=RECCOUNT()

DECLARE promp[numenu-1],vars[numenu-1],row[numenu-1],col[numenu-1]

&& массив промптеров для основного меню

GO TOP

i=1

SEEK "MAIN"

title=STRTRAN(ALLTRIM(text),'Н','H')

SKIP

DO WHILE !EOF() &&LEFT(KEY,4)="MAIN"

promp[i]=STRTRAN(ALLTRIM(text),'Н','H')

i=i+1

SKIP

ENDDO

use

SELECT (last)

******************* КОНЕЦ ОБЪЯВЛЕНИЯ **************

AFILL(vars,' ')

AFILL(col,1)

wt=3

wb=22

wl=2

wr=77

length=wr-wl+1 && Длина строки текста, выводимого на экран

beg_line=1

PRIVATE New_Str && Признак новой строки для Context

New_Str=.F. && Без выделения промптеров

**************************************************************

s=IF(KARTA->END1=3,6,3)

DECLARE promp1[s],vars1[s],row1[s],col1[s] && массив промптеров дополн.

меню

promp1[1]="Основное заболевание :"

promp1[2]="Осложнения :"

promp1[3]="Сопутствующие заболевания :"

AFILL(vars1,' ')

AFILL(col1,1)

IF s=6

promp1[4]="Основное заболевание :"

promp1[5]="Осложнения :"

promp1[6]="Сопутствующие заболевания :"

ENDIF

**************************************************************

DO initial && Процедура формирования выводимого текста

**************************************************************

cur_promp=1

@ 3,1 CLEAR TO 22,78

DO WHILE .T.

IF gotomain.AND.do_edit

IF yesno(12," Сохранить изменения в базе данных ? ")=1

IF all_r()

DO new_save

RETURN

ELSE

gotomain=.F.

ENDIF

ELSE

RETURN

ENDIF

ELSEIF gotomain.AND.!do_edit

RETURN

ENDIF

new_str=.F.

choice=hypertxt(wt,wl,wb,wr,string,promp,row,col,@beg_line,@cur_promp,color8

,;

title)

cur_promp=cur_promp%len(promp)+1

IF do_edit

i=choice

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=15

* vars[i]=codif1("RIZS",@_WHY)

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)+"Проведено дней в стационаре

:"+STR(_ALL_DAY)

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

***********************************************************

string1=""

IF choice#25.AND.choice#26

vars[choice]=TRIM(vars[choice])+"."

ENDIF

context(@string1,promp[choice],vars[choice],length,New_Str)

IF choice=20

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

ELSEIF choice=22.AND._END1=3

y_m_day(_DATE_B,_HOUR_B,_MINS_B,_DATE_END,_HOUR_END,_MINS_END)

context(@string1,"Возраст на момент смерти :",;

extra1(_OLD_D,"OLDS")+".",length,.F.)

ELSEIF choice=26

context(@string1,"Обследование на реакцию ВАССЕРМАНА :","",length,.F.)

ENDIF

stuff1(@string,length,string1,choice,row,len(promp))

ENDIF

ENDDO

RETURN

**********************************************************************

* ПРОЦЕДУРА ФОРМИРОВАНИЯ СОДЕРЖИМОГО 66 ФОРМЫ *

**********************************************************************

PROCEDURE initial

PRIVATE sel,i,v

PRIVATE rez

SET CURSOR OFF

sel=SELECT()

v=replicate(chr(176),30)

@ 13,25 SAY v

SELECT karta

vars[1]= SUBSTR(_NUM_IB,1,2)+'/'+SUBSTR(_NUM_IB,3,7)

vars[2] =FAM

_FAM=FAM

vars[3] =F_S_NAME

_F_S_NAME=F_S_NAME

vars[4]=DTOC(DATE_IN)

_DATE_IN=DATE_IN

*__________________________________

_HOUR_IN=HOUR_IN

_MINS_IN=MINS_IN

IF _HOUR_IN=0.AND._MINS_IN=0

time_IN="00.00"

ELSEIF _HOUR_IN=0

time_IN="00."+STR(MINS_IN)

ELSEIF _MINS_IN=0

time_IN=STR(HOUR_IN)+".00"

ELSE

time_IN=STR(HOUR_IN)+"."+STR(MINS_IN)

ENDIF

vars[5]=time_IN

*----------------------------------

vars[6] =extra1(POL,"POLS")

_POL=POL

vars[7] =DTOC(DATE_B)

_DATE_B=DATE_B

*__________________________________

_HOUR_B=HOUR_B

_MINS_B=MINS_B

IF _HOUR_B=0.AND._MINS_B=0

time_B="00.00"

ELSEIF _HOUR_B=0

time_B="00."+STR(MINS_B)

ELSEIF _MINS_B=0

time_B=STR(HOUR_B)+".00"

ELSE

time_B=STR(HOUR_B)+"."+STR(MINS_B)

ENDIF

vars[8]=time_B

*-----------------------------------

vars[9] =extra1(OLD,"OLDS")

_OLD=OLD

_OLD_D=OLD_D

vars[10] =MASSA

_MASSA =MASSA

vars[11] =PLACE_LIV

_PLACE_LIV=PLACE_LIV

vars[12] =extra1(RAION,"RIGS")

_RAION =RAION

vars[13]=extra1(CITY_VILL,"CITZ")

_CITY_VILL=CITY_VILL

*___________________________________

_DIRECT1=DIRECT1

_DIRECT2=DIRECT2

vars[14]=IF(_DIRECT2=0,extra1(_DIRECT1,"DIRS"),;

IF(_DIRECT1=1,extra1(_DIRECT2,"BIRS"),;

extra1(_DIRECT2,"HOSP")))

*------------------------------------

promp[15]=IF(PLACE#0,"Регион :","Государство :")

vars[15]=IF(STATE#0,IF(STATE=1,;

IF(PLACE=0,"Российская

Федерация",extra1(PLACE,"PLCE")),;

extra1(STATE,"STTE")),;

"Российская Федерация")

_STATE=IF(STATE=0,1,STATE)

_PLACE=PLACE

vars[16]=extra1(DEPARTMENT,"DEPS")

_DEPARTMENT=DEPARTMENT

vars[17]=extra1(KOIKA,"KOIK")

_KOIKA=KOIKA

vars[18]=extra1(PASS,"EXTR")

_PASS=PASS

vars[19]=extra1(TIME,"TIMS")

_TIME=TIME

*__________________________________

_END1=END1

_END2=END2

_END3=END3

vars[20]=extra1(_END1,"REZS")

*----------------------------------

vars[21]=DTOC(DATE_END)

_DATE_END=DATE_END

*__________________________________

_HOUR_END=HOUR_END

_MINS_END=MINS_END

IF _HOUR_END=0.AND._MINS_END=0

time_END="00.00"

ELSEIF _HOUR_END=0

time_IN="00."+STR(MINS_END)

ELSEIF _MINS_END=0

time_IN=STR(HOUR_END)+".00"

ELSE

time_END=STR(HOUR_END)+"."+STR(MINS_END)

ENDIF

vars[22]=time_END

*__________________________________

_ALL_DAY=ALL_DAY

IF !EMPTY(_DATE_END)

vars[21]=vars[21]+SPACE(5)+"Проведено дней в стационаре :"+STR(_ALL_DAY)

ENDIF

*----------------------------------

_DIA_DIRECT=SHIFR

IF _DIA_DIRECT#" "

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

ELSEIF _DIA_DIRECT=" "

vars[23]=_DIA_DIRECT

ENDIF

*----------------------------------

vars[24]=extra1(NUM_COME,"VIZI")

_NUM_COME=NUM_COME

vars[27]=DTOC(RW_DATE)

_RW_DATE=RW_DATE

vars[28]=extra1(RW_REZ,"RWRZ")

_RW_REZ=RW_REZ

vars[29]=extra1(FAM_DOCTOR,"FAMS")

_FAM_DOCTOR=FAM_DOCTOR

v=replicate(chr(178),10)

@ 13,25 SAY v

*************************************

vars[25]=initial1("DIA66")

v=replicate(chr(178),20)

@ 13,25 SAY v

*************************************

SELECT op66

SET SOFTSEEK ON

seek _num_ib

SET SOFTSEEK OFF

IF !FOUND()

vars[26]="" && Хирургические операции

Страницы: 1, 2, 3, 4, 5


© 2010 Современные рефераты