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
*********************************************************************
* Функция разбиения болезней на классы *