Файл: Р азработка информационного комплекса для лечебного учреждения.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 424

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

АННОТАЦИЯ

1. ВВЕДЕНИЕ

2. АНАЛИЗ СОСТОЯНИЯ ВОПРОСА

2.1. Технологии применения специализированных программных продуктов.

2. 2. Основные топологии локальных вычислительных сетей (ЛВС).

2. 3. Среды передачи данных.

2. 4. Базовые сетевые протоколы.

2. 5. Операционные системы для локальных вычислительных сетей.

3. РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ ИНФОРМАЦИОННОГО КОМПЛЕКСА

3. 1. Исходные данные.

3. 2. Постановка задачи.

3. 3. Решение задачи.

3. 3. 1. Выбор топологии сети.

3. 3. 2. Выбор операционной системы.

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

3. 3. 4. Электропитание локальной вычислительной сети.

3. 3. 5. Резервное копирование.

4. РАЗРАБОТКА СИСТЕМЫ ОБЕСПЕЧЕНИЯ ВНЕШНИХ ТЕЛЕКОММУНИКАЦИЙ

4. 1. Виды телекоммуникационных систем.

4. 2. Варианты доступа в Internet.

4. 3. Применение технологии Internet в системе.

5. АДАПТАЦИЯ И ВНЕДРЕНИЕ ПРИКЛАДНОГО СПЕЦИАЛИЗИРОВАННОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

5. 1. Использование структур-форм документов.

5. 2. Основные термины.

5. 3. Разработка программы аналитической обработки информации «Флюоротека».

5. 3. 1. Настройка.

5. 3. 2. Карточка.

5. 3. 3. Заключение.

5. 3. 4. Дообследование.

5. 3. 5. Архив.

5. 3. 6. «Д» - учет.

5. 4. Возможность получения отчетов.

5. 5. Структура баз данных в программе «Флюоротека».

6. РАЗРАБОТКА ТЕХНОЛОГИИ ЭЛЕКТРОННОГО ДОКУМЕНТООБОРОТА В ЛЕЧЕБНОМ УЧРЕЖДЕНИИ

6. 1. Основные принципы электронного документооборота.

6. 2. Оценка объемов документооборота.

6. 3. Возможности электронного документооборота в лечебном учреждении.

7. РАЗРАБОТКА МЕТОДИКИ КОНФИГУРИРОВАНИЯ, АДМИНИСТРИРОВАНИЯ И ЭКСПЛУАТАЦИИ СПЕЦИАЛИЗИРОВАННОГО ПРОГРАММНОГО КОМПЛЕКСА ДЛЯ ЛЕЧЕБНОГО УЧРЕЖДЕНИЯ

7. 1. Конфигурирование комплекса.

7. 2. Администрирование комплекса.

8. РЕЗУЛЬТАТЫ ЭКСПЕРИМЕНТАЛЬНЫХ ИССЛЕДОВАНИЙ

9. ПРОЕКТИРОВАНИЕ РАБОЧЕГО МЕСТА ОПЕРАТОРА – МЕДИЦИНСКОГО РАБОТНИКА НА ОСНОВЕ ОБЩИХ РЕКОМЕНДАЦИЙ И С УЧЕТОМ СПЕЦИФИКИ ЛЕЧЕБНОГО УЧРЕЖДЕНИЯ

9. 1. Условия труда.

9. 2. Эргономика и проектирование рабочего места.

9. 3. Требования к помещениям для эксплуатации мониторов и ПЭВМ.

9. 4. Требования к микроклимату, содержанию аэроинов и вредных химических

веществ в воздухе помещений эксплуатации мониторов и ПЭВМ.

9. 5. Требования к освещению помещений и рабочих мест.

9. 6. Требования к шуму и вибрации.

9. 7. Расчет освещенности помещения.

ОРГАНИЗАЦИОННО-ЭКОНОМИЧЕСКИЙ РАЗДЕЛ

10. ЦЕЛЕСООБРАЗНОСТЬ РАЗРАБОТКИ С ЭКОНОМИЧЕСКОЙ ТОЧКИ ЗРЕНИЯ. РАСЧЕТ СТОИМОСТИ СЕТЕВОГО КОМПЛЕКСА

10. 1. Целесообразность разработки с экономической точки зрения.

10. 2. Расчет стоимости комплекса.

10. 2. 1. Фонд оплаты труда.

10. 2. 2. Материальные затраты.

10. 2. 3. Общая смета затрат.

11. ЗАКЛЮЧЕНИЕ

12. СПИСОК ЛИТЕРАТУРЫ Рот Г. З., Денисов В. Н., Шульман Е. И. «Проблемы организации и перспективы внедрения компьютерных технологий в многопрофильной больнице». Бюллетень Сибирского Отделения РАМН, 1998 г. Рот Г. З., Миронов В. А., Шульман Е.И. «Четырехлетний опыт использования компьютерной истории болезни (вопросы повышения качества лечения). В сб. «Обеспечение качетсва оказания медицинской помощи в лечебно-профилактических учреждениях», Межрегиональная ассоциация «Здравоохранение Сибири», г. Барнаул, 1996 г. «PC WEEK», № 1, 2000 г. «Медицинские информационные системы». Web – сервер: http:// www.intersystems.ru Web – сервер: http:// www.sovtest.ru/

Терапевтический корпус

Рентген

УЗИ

ЭКГ

ФГС


+"Направлено к онкологу - "+LTRIM(STR(fact))+lf;

+SPACE(15)+"Дообследовано у онколога  ..... - "+LTRIM(STR(t3))+lf;

+SPACE(15)+"Выявлено онкобольных ......... - "+LTRIM(STR(t4))+lf

//SETCOLOR("W/B")

//@ 24,0 CLEAR TO 24,79

//@ 24, 1 SAY '"Esc" - выход; F5 - печать'

//SETCOLOR("W/BR")

blank=str+lf+lf

flag=0

DO WHILE flag != 2

SETCOLOR("W/B")

@ 24,0 CLEAR TO 24,79

@ 24, 1 SAY '"Esc" - выход; F5 - печать'

SETCOLOR("W/BR")

@ 0,0 TO 23,79

str=MEMOEDIT(str,1,1,22,78,.F.,"BRO")

IF flag = -4

DO PRINTER // печатать бланк

flag=1

ENDIF

ENDDO

SET FILTER TO

SETCOLOR(s_c)

RESTSCREEN(0,0,24,79,buf)

RETURN
PROCEDURE LABOR_N

LOCAL buf, s_c, alt, i, str, itogs, itogp

buf=SAVESCREEN(0,0,24,79)

s_c=SETCOLOR("W+/BG+")

@ 0,0 CLEAR TO 24,79

@ 0,0 TO 23,79

KEYBOARD CHR(1)

INKEY(0)

SETCOLOR("W/B")

//@ 24,0 CLEAR TO 24,79

//@ 24, 1 SAY '"Esc" - выход'

//SETCOLOR("W/BR")

SELECT 5

SET FILTER TO !DELETED() .AND. "LABORANT" $ GROUP

COUNT TO ndra

IF ndra = 0

SETCOLOR("W+/B")

@ 10,10 CLEAR TO 15,70

@ 10,10 TO 15,70

@ 12, 20 SAY 'Выберите пункт "НАСТРОЙКА" в главном меню'

@ 13, 19 SAY ' и заполните список "ЛАБОРАНТЫ" '

INKEY(delay)

flag=2

SETCOLOR("W+/BG")

SET FILTER TO

RETURN

ENDIF

PUBLIC codeC[ndra], nameC[ndra], snim[ndra], pati[ndra]

GOTO TOP

FOR i=1 TO ndra

codeC[i]=CODE

nameC[i]=NAME

snim[i]=0

pati[i]=0

SKIP

NEXT

SELECT 3

SET FILTER TO !DELETED() .AND. FLUO_DATE >= datBeg;

.AND. FLUO_DATE <= datEnd

GOTO TOP

itogs=0

itogp=0

DO WHILE !EOF()

i=ASCAN(codeC, LABORANT)

IF i != 0

snim[i]=snim[i]+QUAL

pati[i]=pati[i]+1

itogs=itogs+QUAL

itogp=itogp+1

ENDIF

SKIP

ENDDO

str=SPACE(35)+hosp+" "+addr+lf+lf;

+"О Т Ч Е Т "+'"'+ALLTRIM(aid1[alt_rep])+'"'+" "+lf;

+SPACE(24)+"за период с "+DTOC(datBeg)+" по "+DTOC(datEnd)+lf+lf;

+"Ф.И.О. лаборанта "+SPACE(33)+" Число "+" Число"+lf;

+SPACE(51)+"снимков"+" обращений"+lf

FOR i=1 TO ndra

str=str+SUBSTR(nameC[i],1,50)+" "+ALLTRIM(STR(snim[i]));

+SPACE(9-LEN(ALLTRIM(STR(snim[i]))));

+ALLTRIM(STR(pati[i]));

+SPACE(9-LEN(ALLTRIM(STR(pati[i]))))+lf

NEXT

str=str+"‚‘…ѓЋ:"+SPACE(45)+ALLTRIM(STR(itogs));

+SPACE(9-LEN(ALLTRIM(STR(itogs))));

+ALLTRIM(STR(itogp));

+SPACE(9-LEN(ALLTRIM(STR(itogp))))

blank=str+lf+lf

flag=0

DO WHILE flag != 2

SETCOLOR("W/B")

@ 24,0 CLEAR TO 24,79

@ 24, 1 SAY '"Esc" - выход; F5 - печать'

SETCOLOR("W/BR")

@ 0,0 TO 23,79

str=MEMOEDIT(str,1,1,22,78,.F.,"BRO")

IF flag = -4

DO PRINTER

flag=1

ENDIF

ENDDO

SET FILTER TO

SETCOLOR(s_c)

RESTSCREEN(0,0,24,79,buf)

RETURN
PROCEDURE CATEGOR

LOCAL buf, s_c, alt, i, str, ndra, ndra1, n, j, row, maxLen, maxS

PRIVATE sum, podsum, proco

buf=SAVESCREEN(0,0,24,79)

s_c=SETCOLOR("W+/BR+")

@ 0,0 CLEAR TO 24,79

@ 0,0 TO 23,79

SELECT 13

USE citycont

SELECT 5

SET FILTER TO GROUP="CONTING" .AND. !DELETED()

COUNT FOR GROUP="CONTING" .AND. !DELETED() TO ndra

GOTO TOP

IF ndra = 0

SETCOLOR("W+/B")

@ 10,10 CLEAR TO 15,70

@ 10,10 TO 15,70

INKEY(delay)

flag=2

SET FILTER TO

SETCOLOR("W+/BG")

RETURN

ENDIF

PUBLIC codeC[ndra], nameC[ndra], podl[ndra], wos[ndra], procent[ndra]

FOR i=1 TO ndra

codeC[i]=CODE

nameC[i]=NAME

SKIP

NEXT

SET FILTER TO GROUP="CITY" .AND. !DELETED()

COUNT FOR GROUP="CITY" .AND. !DELETED() TO ndra1

GOTO TOP

IF ndra1 = 0

SETCOLOR("W+/B")

@ 10,10 CLEAR TO 15,70

@ 10,10 TO 15,70

INKEY(delay)

flag=2

SET FILTER TO

SETCOLOR("W+/BG")


RETURN

ENDIF

n=ndra1+1

PUBLIC cit_name[n], cit_code[n]

cit_name[1]="Всего по району"

cit_code[1]=0

FOR i=2 TO n

cit_name[i]=NAME

cit_code[i]=CODE

SKIP

NEXT

maxLen=LEN(NAME)

SELECT 3

SET FILTER TO !DELETED() .AND. FLUO_DATE >= datBeg;

.AND. FLUO_DATE <= datEnd

SET RELATION TO STR(ID,6) INTO passport

i=0

DO WHILE .T.

GOTO TOP

SETCOLOR("W/B+")

CLEAR TYPEAHEAD

maxS=IF(8+n<22, 8+n, 22)

@ 7,9 CLEAR TO maxS,10+maxLen

@ 7,9 TO maxS,10+maxLen

i = ACHOICE(8,10,maxS-1,9+maxLen,cit_name,.T.,"USE_PASS",i)

IF i = 0

EXIT

ENDIF

SETCOLOR("W+/B+")

@ 0,0 CLEAR TO 24,79

@ 0,0 TO 23,79

SETCOLOR("W+/BR+")

@ 24,0 CLEAR TO 24,79

@ 24, 1 SAY 'введите число подлежавших осмотру; "Esc" - отказ'

SETCOLOR("W+/B+")

SELECT 13

GOTO TOP

FOR j=1 TO ndra

IF cit_code[i] != 0

LOCATE FOR CODE_CONT = codeC[j] .AND. CODE_CITY = cit_code[i]

IF FOUND()

podl[j]=QUAL

ELSE

podl[j]=0

ENDIF

ELSE

SET FILTER TO CODE_CONT = codeC[j]

GOTO TOP

podl[j]=0

DO WHILE !EOF()

podl[j]=podl[j]+QUAL

SKIP

ENDDO

SET FILTER TO

ENDIF

@ 1, 1 SAY cit_name[i]

row=IF(j+1 < 22, j+1, 22)

@ 22,1 CLEAR TO 22,78

@ row, 1 SAY TRIM(SUBSTR(nameC[j],1,48));

+REPLICATE(".", IF(55-LEN(TRIM(nameC[j]))>0;

,55-LEN(TRIM(nameC[j])), 7));

+" подлежало" GET podl[j]

wos[j]=0

NEXT

SELECT 3

SET KEY 27 TO ESC_GETA

flag=0

READ

SET KEY 27 TO

IF flag = 2

SET RELATION TO

SET FILTER TO

SETCOLOR(s_c)

RESTSCREEN(0,0,24,79,buf)

KEYBOARD CHR(1)

RETURN

ENDIF

IF cit_code[i] != 0

SELECT 13

FOR j=1 TO ndra

LOCATE FOR CODE_CONT = codeC[j] .AND. CODE_CITY = cit_code[i]

IF FOUND()

REPLACE QUAL WITH podl[j]

ELSE

APPEND BLANK

REPLACE CODE_CITY WITH cit_code[i], CODE_CONT WITH codeC[j], QUAL WITH podl[j]

ENDIF

NEXT

COMMIT

ENDIF

SELECT 3

DO WHILE !EOF()

IF cit_code[i] != 0

IF 1->CITY = cit_code[i]

j=ASCAN(codeC,1->CONTING)

IF j != 0

wos[j]=wos[j]+1

ENDIF

ENDIF

ELSE

j=ASCAN(codeC,1->CONTING)

IF j != 0

wos[j]=wos[j]+1

ENDIF

ENDIF

SKIP

ENDDO

str=SPACE(35)+hosp+" "+addr+lf+lf;

sum=0

podsum=0

FOR j=1 TO ndra

sum=sum+wos[j]

podsum=podsum+podl[j]

IF podl[j] != 0

procent[j]=(wos[j]/podl[j])*100

ELSE

procent[j]=0

ENDIF

str=str+SUBSTR(nameC[j],1,54)+" подлежало "+LTRIM(STR(podl[j]))+lf;

+SUBSTR(nameC[j],55)+SPACE(55-LEN(SUBSTR(nameC[j],55)));

+" прошли"+LTRIM(STR(wos[j]))+lf;

+SPACE(51)+"процент охвата  - "+LTRIM(STR(procent[j]))+"%"+lf+lf

NEXT

IF podsum != 0

proco=(sum/podsum)*100

ELSE

proco=0

ENDIF

str=str+"‚‘…ѓЋ"+SPACE(49)+" подлежало "+LTRIM(STR(podsum))+lf;

+SPACE(55)+" прошли"+LTRIM(STR(sum))+lf;

+SPACE(51)+"процент охвата "+LTRIM(STR(proco))+"%"+lf+lf

blank=str+lf+lf

flag=0

DO WHILE flag != 2

SETCOLOR("W/B")

@ 24,0 CLEAR TO 24,79

@ 24, 1 SAY '"Esc" - выход; F5 - печать'

SETCOLOR("W/BR")

@ 0,0 TO 23,79

str=MEMOEDIT(str,1,1,22,78,.F.,"BRO")

IF flag = -4

DO PRINTER

flag=1

ENDIF

ENDDO

ENDDO

SELECT 13

USE

SELECT 3

SET FILTER TO

SET RELATION TO

SETCOLOR(s_c)

RESTSCREEN(0,0,24,79,buf)

RETURN
PROCEDURE CATEGOR

LOCAL buf, s_c, alt, i, str, ndra, ndra1, n, j, row, maxLen, maxS

PRIVATE sum, podsum, proco, rr

buf=SAVESCREEN(0,0,24,79)

s_c=SETCOLOR("W+/BR+")

@ 0,0 CLEAR TO 24,79

@ 0,0 TO 23,79

SELECT 13

USE citycont

SELECT 5

SET FILTER TO GROUP="CONTING" .AND. !DELETED()

COUNT FOR GROUP="CONTING" .AND. !DELETED() TO ndra

GOTO TOP

IF ndra = 0



SETCOLOR("W+/B")

@ 10,10 CLEAR TO 15,70

@ 10,10 TO 15,70

INKEY(delay)

flag=2

SET FILTER TO

SETCOLOR("W+/BG")

RETURN

ENDIF

PUBLIC codeC[ndra], nameC[ndra], podl[ndra], wos[ndra], procent[ndra]

FOR i=1 TO ndra

codeC[i]=CODE

nameC[i]=NAME

SKIP

NEXT

SET FILTER TO GROUP="CITY" .AND. !DELETED()

COUNT FOR GROUP="CITY" .AND. !DELETED() TO ndra1

GOTO TOP

IF ndra1 = 0

SETCOLOR("W+/B")

@ 10,10 CLEAR TO 15,70

@ 10,10 TO 15,70

INKEY(delay)

flag=2

SET FILTER TO

SETCOLOR("W+/BG")

RETURN

ENDIF

n=ndra1+1

PUBLIC cit_name[n], cit_code[n]

cit_name[1]="всего по району"

cit_code[1]=0

FOR i=2 TO n

cit_name[i]=NAME

cit_code[i]=CODE

SKIP

NEXT

maxLen=LEN(NAME)

SELECT 3

// SET FILTER TO !DELETED() .AND. FLUO_DATE >= datBeg;

// .AND. FLUO_DATE <= datEnd

SET RELATION TO STR(ID,6) INTO passport

i=0

DO WHILE .T.

GOTO TOP

SETCOLOR("W/B+")

CLEAR TYPEAHEAD

maxS=IF(8+n<22, 8+n, 22)

@ 7,9 CLEAR TO maxS,10+maxLen

@ 7,9 TO maxS,10+maxLen

i = ACHOICE(8,10,maxS-1,9+maxLen,cit_name,.T.,"USE_PASS",i)

IF i = 0

EXIT

ENDIF

SETCOLOR("W+/B+")

@ 0,0 CLEAR TO 24,79

@ 0,0 TO 23,79

SETCOLOR("W+/BR+")

@ 24,0 CLEAR TO 24,79

SETCOLOR("W+/B+")

SELECT 13

GOTO TOP

rr=0

@ 1, 1 SAY cit_name[i]

FOR j=1 TO ndra

rr=rr+1

IF cit_code[i] != 0

LOCATE FOR CODE_CONT = codeC[j] .AND. CODE_CITY = cit_code[i]

IF FOUND()

podl[j]=QUAL

ELSE

podl[j]=0

ENDIF

ELSE

SET FILTER TO CODE_CONT = codeC[j]

GOTO TOP

podl[j]=0

DO WHILE !EOF()

podl[j]=podl[j]+QUAL

SKIP

ENDDO

SET FILTER TO

ENDIF

IF rr = 22

rr=1

SET KEY 27 TO ESC_GETA

flag=0

READ

@ 2,1 CLEAR TO 22,78

SET KEY 27 TO

IF flag = 2

SET RELATION TO

SET FILTER TO

SETCOLOR(s_c)

RESTSCREEN(0,0,24,79,buf)

KEYBOARD CHR(1)

RETURN

ENDIF

ENDIF

@ 22,1 CLEAR TO 22,78

@ rr+1, 1 SAY TRIM(SUBSTR(nameC[j],1,48));

+REPLICATE(".", IF(48-LEN(TRIM(nameC[j]))>0;

,55-LEN(TRIM(nameC[j])), 7));

+" подлежало" GET podl[j]

wos[j]=0

NEXT

SET KEY 27 TO ESC_GETA

flag=0

READ

SET KEY 27 TO

IF flag = 2

SET RELATION TO

SET FILTER TO

SETCOLOR(s_c)

RESTSCREEN(0,0,24,79,buf)

KEYBOARD CHR(1)

RETURN

ENDIF

SELECT 3

IF cit_code[i] != 0

SELECT 13

FOR j=1 TO ndra

LOCATE FOR CODE_CONT = codeC[j] .AND. CODE_CITY = cit_code[i]

IF FOUND()

REPLACE QUAL WITH podl[j]

ELSE

APPEND BLANK

REPLACE CODE_CITY WITH cit_code[i], CODE_CONT WITH codeC[j], QUAL WITH podl[j]

ENDIF

NEXT

COMMIT

ENDIF

SELECT 3

GOTO TOP

DO WHILE !EOF()

IF !DELETED() .AND. FLUO_DATE >= datBeg;

.AND. FLUO_DATE <= datEnd

IF cit_code[i] != 0

IF 1->CITY = cit_code[i]

j=ASCAN(codeC,1->CONTING)

IF j != 0

wos[j]=wos[j]+1

ENDIF

ENDIF

ELSE

j=ASCAN(codeC,1->CONTING)

IF j != 0

wos[j]=wos[j]+1

ENDIF

ENDIF

ENDIF

SKIP

ENDDO

ENDDO

SELECT 13

USE

SELECT 3

SET FILTER TO

SET RELATION TO

SETCOLOR(s_c)

RESTSCREEN(0,0,24,79,buf)

RETURN
PROCEDURE CITY

LOCAL buf, s_c, alt, i, str, ndra, ndra1, n, j, row, maxLen, maxS

PRIVATE sum, podsum, proco, rr

buf=SAVESCREEN(0,0,24,79)

s_c=SETCOLOR("W+/BR+")

@ 0,0 CLEAR TO 24,79

@ 0,0 TO 23,79

SELECT 13

USE citycont

SELECT 5

SET FILTER TO GROUP="CONTING" .AND. !DELETED()

COUNT FOR GROUP="CONTING" .AND. !DELETED() TO ndra

GOTO TOP

IF ndra = 0

SETCOLOR("W+/B")

@ 10,10 CLEAR TO 15,70

@ 10,10 TO 15,70

INKEY(delay)

flag=2

SET FILTER TO

SETCOLOR("W+/BG")

RETURN

ENDIF

PUBLIC codeC[ndra], nameC[ndra], podl[ndra], wos[ndra], procent[ndra]


FOR i=1 TO ndra

codeC[i]=CODE

nameC[i]=NAME

SKIP

NEXT

SET FILTER TO GROUP="CITY" .AND. !DELETED()

COUNT FOR GROUP="CITY" .AND. !DELETED() TO ndra1

GOTO TOP

IF ndra1 = 0

SETCOLOR("W+/B")

@ 10,10 CLEAR TO 15,70

@ 10,10 TO 15,70

INKEY(delay)

flag=2

SET FILTER TO

SETCOLOR("W+/BG")

RETURN

ENDIF

n=ndra1

PUBLIC cit_name[n], cit_code[n]

FOR i=1 TO n

cit_name[i]=NAME

cit_code[i]=CODE

SKIP

NEXT

maxLen=LEN(NAME)

SELECT 3

//SET FILTER TO !DELETED() .AND. FLUO_DATE >= datBeg;

// .AND. FLUO_DATE <= datEnd

SET RELATION TO STR(ID,6) INTO passport

i=0

DO WHILE .T.

GOTO TOP

SETCOLOR("W/B+")

CLEAR TYPEAHEAD

maxS=IF(8+ndra<22, 8+ndra, 22)

@ 7,9 CLEAR TO maxS,10+maxLen

@ 7,9 TO maxS,10+maxLen

i = ACHOICE(8,10,maxS-1,9+maxLen,nameC,.T.,"USE_PASS",i)

IF i = 0

EXIT

ENDIF

SETCOLOR("W+/B+")

@ 0,0 CLEAR TO 24,79

@ 0,0 TO 23,79

SETCOLOR("W+/BR+")

@ 24,0 CLEAR TO 24,79

SETCOLOR("W+/B+")

SELECT 13

GOTO TOP

rr=0

@ 1, 1 SAY nameC[i]

FOR j=1 TO ndra1

rr=rr+1

IF codeC[i] != 0

LOCATE FOR CODE_CONT = codeC[i] .AND. CODE_CITY = cit_code[j]

IF FOUND()

podl[j]=QUAL

ELSE

podl[j]=0

ENDIF

ELSE

SET FILTER TO CODE_CONT = codeC[i]

GOTO TOP

podl[j]=0

DO WHILE !EOF()

podl[j]=podl[j]+QUAL

SKIP

ENDDO

SET FILTER TO

ENDIF

IF rr = 22

rr=1

SET KEY 27 TO ESC_GETA

flag=0

READ

@ 2,1 CLEAR TO 22,78

SET KEY 27 TO

IF flag = 2

SET RELATION TO

SET FILTER TO

SETCOLOR(s_c)

RESTSCREEN(0,0,24,79,buf)

KEYBOARD CHR(1)

RETURN

ENDIF

ENDIF

@ 22,1 CLEAR TO 22,78

@ rr+1, 1 SAY TRIM(SUBSTR(cit_name[j],1,48));

+REPLICATE(".", IF(55-LEN(TRIM(cit_name[j]))>0;

,55-LEN(TRIM(cit_name[j])), 7));

+"подлежало" GET podl[j]

wos[j]=0

NEXT

SET KEY 27 TO ESC_GETA

flag=0

READ

SET KEY 27 TO

IF flag = 2

SET RELATION TO

SET FILTER TO

SETCOLOR(s_c)

RESTSCREEN(0,0,24,79,buf)

KEYBOARD CHR(1)

RETURN

ENDIF

SELECT 3

IF codeC[i] != 0

SELECT 13

FOR j=1 TO ndra1

LOCATE FOR CODE_CONT = codeC[i] .AND. CODE_CITY = cit_code[j]

IF FOUND()

REPLACE QUAL WITH podl[j]

ELSE

APPEND BLANK

REPLACE CODE_CITY WITH cit_code[j], CODE_CONT WITH codeC[i], QUAL WITH podl[j]

ENDIF

NEXT

COMMIT

ENDIF

SELECT 3

GOTO TOP

DO WHILE !EOF()

IF !DELETED() .AND. FLUO_DATE >= datBeg;

.AND. FLUO_DATE <= datEnd

IF codeC[i] != 0

IF 1->CONTING = codeC[i]

j=ASCAN(cit_code,1->CITY)

IF j != 0

wos[j]=wos[j]+1

ENDIF

ENDIF

ELSE

j=ASCAN(cit_code,1->CITY)

IF j != 0

wos[j]=wos[j]+1

ENDIF

ENDIF

ENDIF

SKIP

ENDDO

str=SPACE(35)+hosp+" "+addr+lf+lf;

+"О Т Ч Е Т "+'"'+ALLTRIM(aid1[alt_rep])+'"'+" "+lf;

+SPACE(24)+"за период с "+DTOC(datBeg)+" по "+DTOC(datEnd)+lf;

+SPACE(14)+"Категория контингента "+nameC[i]+lf+lf

sum=0

podsum=0

FOR j=1 TO ndra1

sum=sum+wos[j]

podsum=podsum+podl[j]

IF podl[j] != 0

procent[j]=(wos[j]/podl[j])*100

ELSE

procent[j]=0

ENDIF

str=str+SUBSTR(cit_name[j],1,54)+"подлежало "+LTRIM(STR(podl[j]))+lf;

+SUBSTR(cit_name[j],55)+SPACE(55-LEN(SUBSTR(cit_name[j],55)));

+" прошли "+LTRIM(STR(wos[j]))+lf;

+SPACE(51)+"процент охвата "+LTRIM(STR(procent[j]))+"%"+lf+lf

NEXT

IF podsum != 0

proco=(sum/podsum)*100

ELSE

proco=0

ENDIF

str=str+"ВСЕГО"+SPACE(49)+" подлежало "+LTRIM(STR(podsum))+lf;

+SPACE(55)+" прошли - "+LTRIM(STR(sum))+lf;

+SPACE(51)+"процент охвата "+LTRIM(STR(proco))+"%"+lf+lf

blank=str+lf+lf

flag=0

DO WHILE flag != 2

SETCOLOR("W/B")


@ 24,0 CLEAR TO 24,79

@ 24, 1 SAY '"Esc" - выход; F5 - печать'

SETCOLOR("W/BR")

@ 0,0 TO 23,79

str=MEMOEDIT(str,1,1,22,78,.F.,"BRO")

IF flag = -4

DO PRINTER

flag=1

ENDIF

ENDDO

ENDDO

SELECT 13

USE

SELECT 3

SET FILTER TO

SET RELATION TO

SETCOLOR(s_c)

RESTSCREEN(0,0,24,79,buf)

RETURN
PROCEDURE LISTING

PRIVATE ndra1, i, nn, alt

buf=SAVESCREEN(0,0,24,79)

s_c=SETCOLOR("W+/BR+")

@ 0,0 CLEAR TO 24,79

@ 0,0 TO 23,79

SELECT 3

SET FILTER TO

SELECT 5

SET FILTER TO GROUP="CITY" .AND. !DELETED()

COUNT FOR GROUP="CITY" .AND. !DELETED() TO ndra1

GOTO TOP

IF ndra1 = 0

SETCOLOR("W+/B")

@ 10,10 CLEAR TO 15,70

@ 10,10 TO 15,70

@ 12, 20 SAY 'Выберите пункт "НАСТРОЙКА" в главном меню'

@ 13, 25 SAY 'и заполните список «ГОРОДА/СЕЛА»"'

INKEY(delay)

flag=2

SET FILTER TO

SETCOLOR("W+/BG")

RETURN

ENDIF

PUBLIC cit_name[ndra1], cit_code[ndra1]

FOR i=1 TO ndra1

cit_name[i]=ALLTRIM(NAME)

cit_code[i]=CODE

SKIP

NEXT

maxLen=LEN(NAME)

alt=0

DO WHILE .T.

GOTO TOP

SETCOLOR("W+/BR+")

@ 0,0 CLEAR TO 24,79

@ 0,0 TO 23,79

SETCOLOR("W/B+")

CLEAR TYPEAHEAD

maxS=IF(8+ndra1<22, 8+ndra1, 22)

@ 7,9 CLEAR TO maxS,10+maxLen

@ 7,9 TO maxS,10+maxLen

alt = ACHOICE(8,10,maxS-1,9+maxLen,cit_name,.T.,"USE_PASS",alt)

IF alt = 0

EXIT

ENDIF

str=SPACE(25)+hosp+" "+addr+lf+lf;

+SPACE(10)+"СПИСОК НЕ ПРОШЕДШИХ ОБСЛЕДОВАНИЕ по н/п";

+cit_name[alt]+lf;

+SPACE(25)+"за период с "+DTOC(datBeg)+" по "+DTOC(datEnd)+lf+lf;

+"N "+"Ф. И. О."+SPACE(37)+"Дата рожд. "+"Последнее;

+SPACE(62)+"обслед."+lf+lf

SETCOLOR("W+/BG")

@ 10,10 CLEAR TO 15,70

@ 10,10 TO 15,70

@ 12, 29 SAY 'Идет составление списка '

@ 13, 33 SAY 'Подождите . . .'

PUBLIC adoc:={}

SELECT 1

SET FILTER TO !DELETED() .AND. CITY = cit_code[alt]

SET RELATION TO STR(ID,6) INTO fluoteka

GOTO TOP

i=0

DO WHILE !EOF()

nn=ID

k=0

SELECT 3

DO WHILE 3->ID = nn

IF !DELETED() .AND. FLUO_DATE >= datBeg;

.AND. FLUO_DATE <= datEnd

k=1

EXIT

ENDIF

SKIP

ENDDO

IF k = 0

i=i+1

SELECT 2

SEEK STR(nn,6)

k=SUBSTR(TRIM(2->L_NAME)+" "+TRIM(+2->F_NAME)+" ";

+TRIM(2->S_NAME), 1, 43)

AADD(adoc, k+SPACE(43-LEN(k))+" ";

+DTOC(2->BR_DATE)+" "+DTOC(2->LAST_DATE))

IF i >= 4000 // иначе переполнение массива – надо задать период МЕНЬШЕ!!!

EXIT

ENDIF

ENDIF

SELECT 1

SKIP

ENDDO

ASORT(adoc)

ns=0

kk=0

FOR j=1 TO i

str=str+ALLTRIM(STR(j))+"."+SPACE(6-LEN(ALLTRIM(STR(i))));

+adoc[j]+lf

IF kk < 299

kk=kk+1

ns=0

ELSE

kk=0

ns=1

DO LIST_OUT

SETCOLOR("W+/BG")

@ 10,10 CLEAR TO 15,70

@ 10,10 TO 15,70

@ 12, 29 SAY 'Идет составление списка'

@ 13, 33 SAY 'Подождите . . .'

str=""

ENDIF

NEXT

IF ns = 0

DO LIST_OUT

ENDIF

ENDDO

SELECT 3

SET FILTER TO

SELECT 1

SET FILTER TO

SET RELATION TO

SETCOLOR(s_c)

RESTSCREEN(0,0,24,79,buf)

RETURN
PROCEDURE LIST_OUT

PRIVATE s_c

flag=0

// DO WHILE flag < 2

DO WHILE .T.

s_c=SETCOLOR("W/BG+")

@ 24,0 CLEAR TO 24,79

@ 24, 1 SAY '"Esc" - продолжение; F5 - печать'

SETCOLOR("W/B+")

@ 0,0 CLEAR TO 23,79

@ 0,0 TO 23,79

CLEAR TYPEAHEAD

str=MEMOEDIT(str,1,1,22,78,.F.,"BRO")

blank=str+lf+lf

DO CASE

CASE flag = -4

DO PRINTER

flag=1

CASE flag = 2 .AND. LASTKEY() = 27

EXIT

ENDCASE

ENDDO

SETCOLOR(s_c)

RETURN
PROCEDURE QULIT