Разработка автоматизированной системы учета выбывших из стационара
IF period()=0 && Ввод пользователем периода отчета
SET CURSOR OFF
IF _p=1
********************* МЕСЯЧНЫЕ ОТЧЕТЫ **********************
_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 && из
Москвы/Моск.обл./Иногородн./Село
pole=FIELD(14+KARTA->NUM_COME)
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-
>MINS_END)
ad=KARTA->DATE_END-KARTA->DATE_B+IF(ad=1,1,IF(ad>=0,0,-1))
pole=FIELD(42+IF(ad14.AND.adOLD)
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
ELSEIF _p=2
********************* КВАРТАЛЬНЫЕ ОТЧЕТЫ **********************
OT1="OTCH"+ALLTRIM(STR(_OTCH))+".FRM"
OT2="OTCH"+ALLTRIM(STR(_OTCH))+".TXT"
IF f_FRM()
DO CASE
*-------------------------------------------------
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-
>MINS_END)DATE_END-KARTA->DATE_IN+;
piece(KARTA->HOUR_IN,KARTA->MINS_IN,KARTA->HOUR_END,KARTA-
>MINS_END)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 && ПОЛ УМЕРШИХ
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-
>MINS_END)
pole=FIELD(9+(KARTA->DATE_END-KARTA->DATE_B+;
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-
>MINS_END)
d=IF(tDEPARTMENT.AND.;
KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDEND1=3.AND.DIA66->KOD1="1"
count=state() && Поиск паталого-анатомического диагноза (если он
есть)
_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-
>MINS_END)
ad=KARTA->DATE_END-KARTA->DATE_B+IF(ad=1,1,IF(ad>=0,0,-1))
pole=FIELD(42+IF(ad14.AND.adOLD)
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_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
*------------------------------------------------
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
|