Разработка автоматизированной системы учета выбывших из стационара
_SHIFR_ILL="0000" &&SHIFR_ILL
ELSE
PRIVATE txts,string8
txts=SPACE(70)
STORE "" TO string8
DO WHILE NUM_IB=_NUM_IB
_SHIFR_ILL=SHIFR
catalog(@_SHIFR_ILL,@txts)
txts=TRIM(txts)
context(@string8,"",txts,length,.F.)
context(@string8," Дата проведения :
",DTOC(DATA)+".",length,.F.)
context(@string8," Название операции : ",ALLTRIM(COMM),length,.F.)
vars[26]=string8
SKIP 1
ENDDO
RELEASE txts,string8
SELECT BUFF2
COMMIT
APPEND FROM OP66 FOR NUM_IB=_NUM_IB
ENDIF
v=replicate(chr(178),30)
@ 13,25 SAY v
******************* ФОРМИРОВАНИЕ ТЕКСТА *************************
string="" && Начальный текст
SELECT karta
SEEK _NUM_IB
rez=FOUND()
New_Str=.F.
FOR i=1 TO LEN(promp)
IF (i=23.AND._DIA_DIRECT#" ").OR.i=25.OR.i=26
New_Str=.T.
ENDIF
IF rez.AND.!EMPTY(vars[i])
row[i]=context(@string,promp[i],TRIM(vars[i])+".",length,New_Str)
ELSE
row[i]=context(@string,promp[i],vars[i],length,New_Str)
ENDIF
New_Str=.F.
IF i=20 && Промпт "ИСХОД"
IF _END1=2 && переведен
context(@string,"Причина:",extra1(_END2,"RIZ2")+".",length,.F.)
context(@string,"Куда:",extra1(_END3,"HOSP")+".",length,.F.)
ELSEIF _END1=3 && умер
context(@string,"Причина:",extra1(_END2,"RIZ3")+".",length,.F.)
ENDIF
ELSEIF i=22.AND._END1=3
context(@string,"Возраст на момент смерти :",;
extra1(_OLD_D,"OLDS")+".",length,.F.)
ELSEIF i=26
context(@string,"Обследование на реакцию ВАССЕРМАНА
:","",length,.F.)
ENDIF
NEXT
SET CURSOR ON
SELECT (sel)
RETURN
*********************************************************************
* Функция инициализации диагнозов *
*********************************************************************
FUNCTION initial1
PARAMETERS DBN
PRIVATE sl,rez1
SET CURSOR OFF
sl=SELECT()
SELECT &DBN
SET SOFTSEEK ON
SEEK _NUM_IB
SET SOFTSEEK OFF
rez1=FOUND()
IF !rez1
vars1[1]="" && Основной диагноз
vars1[2]="" && Осложнения
vars1[3]="" && Сопутствующие заболевания
IF _END1=3
vars1[4]="" && Основной диагноз
vars1[5]="" && Осложнения
vars1[6]="" && Сопутствующие заболевания
ENDIF
_SHIFR=SPACE(4) && SHIFR
_KOD1=0 && KOD1
_KOD2=0 && KOD2
ELSE
PRIVATE txts,string2,string3,string4,string5,string6,string7
txts=SPACE(100)
STORE "" TO string2,string3,string4,string5,string6,string7
DO WHILE NUM_IB=_NUM_IB
_KOD1=KOD1
_KOD2=KOD2
_SHIFR=SHIFR
IF _SHIFR="0000"
txts="Здоров"
ELSE
IF _KOD1="1".OR._KOD1="2".AND._KOD2#"2"
mkb(1,1,@_SHIFR,@txts)
ENDIF
ENDIF
txts=SUBSTR(_SHIFR,1,3)+"."+SUBSTR(_SHIFR,4,1)+" "+""
IF _KOD2#"2"
IF _KOD1="1"
context(@string2,"",txts,length,.F.)
context(@string2,"",ALLTRIM(COMM1),length,.F.)
vars1[1]=string2
ELSEIF _KOD1="2"
context(@string3,"",txts,length,.F.)
vars1[2]=string3
ELSEIF _KOD1="3"
context(@string4,"",ALLTRIM(COMM1),length,.F.)
vars1[3]=string4
ENDIF
ELSEIF _KOD2="2".AND._END1=3
IF _KOD1="1"
context(@string5,"",txts,length,.F.)
context(@string5,"",ALLTRIM(COMM1),length,.F.)
vars1[4]=string5
ELSEIF _KOD1="2"
context(@string6,"",ALLTRIM(COMM1),length,.F.)
vars1[5]=string6
ELSEIF _KOD1="3"
context(@string7,"",ALLTRIM(COMM1),length,.F.)
vars1[6]=string7
ENDIF
ENDIF
SKIP 1
ENDDO
RELEASE txts,string2,string3,string4,string5,string6,string7
SELECT BUFF
APPEND FROM DIA66 FOR NUM_IB=_NUM_IB
ENDIF
PRIVATE string11,j
string11=""
New_Str=.T.
context(@string11,SPACE(10)+"Клинический диагноз"," ",length,.T.)
FOR j=1 TO s
IF rez1.AND.!EMPTY(vars1[j])
row1[j]=context(@string11,promp1[j],TRIM(vars1[j])+".",length,New_Str)
ELSE
row1[j]=context(@string11,promp1[j],vars1[j],length,New_Str)
ENDIF
IF j=3.AND._END1=3
context(@string11," "," ",length,.T.)
context(@string11,SPACE(10)+"Паталого-анатомический диагноз","
",length,.T.)
ENDIF
NEXT
SET CURSOR ON
SELECT (sl)
RETURN (string11)
*********************************************************************
* Функция ввода даты *
*********************************************************************
FUNCTION d_input
PARAMETERS dat
PRIVATE screen
SAVE SCREEN TO screen
SET CURSOR ON
@ 10,25 CLEAR TO 15,55
@ 10,25 TO 15,55
saycent(10,30,50,"ВВЕДИТЕ В ФОРМАТЕ")
@ 12,36 SAY "дд.мм.гг"
@ 14,36 GET dat PICTURE "@D"
READ
SET CURSOR OFF
RESTORE SCREEN FROM screen
RETURN dat
*********************************************************************
* Функция ввода массы пациента *
*********************************************************************
FUNCTION m_input
PRIVATE screen
SAVE SCREEN TO screen
SET CURSOR ON
@ 10,25 CLEAR TO 15,55
@ 10,25 TO 15,55
saycent(10,30,50,"ВВЕДИТЕ В ФОРМАТЕ")
@ 12,38 SAY "кг/гр."
@ 14,38 GET _MASSA PICTURE "@P 99/999"
READ
SET CURSOR OFF
RESTORE SCREEN FROM screen
RETURN _MASSA
*********************************************************************
* Функция проверки времени *
*********************************************************************
FUNCTION check_T
PARAMETERS timeS
PRIVATE L,hour,mins
L=.F.
hour=SUBSTR(timeS,1,2)
mins=SUBSTR(timeS,4,5)
IF VAL(hour)=0.AND.EMPTY(_DATE_IN)=.F.
vars[choice]=DTOC(_DATE_END)+SPACE(5)+"Проведено дней в стационаре :"+;
STR(_ALL_DAY)
ENDIF
RETURN
*********************************************************************
* Процедура работы с диагнозами *
*********************************************************************
FUNCTION diagn
PRIVATE txtf,sel,w_do
PRIVATE F1,screen,color
PRIVATE str
PRIVATE s
PRIVATE q
PRIVATE string11
q=0
str=""
txtf=SPACE(100)
_SHIFR=SPACE(4)
sel=SELECT()
F1=0
string11=vars[25]
s=IF(_END1=3,6,3)
IF LEN(promp1)#s
@ 11,18 CLEAR TO 13,62
@ 11,18 TO 13,62
saycent(12,20,60,"ФОРМИРУЕТСЯ МЕНЮ ДИАГНОЗОВ")
DECLARE promp1[s],vars1[s],row1[s],col1[s] && массив промптеров дополн.
меню
promp1[1]="Основное заболевание :"
promp1[2]="Осложнения :"
promp1[3]="Сопутствующие заболевания :"
IF s=6
promp1[4]="Основное заболевание :"
promp1[5]="Осложнения :"
promp1[6]="Сопутствующие заболевания :"
ENDIF
AFILL(vars1,' ')
AFILL(col1,1)
**************************************************************
string11=initial1("BUFF") && Функция формирования выводимого текста
**************************************************************
ENDIF
wt1=3
wb1=IF(s=3,12,20)
wl1=2
wr1=77
length=wr1-wl1+1 && Длина строки текста, выводимого на экран
beg_line1=1
PRIVATE New_Str1 && Признак новой строки для Context
New_Str1=.F. && Без выделения промптеров
cur_promp1=1
DO WHILE !gotomain
q=hypertxt(wt1,wl1,wb1,wr1,string11,promp1,row1,col1,;
@beg_line1,@cur_promp1,color9," ДИАГНОЗ ПАЦИЕНТА ")
cur_promp1=cur_promp1%len(promp1)+1
DO CASE
CASE q=0
LOOP
CASE q=1.OR.q=2.OR.q=4
w_do=1
SAVE SCREEN TO screen
@ 11,25 CLEAR TO 16,55
@ 11,25 TO 16,55 DOUBLE
@ 11,30 PROMPT "ДОБАВИТЬ"
@ 11,44 PROMPT "УДАЛИТЬ"
IF EMPTY(vars1[q]).OR.BUFF->KOD1="2".AND.BUFF->KOD2="2"
vars1[q]=""
KEYBOARD CHR(13)
ENDIF
MENU TO w_do
str=vars1[q]
IF w_do=1
@ 13,30 SAY "ВВЕДИТЕ КОД" GET _SHIFR PICTURE "@R 999.9"
READ
IF LASTKEY()=27
vars1[q]=str
RESTORE SCREEN FROM screen
LOOP
ENDIF
F1=mkb(1,1,@_SHIFR,@txtf)
IF F1#-1
txtf=SUBSTR(_SHIFR,1,3)+"."+SUBSTR(_SHIFR,4,1)+" "+;
""+"."
SELECT BUFF
APPEND BLANK
REPLACE NUM_IB WITH _NUM_IB
REPLACE SHIFR WITH _SHIFR
REPLACE KOD2 WITH IF(q=4,"2","1")
REPLACE KOD1 WITH IF(q=1.OR.q=4,"1","2")
REPLACE COMM1 WITH MEMPRO(COMM1,10,5,18,75,;
" ВВЕДИТЕ НЕОБХОДИМЫЕ
ЗАМЕЧАНИЯ","ILLS",'ILLS')
context(@str,"",txtf+".",length,.F.)
context(@str,"Замечания :",ALLTRIM(COMM1),length,.T.)
ENDIF
ELSEIF w_do=2
PRIVATE i,j,k,EN,ET,NALL,MALL,NDEL
NALL=INT(LEN(str)/length)
MALL=NALL
FOR i=1 TO NALL
ET=ALLTRIM(SUBSTR(str,length*(i-1)+1,length))
EN=ASC(ET)
IF EN>57
MALL=MALL-1
ENDIF
NEXT
DECLARE _0B[MALL],_0S[MALL]
k=1
FOR j=1 TO NALL
ET=ALLTRIM(SUBSTR(str,length*(j-1)+1,length))
EN=ASC(ET)
IF EN60
MALL=MALL-1
ENDIF
NEXT
DECLARE _0B[MALL],_0S[MALL]
k=1
FOR j=1 TO NALL
ET=ALLTRIM(SUBSTR(stro,length*(j-1)+1,length))
EN=ASC(ET)
IF EN=60
_0B[k]=SUBSTR(stro,length*(j-1)+1,length)
_0S[k]=LEFT(ALLTRIM(_0B[k]),5)
k=k+1
ELSE
_0B[k-1]=_0B[k-1]+SUBSTR(stro,length*(j-1)+1,length)
ENDIF
NEXT
NDEL=ACHOICE(13,35,15,45,_0S)
IF LASTKEY()=27
RETURN
ENDIF
SELECT BUFF2
GO NDEL
DELETE
PACK
stro=""
FOR j=1 TO MALL
IF j#NDEL
stro=stro+_0B[j]
ENDIF
NEXT
RELEASE j,NALL,NDEL
RELEASE _0B,_0S
ENDIF
vars[choice]=stro
SELECT (sel)
RETURN
*********************************************************************
* ПРОЦЕДУРА ЗАПОЛНЕНИЯ БД karta.dbf *
*********************************************************************
PROCEDURE new_save
PRIVATE sel,v
sel=SELECT()
SET CURSOR OFF
SELECT karta
@ 11,18 CLEAR TO 13,62
@ 10,17 TO 14,63
saycent(12,20,60,"ПОДОЖДИТЕ НЕМНОГО - ИДЕТ ЗАПИСЬ В БД")
SET COLOR TO W/N
v=replicate(chr(32),30)
SET COLOR TO
@ 13,25 SAY v
SEEK _NUM_IB
IF FOUND()=.F.
APPEND BLANK
REPLACE NUM_IB WITH _NUM_IB
rec_num = RECNO()
ENDIF
REPLACE FAM WITH ALLTRIM(_FAM)
REPLACE F_S_NAME WITH ALLTRIM(_F_S_NAME)
REPLACE DATE_B WITH _DATE_B
REPLACE HOUR_B WITH _HOUR_B
REPLACE MINS_B WITH _MINS_B
REPLACE POL WITH _POL
REPLACE OLD WITH _OLD
REPLACE OLD_D WITH _OLD_D
REPLACE MASSA WITH _MASSA
REPLACE PLACE_LIV WITH _PLACE_LIV
REPLACE RAION WITH _RAION
REPLACE CITY_VILL WITH _CITY_VILL
REPLACE DIRECT1 WITH _DIRECT1
REPLACE DIRECT2 WITH _DIRECT2
REPLACE STATE WITH _STATE
REPLACE PLACE WITH _PLACE
*REPLACE WHY WITH _WHY
REPLACE DEPARTMENT WITH _DEPARTMENT
REPLACE KOIKA WITH _KOIKA
REPLACE PASS WITH _PASS
REPLACE TIME WITH _TIME
REPLACE DATE_IN WITH _DATE_IN
REPLACE HOUR_IN WITH _HOUR_IN
REPLACE MINS_IN WITH _MINS_IN
REPLACE END1 WITH _END1
REPLACE END2 WITH _END2
REPLACE END3 WITH _END3
REPLACE DATE_END WITH _DATE_END
REPLACE HOUR_END WITH _HOUR_END
REPLACE MINS_END WITH _MINS_END
REPLACE ALL_DAY WITH _ALL_DAY
REPLACE SHIFR WITH _DIA_DIRECT
REPLACE NUM_COME WITH _NUM_COME
REPLACE RW_DATE WITH _RW_DATE
REPLACE RW_REZ WITH _RW_REZ
REPLACE FAM_DOCTOR WITH _FAM_DOCTOR
*REINDEX
COMMIT
v=replicate(chr(177),10)
@ 13,25 SAY v
SELECT DIA66
DELETE FOR NUM_IB=_NUM_IB
PACK
*COMMIT
IF _END1=3
APPEND FROM BUFF FOR NUM_IB=_NUM_IB
ELSE
APPEND FROM BUFF FOR NUM_IB=_NUM_IB.AND.KOD2#"2"
ENDIF
*REINDEX
COMMIT
SELECT BUFF
ZAP
*COMMIT
*REINDEX
COMMIT
v=replicate(chr(177),20)
@ 13,25 SAY v
SELECT OP66
DELETE FOR NUM_IB=_NUM_IB
PACK
*COMMIT
APPEND FROM BUFF2 FOR NUM_IB=_NUM_IB
v=replicate(chr(177),30)
*REINDEX
COMMIT
@ 13,25 SAY v
SELECT BUFF2
ZAP
*COMMIT
*REINDEX
COMMIT
SELECT (sel)
RETURN
*********************************************************************
* Процедура удаления записей *
*********************************************************************
PROCEDURE del
PRIVATE flag_del && число записей,помеченных для удаления
PRIVATE nr,tr,del_str,temp,_01,_02,sel
@ 5,1,22,78 BOX dn_s+fon1
sel=SELECT()
flag_del=0
c_d=2
SELECT KARTA
*RECALL ALL
*GO TOP
nr=RECCOUNT()
DECLARE stor_ib[nr]
DO WHILE !gotomain
DO first
@ 7,5,16,74 BOX singl+fon2
SET COLOR TO "r+*/b"
saycent(5,0,79,if(DELETED(),"Запись помечена на удаление",SPACE(27)))
SET COLOR TO (color1)
@ 10,10 PROMPT IF(!BOF(),"Вернуться к предыдущей записи","******")
@ 12,10 PROMPT IF(DELETED(),"Отменить удаление текущей записи",;
"Пометить текущую запись на удаление")
@ 14,10 PROMPT IF(!EOF(),"Перейти к следующей записи","******")
@ 16,35 PROMPT "Выполнить" MESSAGE "Удалить помеченные записи и "+;
"вернуться в главное меню"
MENU TO c_d
DO CASE
CASE c_d=0
LOOP
CASE c_d=1
IF(!BOF())
SKIP -1
ENDIF
CASE c_d=2
IF(!EOF())
IF !DELETED()
DELETE
flag_del=flag_del+1
stor_ib[flag_del]=NUM_IB
ELSE
RECALL
tr=ASCAN(stor_ib,NUM_IB)
ADEL(stor_ib,tr)
flag_del=flag_del-1
ENDIF
ENDIF
CASE c_d=3
IF(!EOF())
SKIP
ENDIF
CASE c_d=4
EXIT
ENDCASE
ENDDO
IF flag_del>0
y=yesno(10,"Удалить помеченные "+alltrim(str(flag_del))+" записей
?")
IF y=1
temp="NUM_IB='"
del_str=temp+stor_ib[1]+"'"
temp=".OR."+temp
FOR tr=2 TO flag_del
del_str=del_str+temp+stor_ib[tr]+"'"
NEXT
DELETER(del_str,"DIA66") && Удаление из DIA66.DBF
DELETER(del_str,"OP66") && Удаление из OP66.DBF
***************************************
pack && Удаление из KARTA66.DBF
ELSE
RECALL ALL
GOTO TOP
ENDIF
ENDIF
SELECT (sel)
RETURN
*********************************************************************
* Процедура формирования отчетных документов *
*********************************************************************
FUNCTION rez
PRIVATE _OTCH,_OTCH_N,scr1
_OTCH=00
_OTCH_N=""
SAVE SCREEN TO scr1
PRIVATE sel
sel=SELECT()
PRIVATE _DATE_FROM
_DATE_FROM=_today
PRIVATE _DATE_TILL
_DATE_TILL=_today
PRIVATE dep,dep_name
PRIVATE numb1
PRIVATE txt
PRIVATE pole
PRIVATE count
count=1
PRIVATE _c
_c=1
PRIVATE _p
_p=1
PRIVATE OT1,OT2
PRIVATE coun,c1,v1,v2
PRIVATE f
f=1
DO WHILE .T.
SELECT 0
USE BUFF8.DBF INDEX BUFF8 ALIAS BUFF8
ZAP
numb1=0
txt=SPACE(100)
pole=1
STORE "" TO OT1,OT2
dep=0
dep_name=""
codif1("PERD",@_p)
IF _p=0
SELECT BUFF8
USE
EXIT
ELSEIF _p=2
_OTCH_N=codif1("OTCH",@_OTCH)
IF _OTCH=0
SELECT BUFF8
USE
EXIT
ENDIF
ENDIF
dep_name=codif1("DEPS",@dep)
IF _p=1.AND.dep=0
SELECT BUFF8
USE
LOOP
ENDIF
dep_name=IF(dep=0,"Весь стационар",dep_name)
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
*------------------------------------------------
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_ENDSHIFR>"0000".AND.DIA66->SHIFRKOD1="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->OLDEND1=3
REPLACE A2 WITH A2+1 && ОБЩЕЕ КОЛИЧЕСТВО УМЕРШИХ
REPLACE A3 WITH A3+KARTA->ALL_DAY && ПРОВЕДЕНО ИМИ ДНЕЙ
IF KARTA->OLDDEPARTMENT,.T.,.F.)).AND.;
KARTA->DATE_END>=_DATE_FROM.AND.KARTA->DATE_ENDSHIFR>"0000".AND.DIA66->SHIFRKOD1="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_ENDRAION>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 "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_ENDEND1=2
REPLACE A1 WITH A1+1 && ВСЕГО
IF KARTA->OLDSHIFR="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)DATE_END-KARTA->DATE_B+;
piece(KARTA->HOUR_B,KARTA->MINS_B,KARTA->HOUR_END,KARTA->MINS_END)OLDNUM_IB=KARTA->NUM_IB
IF DIA66->KOD1="1".AND.;
(DIA66->SHIFR>="4800".AND.DIA66->SHIFRSHIFR="410 ".OR.KARTA->SHIFR="412 ")
IF KARTA->TIMEEND1=3.AND.(KARTA->DATE_END-KARTA->DATE_IN+;
piece(KARTA->HOUR_IN,KARTA->MINS_IN,KARTA->HOUR_END,KARTA-
>MINS_END)SHIFR>="6300".AND.KARTA->SHIFREND1=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->SHIFRSHIFR_LEFT
SEEK seek
IF !EOF()
IF BUFF8->SHIFR SHIFR_RIGH
numb1=numb1+1
rec=RECNO()
IF _OTCH=1
_SHIFR=SHIFR
_COUNT1=COUNT1
_COUNT2=COUNT2
_A1=A1
_A2=A2
_A3=A3
_A4=A4
_A5=A5
_A6=A6
APPEND BLANK
REPLACE SHIFR WITH _SHIFR,COUNT1 WITH _COUNT1,COUNT2 WITH
_COUNT2,;
A1 WITH _A1,A2 WITH _A2,A3 WITH _A3,A4 WITH _A4,;
A5 WITH _A5,A6 WITH _A6
SUM COUNT1,COUNT2,A1,A2,A3,A4,A5,A6 TO ;
_COUNT1,_COUNT2,_A1,_A2,_A3,_A4,_A5,_A6 ;
WHILE BUFF8->SHIFR SHIFR_RIGH
GOTO rec
REPLACE COUNT1 WITH _COUNT1,COUNT2 WITH _COUNT2,A1 WITH _A1,;
A2 WITH _A2,A3 WITH _A3,A4 WITH _A4,A5 WITH _A5,A6 WITH
_A6
ENDIF
REPLACE BUFF8->NUMBER WITH STR(numb1,2)
REPLACE BUFF8->NAMECL WITH CLASS->NAME_CLASS
REPLACE BUFF8->SHIFRL WITH CLASS->SHIFR_LEFT
REPLACE BUFF8->SHIFRR WITH CLASS->SHIFR_RIGH
IF _OTCH=6
SUM COUNT1 TO _COUNTALL WHILE BUFF8->SHIFR SHIFR_RIGH
GO rec
REPLACE BUFF8->COUNT2 WITH _COUNTALL
ENDIF
ENDIF
SKIP 1 ALIAS CLASS
ELSE
EXIT
ENDIF
NEXT
SET SOFTSEEK OFF
SELECT CLASS
USE
SELECT (lsl)
RETURN 0
*********************************************************************
* Функция разбиения на группы ( для отчета N1,(N2 и N5) ) *
*********************************************************************
FUNCTION grad1
lsl=SELECT()
SELECT 0
IF _OTCH=1
USE GRUP1.DBF INDEX GRUP1 ALIAS GRUP
ELSE && для _OTCH=2 и _OTCH=5
USE GRUP2.DBF INDEX GRUP2 ALIAS GRUP
ENDIF
PRIVATE coun1,K,seek
coun1=RECCOUNT()
seek=" "
GO TOP
SELECT BUFF8
SET SOFTSEEK ON
FOR K=1 TO coun1
seek=GRUP->SHIFR_LEFT
SEEK seek
IF !EOF()
IF BUFF8->SHIFR SHIFR_RIGH
IF !EMPTY(BUFF8->NUMBER)
SKIP 1 ALIAS BUFF8
ENDIF
rec=RECNO()
SUM COUNT1,COUNT2,A1,A2,A3,A4,A5,A6 TO ;
_COUNT1,_COUNT2,_A1,_A2,_A3,_A4,_A5,_A6 ;
WHILE BUFF8->SHIFR SHIFR_RIGH
GOTO rec
REPLACE COUNT1 WITH _COUNT1,COUNT2 WITH _COUNT2,A1 WITH _A1,;
A2 WITH _A2,A3 WITH _A3,A4 WITH _A4,A5 WITH _A5,A6 WITH
_A6
REPLACE BUFF8->NUMBER WITH "-"
REPLACE BUFF8->NAMECL WITH GRUP->NAME_GRUP
REPLACE BUFF8->SHIFRL WITH GRUP->SHIFR_LEFT
REPLACE BUFF8->SHIFRR WITH GRUP->SHIFR_RIGH
ENDIF
SKIP 1 ALIAS GRUP
ELSE
EXIT
ENDIF
NEXT
SET SOFTSEEK OFF
SELECT GRUP
USE
SELECT (lsl)
RETURN 0
*********************************************************************
* Функция слияния двух текстовых файлов *
*********************************************************************
FUNCTION link2
PARAMETERS F1,F2
RUN ("COPY &F1+&F2 &F1>NUL")
DELETE FILE &F2
RETURN 0
*********************************************************************
* Представление на экране обработки записей БД ( начало ) *
*********************************************************************
PROCEDURE SHOW_ST
@ 4,7 CLEAR TO 15,72
saycent(5,5,75," *** "+_OTCH_N+" *** ")
saycent(6,5,75,"по "+IF(dep=0,"всему стационару ","отделению "+dep_name))
saycent(7,5,75,"за период с "+DTOC(_DATE_FROM)+" по "+DTOC(_DATE_TILL))
STORE 0 TO c1,v1,v2
coun=RECCOUNT()
v1=replicate(chr(178),60)
PRIVATE clr11
clr11=SETCOLOR()
SET COLOR TO (color1)
@ 8,8 CLEAR TO 15,71
@ 8,8 TO 15,71 DOUBLE
saycent(15,5,75," ESC - прервать обработку ")
@ 12,9 TO 14,70
@ 13,10 say v1
@ 9,10 TO 11,37
@ 10,11 SAY "ОБРАБОТАНО:"
@ 10,24 SAY 0
@ 9,41 TO 11,70
@ 10,42 SAY "ВСЕГО ЗАПИСЕЙ:"
@ 10,61 SAY coun
SET COLOR TO (clr11)
RETURN
*********************************************************************
* Представление на экране обработки записей БД ( динамика ) *
*********************************************************************
PROCEDURE SHOW_DIN
PARAMETERS counts
c1=c1+counts
v2=replicate(chr(219),int(60*(c1/coun)))
@ 13,10 SAY v2
@ 10,24 SAY c1
count=1
RETURN
*********************************************************************
* Суммирование колонок по классам операций для отчета N3 *
*********************************************************************
FUNCTION summ
PRIVATE k,s,s1,n,A,B,C
SELECT BUFF8
SET SOFTSEEK ON
GO TOP
FOR k=2 TO 16
s=IF(k=ALLTRIM(_FAM)
GO TOP
D2=EOF()
menu1=5
SET FILTER TO
ELSEIF menu1=3
SET CURSOR ON
@ 10,45 GET _DATE_IN PICTURE "@D"
READ
SET CURSOR OFF
SET FILTER TO DATE_IN=_DATE_IN
GO TOP
D2=EOF()
IF D2=.F.
menu1=1
@ 16,8 CLEAR TO 20,72
DO WHILE menu1#0.AND.!D2
_NUM_IB=NUM_IB
_FAM=FAM
_DATE_IN=DATE_IN
DO first
@ 11,14 TO 14,40 DOUBLE
@ 12,15 PROMPT "СЛЕДУЮЩАЯ КАРТА "
@ 13,15 PROMPT "ПРЕДЫДУЩАЯ КАРТА "
MENU TO menu1
IF menu1=1
SKIP
D2=EOF()
ELSEIF menu1=2
SKIP -1
D2=BOF()
ENDIF
ENDDO
menu1=1
ENDIF
SET FILTER TO
ELSEIF menu1=5
SKIP
D2=EOF()
ELSEIF menu1=6
SKIP -1
D2=BOF()
ENDIF
@ 16,8 CLEAR TO 20,72
IF D2=.F.
_NUM_IB=NUM_IB
_FAM=FAM
_DATE_IN=DATE_IN
DO first
ELSEIF D2=.T.
@ 17,25 TO 19,55 DOUBLE
@ 18,31 SAY "БОЛЬШЕ ЗАПИСЕЙ НЕТ!"
ENDIF
ENDDO
SET SOFTSEEK OFF
SELECT (sel1)
SET COLOR TO (clr1)
RETURN
*********************************************************************
* ПРОВЕРКА ПРАВИЛЬНОСТИ ЗАПОЛНЕНИЯ КАРТЫ *
*********************************************************************
FUNCTION all_r
PRIVATE _qui
_qui=.F.
IF EMPTY(_FAM)=.T.
message('e',"НЕ ВВЕДЕНА ФАМИЛИЯ ПАЦИЕНТА")
beg_line=1
cur_promp=2
ELSEIF EMPTY(_DATE_B)=.T.
message('e',"НЕ ВВЕДЕНА ДАТА РОЖДЕНИЯ")
beg_line=1
cur_promp=5
ELSEIF EMPTY(_OLD)=.T.
message('e',"НЕ ВВЕДЕН ВОЗРАСТ")
beg_line=1
cur_promp=6
ELSEIF EMPTY(_RAION)=.T.
message('e',"НЕ ВВЕДЕН РАЙОН ПРОЖИВАНИЯ")
beg_line=1
cur_promp=9
ELSEIF EMPTY(_CITY_VILL)=.T.
message('e',"НЕ ВВЕДЕН ПУНКТ ")
beg_line=1
cur_promp=10
ELSEIF EMPTY(_STATE)=.T.
message('e',"НЕ ВВЕДЕНО НАЗВАНИЕ ГОСУДАРСТВА ")
beg_line=1
cur_promp=12
ELSEIF EMPTY(_DEPARTMENT)=.T.
message('e',"НЕ ВВЕДЕНO НАЗВАНИЕ ОТДЕЛЕНИЕ")
beg_line=1
cur_promp=13
ELSEIF EMPTY(_KOIKA)=.T.
message('e',"НЕ ВВЕДЕН ПРОФИЛЬ КОЙКИ")
beg_line=1
cur_promp=14
ELSEIF EMPTY(_DATE_IN)=.T.
message('e',"НЕ ВВЕДЕНА ДАТА ПОСТУПЛЕНИЯ")
beg_line=1
cur_promp=17
ELSEIF EMPTY(_DATE_END)=.T.
message('e',"НЕ ВВЕДЕНА ДАТА ВЫПИСКИ")
beg_line=20
cur_promp=20
ELSEIF _ALL_DAY")
beg_line=1
cur_promp=19
ELSEIF EMPTY(_NUM_COME)=.T.
message('e',"НЕ ВВЕДЕНО КОЛИЧЕСТВО ГОСПИТАЛИЗАЦИЙ")
beg_line=20
cur_promp=22
* ELSEIF EMPTY(_DIA_DIRECT)=.T.
* message('e',"НЕ ВВЕДЕН НАПРАВЛЯЮЩИЙ ДИАГНОЗ")
* beg_line=20
* cur_promp=21
ELSEIF LEN(vars1[1])=0
message('e',"НЕ ВВЕДЕН ОСНОВНОЙ ДИАГНОЗ")
beg_line=20
cur_promp=23
ELSEIF AT("000.0",vars1[1])#0.AND.LEN(vars[1])>80
message('e',"ОШИБОЧНЫЙ ДИАГНОЗ")
beg_line=20
cur_promp=25
ELSEIF AT("000.0",vars1[1])#0.AND.LEN(vars1[2])#0
message('e',"ОШИБОЧНЫЙ ДИАГНОЗ")
beg_line=20
cur_promp=25
ELSE
_qui=.T.
ENDIF
RETURN (_qui)
*********************************************************************
* Представление на экране основной информации из 66 формы *
*********************************************************************
PROCEDURE first
IF !BOF().AND.!EOF()
@ 16,8 CLEAR TO 20,72
@ 17,15 SAY "НОМЕР И/Б :"+NUM_IB
@ 18,15 SAY "ФАМИЛИЯ БОЛЬНОГО :"+ALLTRIM(FAM)
@ 19,15 SAY "ДАТА ПОСТУПЛЕНИЯ :"
@ 19,34 SAY DATE_IN
ENDIF
RETURN
*********************************************************************
* Каталог операций *
*********************************************************************
FUNCTION catalog
PARAMETERS s,t
PRIVATE sel3,screen3,N3
sel3=SELECT()
SAVE SCREEN TO screen3
select 0
use cato.dbf index cato alias cato
SET SOFTSEEK ON
SEEK s
SET SOFTSEEK OFF
IF FOUND()
t=NAME_ILL
ELSE
private NUILL,K
go top
nuill=RECCOUNT()
declare OPERATION[NUILL]
for K=1 to NUILL
operation[k]=NAME_ILL
skip 1
next
release NUILL,K
@ 4,1 CLEAR TO 21,78
@ 4,1 TO 21,78
saycent(4,1,78," КАТАЛОГ ОПЕРАЦИЙ ")
N3=ACHOICE(5,2,20,77,operation,.T.,"",NUMBER-1)
IF LASTKEY()=27
RESTORE SCREEN FROM screen3
use
SELECT (sel3)
RETURN (-1)
ENDIF
GO N3
s=SHIFR
t=NAME_ILL
ENDIF
RESTORE SCREEN FROM screen3
use
SELECT (sel3)
RETURN (0)
*********************************************************************
* Процедура настройки каталогов *
*********************************************************************
PROCEDURE recon
PRIVATE N4,N5,cod_name
STORE 0 TO N4,N5
DO WHILE gotomain=.F.
cod_name=SPACE(4)
codif1("CORR",@N4)
IF LASTKEY()=27
SET CURSOR OFF
RETURN
ELSEIF N4=1
cod_name="RIGS"
ELSEIF N4=2
cod_name="DIRS"
ELSEIF N4=3
cod_name="STTE"
ELSEIF N4=4
cod_name="HOSP"
ELSEIF N4=5
cod_name="BIRS"
ELSEIF N4=6
cod_name="RIZS"
ELSEIF N4=7
cod_name="DEPS"
ELSEIF N4=8
cod_name="KOIK"
ELSEIF N4=9
cod_name="RIZ1"
ELSEIF N4=10
cod_name="RIZ2"
ELSEIF N4=11
cod_name="RIZ3"
ELSEIF N4=12
cod_name="OLDS"
ELSEIF N4=13
cod_name="PLCE"
ENDIF
codifM("CODIF",cod_name,@N5)
ENDDO
RELEASE N4,N5,cod_name
RETURN
*********************************************************************
* Продедура работы с каталогами *
*********************************************************************
FUNCTION codifM
PARAMETERS codfile,code_name,code_var
PRIVATE screen,sel,ret,i,k,svtx,maxlen,color,count,first,x1,x2,y1,y2
PRIVATE prom,prom1
IF !t_qwerty
RETURN 0
ENDIF
SAVE SCREEN TO screen
SET CURSOR OFF
color=SETCOLOR()
sel=SELECT()
SET COLOR TO (color3)
SET EXACT OFF
SELECT &CODFILE
CLEAR TYPEAHEAD
prom= "ESC- отказ,ENTER-переименовать"
prom1="INS-добавить,DEL-удалить"
first=1
DO WHILE .T.
SEEK (code_name)
IF !FOUND()
RETURN ""
ENDIF
svtx=ALLTRIM(TEXT)
maxlen=MAX(LEN(svtx),MAX(LEN(prom),LEN(prom1)))
COUNT WHILE SUBSTR(KEY,1,4)=SUBSTR(code_name+' ',1,4) TO COUNT
count=count-1 && не учитываем заголовок
DECLARE A[count],B[count]
* A[]-массив для текстов шаблонов
* B[]-массив для номеров шаблонов
IF count=0
DECLARE A[1]
a[1]=" Кодификатор пуст,воспользуйтесь клавишей INS"
maxlen=MAX(maxlen,40)
ENDIF
SEEK(code_name)
FOR k=1 TO COUNT
SKIP
A[K]=ALLTRIM(TEXT)
B[K]=SUBSTR(KEY,5)
maxlen=MAX(maxlen,LEN(A[K]))
NEXT
y1=12-ROUND(MIN(count,13)/2 +0.49,0)
x1=37-ROUND(MIN(maxlen,72)/2 +0.49,0)
* рисование рамки и заголовка *
SET COLOR TO (color3)
y2=MIN(y1+count+2,20)
x2=MIN(x1+maxlen+3,77)
RESTORE SCREEN FROM SCREEN
@ y1,x1,y2,x2 BOX singl+fon2
@ y2,x1,y2+3,x2 BOX "+-+¦--L¦"+fon2
saycent(y2+1,x1,x2,prom)
saycent(y2+2,x1,x2,prom1)
saycent(y1,x1,x2,svtx)
I=ACHOICE(y1+1,x1+1,y2-1,x2-1,a,.t.,"u_key1",first)
IF i=0
ret=""
CLEAR TYPEAHEAD
EXIT
ELSE
DO CASE
CASE LASTKEY()=13.AND.COUNT>0 &&
SEEK(code_name)
SKIP I
PRIVATE scr,col1,pict
pict=SPACE(LEN(TEXT))
scr=SAVESCREEN(10,9,12,70)
col1=SETCOLOR()
SET COLOR TO (color7)
@10,9,12,70 box singl+fon2
saycent(10,9,70,"ВВОДИТЕ НОВОЕ ИМЯ")
SET CURSOR ON
@ 11,10 GET pict
READ
PICT=STRTRAN(pict,'Н','H')
SET CURSOR OFF
SETCOLOR(col1)
RESTSCREEN(10,9,12,70,scr)
IF LASTKEY()#27.AND.!EMPTY(PICT) && ESC
REPLACE TEXT WITH pict
ENDIF
RELEASE scr,col1,pict
CASE LASTKEY()=22 &&
IF count>0
ins_pic(code_name,b[count])
ELSE
ins_pic(code_name,' ')
ENDIF
first=count+1
CASE LASTKEY()=7 &&
IF count>0
del_pic(code_name,i)
ENDIF
first=i-1
ENDCASE
ENDIF
ENDDO
*CLEAR TYPEAHEAD
REINDEX
RESTORE SCREEN FROM screen
SET COLOR TO (color)
SELECT(sel)
SET CURSOR OFF
RETURN ret
*********************************************************************
* Проверка наличия в текущей директории файла отчета *
*********************************************************************
FUNCTION f_FRM
PRIVATE log,screen
log=.T.
IF !FILE(OT1)
log=.F.
SAVE SCREEN TO screen
@ 8,8 CLEAR TO 15,71
@ 8,8 TO 15,71 DOUBLE
saycent(8,20,60,"ВНИМАНИЕ")
@ 11,15 SAY "ДЛЯ СОЗДАНИЯ ОТЧЕТА НЕОБХОДИМ ФАЙЛ :"+OT1
@ 12,15 SAY "УКАЗАННОГО ФАЙЛА НЕТ В РАБОЧЕЙ ДИРЕКТОРИИ"
INKEY(10)
RESTORE SCREEN FROM screen
ENDIF
RETURN (log)
*********************************************************************
* Функция ввода отчетного периода *
*********************************************************************
FUNCTION period
PRIVATE screen,M1,R1
R1=0
M1=1
SAVE SCREEN TO screen
SET CURSOR ON
@ 8,8 CLEAR TO 15,71
@ 8,8 TO 15,71 DOUBLE
DO WHILE .T.
saycent(8,20,60,"ВВЕДИТЕ ОТЧЕТНЫЙ ПЕРИОД")
@ 9,17 TO 11,34
@ 10,20 SAY "c " GET _DATE_FROM PICTURE "@D"
@ 9,47 TO 11,64
@ 10,50 SAY "по " GET _DATE_TILL PICTURE "@D"
@ 12,17 TO 14,64
@ 13,21 PROMPT " Ok "
@ 13,38 PROMPT " ПОВТОР "
@ 13,53 PROMPT " ОТКАЗ "
READ
MENU TO M1
IF M1=1
EXIT
ELSEIF M1=2
M1=1
ELSEIF M1=0.OR.M1=3
R1=1
EXIT
ENDIF
ENDDO
SET CURSOR OFF
RESTORE SCREEN FROM screen
RETURN (R1)
*********************************************************************
* Вывод отчетного документа на печать *
*********************************************************************
FUNCTION do_PRN
PRIVATE YN
YN=1
codif1("PRNT",@YN)
IF YN=2
SET CURSOR OFF
TYPE &OT2 TO PRINT
ENDIF
RETURN 0
*********************************************************************
* Функция определения возраста пациента *
*********************************************************************
FUNCTION y_m_day
PARAMETERS day_bir,hour_bir,mins_bir,day_bas,hour_bas,mins_bas
PRIVATE years,mons,days,screen,txt
SAVE SCREEN TO screen
txt=""
years="00"
@ 1,20 CLEAR TO 3,60
@ 1,20 TO 3,60
@ 2,22 SAY IF(choice=8," Возраст пациента :","Возраст на момент смерти:")
years=oldM(day_bir,day_bas)
IF VAL(years)>0
txt=years
IF VAL(years)=1
txt=txt+" год"
ELSEIF VAL(years)0
txt=ALLTRIM(STR(mons))
IF mons=1
txt=txt+" месяц"
ELSEIF monsmonth(b_dat)
old1=alltrim(str(year1))
else
if month(today)NUL")
DELETE FILE &_file
RENAME _0000F TO &_file
RETURN 0
********************************************************************
Модуль: VIEWER.PRG
*************************************************************************
* Функция просмотра текстового файла в заданном окне - fileview.
*
* Для перемещения текста в окне используются
*
* только: *
* Параметры: *
* filename - имя файла, *
* wt,wl,wb,wr - окно просмотра, *
* color - цвет [необязательный параметр],
*
* linewide - длина строки(гориз. скроллинг) [необязательный параметр].
*
*************************************************************************
function fileview
parameters filename,wt,wl,wb,wr,color,linewide
private col_sv
col_sv=setcolor()
if pcount()cnt_pos
cnt_pos=cnt_pos+1
p="pos"+alltrim(str(cnt_pos))
private &p
&p=pos_str
endif
case f_mov=-1
fseek(fh,file_up,0)
file_down=file_down-blok
file_up=file_down-3*blok
&buf=freadstr(fh,blok)
str_vid=&buf
buf=if(buf="buf1","buf2","buf1")
str_vid=str_vid+&buf
count=count-1
p="pos"+alltrim(str(count))
pos_str=&p+wb-wt+1
pos_cur=wb-wt+1
p_vid= rat(last,str_vid)
str_vid=left(str_vid,p_vid-1)
otherwise
endcase
enddo
fclose(fh)
set key 24
set key 18
set key 3
set key 29
set key 30
set key 31
setcolor(col_sv)
RETURN(0)
function mod
parameters mode,line,col
private key
key=lastkey()
do case
case key=13 .and. line=lines .and. file_down-1
f_mov=-1
keyboard chr(23)
return(0)
otherwise
lines=line
endcase
return(0)
procedure cr
keyboard chr(13)
return
procedure bl
keyboard chr(32)
return
-----------------------
[pic]
Страницы: 1, 2, 3, 4, 5
|