Смекни!
smekni.com

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

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->MINS_END)

ad=KARTA->DATE_END-KARTA->DATE_B+IF(ad=1,1,IF(ad>=0,0,-1))

pole=FIELD(42+IF(ad<=14,2,IF(ad>14.AND.ad<=21,3,4)))

ELSE

pole=FIELD(44+KARTA->OLD)

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

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

codif1("FULL",@f)

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_END<=_DATE_TILL.AND.;

KARTA->END1=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_END<=_DATE_TILL.AND.;

DIA66->SHIFR>"0000".AND.DIA66->SHIFR<="1399".AND.DIA66->KOD1="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->OLD<7

REPLACE COUNT2 WITH COUNT2+1 && КОЛИЧЕСТВО ВЫБЫВШИХ ДО 1

ENDIF

ELSEIF KARTA->END1=3

REPLACE A2 WITH A2+1 && ОБЩЕЕ КОЛИЧЕСТВО УМЕРШИХ

REPLACE A3 WITH A3+KARTA->ALL_DAY && ПРОВЕДЕНО ИМИ ДНЕЙ

IF KARTA->OLD<7

REPLACE A4 WITH A4+1 && КОЛИЧЕСТВО УМЕРШИХ ДО 1

ENDIF

ENDIF

SELECT DIA66

ENDIF

SKIP 1

show_din(count) && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ

ENDDO

SET RELATION TO

numb_STR() && НУМЕРАЦИЯ СТРОК

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

CASE _OTCH=14

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

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_END<=_DATE_TILL.AND.;

DIA66->SHIFR>"0000".AND.DIA66->SHIFR<="1399".AND.DIA66->KOD1="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_END<=_DATE_TILL

IF KARTA->RAION>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 && НАПРАВЛЯЮЩЕЕ УЧРЕЖДЕНИЕ

pole=FIELD(23+KARTA->DEPARTMENT)

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 _12,;

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 " 100",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 _12,;

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>"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 _12,;

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_END<=_DATE_TILL

SELECT BUFF8

IF _OTCH=16

IF KARTA->END1=2

REPLACE A1 WITH A1+1 && ВСЕГО

IF KARTA->OLD<3 && НОВОРОЖДЕННЫЕ

REPLACE A2 WITH A2+1

ENDIF

ENDIF

IF DIA66->SHIFR="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->MINS_END)<1)

IF (KARTA->DATE_END-KARTA->DATE_B+;

piece(KARTA->HOUR_B,KARTA->MINS_B,KARTA->HOUR_END,KARTA->MINS_END)<=1)

&& В ВОЗРАСТЕ ДО СУТОК

REPLACE A2 WITH A2+1

ENDIF

IF KARTA->OLD<7 && В ВОЗРАСТЕ ДО ГОДА

REPLACE A3 WITH A3+1

SELECT DIA66

state() && Поиск паталого-анатомического диагноза (если он есть)

DO WHILE DIA66->NUM_IB=KARTA->NUM_IB

IF DIA66->KOD1="1".AND.;

(DIA66->SHIFR>="4800".AND.DIA66->SHIFR<="4869")

SELECT BUFF8

REPLACE A4 WITH A4+1 && В ТОМ ЧИСЛЕ УМЕРЛО ОТ ПНЕВМОНИИ

EXIT

ENDIF

SKIP 1

ENDDO

ENDIF

ENDIF

ELSEIF _OTCH=18.AND.(KARTA->SHIFR="410 ".OR.KARTA->SHIFR="412 ")

IF KARTA->TIME<3

REPLACE A1 WITH A1+1 && ВСЕГО ПОСТУПИЛО БОЛЬНЫХ ИНФАРКТОМ

ENDIF

IF KARTA->END1=3.AND.(KARTA->DATE_END-KARTA->DATE_IN+;

piece(KARTA->HOUR_IN,KARTA->MINS_IN,KARTA->HOUR_END,KARTA->MINS_END)<1)

REPLACE A2 WITH A2+1 && УМЕРЛО В ПЕРВЫЕ 24 ЧАСА

ENDIF

ELSEIF _OTCH=19.AND.(KARTA->SHIFR>="6300".AND.KARTA->SHIFR<="6769")

IF KARTA->END1=3

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->SHIFR<="6769")

SELECT BUFF8

REPLACE A2 WITH A2+1 && УМЕРЛО ОТ ОСЛОЖНЯЮЩИХ ЗАБОЛЕВАНИЙ

EXIT

ENDIF

SKIP 1

ENDDO

ENDIF

ENDIF

SELECT KARTA

ENDIF

SKIP 1

show_din(count) && ПРОЦЕДУРА ПРЕДСТАВЛЕНИЯ ОБРАБОТКИ ЗАПИСЕЙ

ENDDO

SET RELATION TO

numb_STR() && НУМЕРАЦИЯ СТРОК

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

ENDCASE

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

SELECT BUFF8

IF _OTCH=6

DELETE FOR EMPTY(COUNT2)=.T.

PACK

ENDIF

@ 13,25 SAY " СОЗДАЕТСЯ ОТЧЕТ : "+OT2+" "

REPORT FORM &OT1 FOR IF(_OTCH=1.OR._OTCH=2.OR._OTCH=5,;

!EMPTY(NUMBER),.T.) TO FILE &OT2 PLAIN

IF _OTCH=9.OR._OTCH=10.OR._OTCH=11.OR._OTCH=12

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

ELSE

USE

corr_ttl(OT2,dep_name,DTOC(_DATE_FROM),DTOC(_DATE_TILL))

ENDIF

IF _OTCH=4.OR._OTCH=9.AND.dep#14.OR.;

_OTCH=10.OR._OTCH=11.AND.f=2.OR._OTCH=12.OR._OTCH=15

link2(OT2,OT2D1)

ENDIF

ELSE

SELECT BUFF8

USE

LOOP

ENDIF

ENDIF

SET CURSOR ON

fileview(OT2,3,2,21,77,"N/BG",350)

do_PRN()

RESTORE SCREEN FROM scr1

SET CURSOR OFF

ELSE

SELECT BUFF8

USE

ENDIF

ENDDO

RELEASE coun,c1,v1,v2,txt,seek,numb1,_COUNTALL,rec

SELECT (sel)

RETURN 0

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

* Функция нумерации строк в отчетном документе *

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

FUNCTION numb_STR

SELECT BUFF8

GO TOP

PRIVATE numb1

numb1=0

DO WHILE !EOF()

numb1=numb1+1

REPLACE NUMBER WITH STR(numb1,5)

SKIP 1

ENDDO

RETURN 0

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

* Функция разбиения болезней на классы *