LICEUL _____ _______ ______ _______ ORASUL______________
PROMOTIA 200_
ATESTAT LA INFORMATICA
CU TEMA:
REALIZATOR: PROF. COORD.:
_______________
EVIDENTA PACIENTILOR
INTR-O CIRCA MEDICALA
-prezentare-
In ultimul deceniu, informatica din tara noastra a facut un spectaculos salt atat pe plan cantitativ, prin infiintarea de noi centre de calcul si atragerea de noi forte de munca in acest domeniu, cat si pe plan calitativ prin abordarea unor probleme din ce in ce mai subtile.
In etapa actuala de dezvoltare a informaticii se observa o crestere insemnata a importantei sistemelor de operare.
Bazele de date constituie un element des intalnit in viata noastra de toate zilele; un dictionar, o carete de telefoane, etc. sunt baze de date folosite din ce in ce mai des, de aceea este necesara optimizarea folosirii acestora cu ajutorul 22522l111w calculatorului.
O baza de date reprezinta un amsamblu de date integrat anume, structurat si dotat cu o descriere la aceste structuri. Descrierea poarta numele de dictionar de date sau meto-date si creaza o independenta intre datele propriuzise si programe.
Tema acestui atestat, "EVIDENTA PACIENTILOR INTR-O CIRCA MEDICALA", a fost inspirata de necesitatea optimizarii accesului rapid la anumite date despre pacientii si medicii unor clinici medicale, precum si adaugarea rapida de noi pacienti in baza.
Acest program vine in sprijinul medicilor de familie ce doresc o mai buna evidenta a activitatii lor medicale, in cadrul clinicilor. Programul preia de la tastatura numele, varsta, adresa, numele parintilor si boala de care sufera un pacient si le memoreaza intr-o baza de date.Pe baza acestor date programul poate afisa lista celor aflati in evidenta in mai multe moduri cum ar fi : lista alfabetica, dupa diagnostic sau dupa numarul de telefon.
Programul permite cautarea unui pacient in functie de nume, adresa, nume parinti, sau numarul de telefon. O facilitate deosebita acestui program este aceea ca, permite calcularea punctajului aferent unui medic existen
in baza. Punctajul unui medic se foloseste pentru a permite deducerea rapida venitului doctorului in functie de numarul de pacienti. In calcularea punctajului s-au evidentiat 3 categorii de pacienti, cu 3 punctaje diferite in functie de varsta acestora. Astfel:
a) 0-18 ani 10 puncte
b) 19-70 ani 5 puncte
c) peste 71 ani 7 puncte
Programul foloseste o baza de date numita CIRCA .DBF si apeleaza la un meniu orizontal cu diverse optiuni, ce permit la randul lor diverse operatii asupra evidentei pacientilor si verificarea rapida a punctajului medicilor. Campurile acestei baze de date sunt prezentate mai jos. (Aceasta baza de date contine inregistrari fictive.)
NUME C25 |
VARSTA N2 |
ADRESA M |
BOALA C25 |
MEDIC C25 |
TELEFON N6 |
NUME_ MAMA C25 |
NUME_ TATA C25 |
Programul cupride urmatoarele optiuni:
Opratii baza:> -Adaugare
-Modificare
-Afisare:> -Nume prenume
-Nr. tel.
-Boli
Cautare:> -Nume prenume
-Nume mama
-Nume tata
-Adresa
-Nr. tel.
Utilitare:> -Calcul punctaj
-Despre
Terminare:> -Foxpro
-Nc
Optiunea "OPERATII BAZA" apeleaza la 3 proceduri pentru a inlesni utilizatorului lucrul cu baza de date.
Prima procedura se numeste 'Adaugare' si cu ajutorul acesteia se pot adauga in baza noi pacienti, luarea acestora in evidenta facandu-se dupa nume, prenume, varsta, adresa, boala, medicul, telefonul si numele parintilor.
Cea de-a doua procedura se numeste 'Modificare' si cu ajutorul acesteia se pot face cu usurinta modificari in interiorul bazei de date.
A treia procedura se numeste 'Afisare' si prin intermediul acesteia se pot efectua cautari rapide ale persoanelor din baza in functie de nume, telefon sau boala acestora.
Optiunea "CAUTARE" permite cautarea rapida a unui pacient in functie de numele si prenumele persoanei, adresa, varsta, medicul, boala, numarul de telefon sau numele parintilor.
Optiunea "UTILITARE" permite utilizatorului sa afle cu usurinta punctajul unui medic din baza, apeland procedura 'Calcul punctaj'. Tot aici apeland 'Despre' utilizatorul, poate afla date despre continutul programului.
Optiunea "TERMINARE" permite iesirea rapida a utilizatorului direct in FOXPRO sau in Nc.
Programul este prezentat in continuare:
set talk off
set safety off
set default to c:\circa
set exact off
set cursor on
clear
DEFI WIND F FROM 0,0 TO 24,79 NONE
DEFI WIND F1 FROM 0,0 TO 6,79 NONE
ACTI WIND F1
@ 0,0,6,79 BOX REPLICATE(CHR(221),9)
TEXT
READ timeout 0.1
MOVE window f1 by 3,0
ENDFOR
MOVE window F1 TO 0,0
READ TIMEOUT 2.0
DEAC WIND F3
DEAC WIND F4
CLOSE ALL
CLEAR
DEAC WIND ALL
FOR I=1 TO 18
DEFINE WINDOW ECRAN FROM I,7 TO I+3,40
ACTIVATE WINDOW ECRAN
ENDFOR
FOR I=1 TO 30
DEFINE WINDOW ECRAN1 FROM 20,I TO 23,I+45
ACTIVATE WINDOW ECRAN1
ENDFOR
READ TIMEOUT 4.0
DEAC WIND ALL
CLOSE ALL
defi menu CIRCA
defi pad opt1 of CIRCA prompt "\<Operatii baza"
defi pad opt2 of CIRCA prompt "\<Cautare"
defi pad opt3 of CIRCA prompt "\<Utilitare"
defi pad opt4 of CIRCA prompt "\<Terminare"
defi popup BAZA
defi bar 1 of BAZA prompt "\<Adaugare"
defi bar 2 of BAZA prompt "\<Modificare"
defi bar 3 of BAZA prompt "\<Afisare"
defi popup CAUT
defi bar 1 of CAUT prompt "\<Nume prenume"
defi bar 4 of CAUT prompt "\<Adresa"
defi bar 5 of CAUT prompt "Numar \<Telefon"
defi popup afisare
defi bar 1 of afisare prompt "\<Nume prenume"
defi bar 2 of afisare prompt "Numar \<telefon"
defi bar 3 of afisare prompt "\<Boli"
defi popup util
defi bar 1 of util prompt "\<Calcul punctaj"
defi bar 2 of util prompt "\<Despre"
defi popup TER
defi bar 1 of TER prompt "\<Foxpro"
defi bar 2 of TER prompt "\<Nc"
on pad opt1 of CIRCA acti popup BAZA
on pad opt2 of CIRCA acti popup CAUT
on pad opt3 of CIRCA acti popup util
on pad opt4 of CIRCA acti popup TER
on sele bar 1 of BAZA do adaugare
on sele bar 2 of BAZA do modificare
on bar 3 of BAZA acti popup afisare
on sele bar 1 of util do punctaj
on sele bar 2 of util modi file despre.prg
on sele popup CAUT do cautare
on sele popup afisare do afisare
on sele popup TER do terminare
procedure adaugare
hide menu circa
hide popup all
clear
defi wind f from 5,15 to 16,60 title "Adaugare date"
acti wind f
wnume =" "
wvarsta =0
wadresa =" "
wmedic =" "
wtelefon =0
wmama =" "
wtata =" "
wboala =" "
@ 2,10 say "Nume =" get wnume
@ 3,10 say "Varsta =" get wvarsta
@ 4,10 say "Adresa =" get wadresa
@ 5,10 say "Boala =" get wboala
@ 6,10 say "Medic =" get wmedic
@ 7,10 say "Telefon =" get wtelefon
@ 8,10 say "Nume-mama=" get wmama
@ 9,10 say "Nume-tata=" get wtata
read
use circa
append blank
replace nr_tel with wtelefon
replace nume_mama with wmama
replace nume_tata with wtata
replace boli with wboala
deac wind f
clear wind
show menu circa
show popup baza
return
procedure modificare
hide menu circa
hide popup all
clear
defi wind f from 2,2 to 22,78 title "Modificare date"
acti wind f
use circa
brow nodelete noappend nomenu
use
deac wind f
clear wind
show menu circa
show popup baza
return
procedure terminare
hide menu circa
hide popup all
clear
do case
case bar()=1
@ 17,15 TO 23,65 DOUBLE
@ 18,27 SAY 'VA MULTUMESC '
@ 19,30 SAY 'PENTRU '
@ 20,36 SAY 'ATENTIA ACORDATA !'
@ 22,32 SAY 'LA REVEDERE !'
wait ''
clear
cancel
case bar()=2
@ 17,15 TO 23,65 DOUBLE
@ 18,27 SAY 'VA MULTUMESC '
@ 19,30 SAY 'PENTRU '
@ 20,36 SAY 'ATENTIA ACORDATA !'
@ 22,32 SAY 'LA REVEDERE !'
wait ''
clear
quit
endcase
deac menu circa
deac popup all
procedure afisare
hide menu circa
hide popup all
clear
use circa
do case
case bar()=1
defi wind f from 2,2 to 22,78 double title "Afisare alfabetica"
acti wind f
index on nume_p to nume
brow noedit nodelete in window f
deac wind f
case bar()=2
defi wind f from 2,2 to 22,78 title "Afisare dupa telefon" double
acti wind f
index on nr_tel to tel
brow field nume_p,nr_tel,vir,adresa,medic,boli,nume_mama,nume_tata noedit nodelete for nr_tel<>0 in wind f
deac wind f
case bar()=3
defi wind f from 2,2 to 22,78 title "Afisare dupa boli" double
acti wind f
index on boli to boli
nume_p,boli,nr_tel,vir,adresa,medic,nume_mama,nume_tata noedit nodelete in wind f
deac wind f
endcase
clear
use
show menu circa
show popup afisare
return
procedure cautare
hide menu circa
hide popup caut
clear
use circa
do case
case bar()=1
defi wind f from 2,2 to 22,78 title "Cautare nume"
acti wind f
wn=space(18)
@ 1,2 say "Introduceti numele " get wn pict "! ! !!!!"
read
wn=upper(alltrim(wn))
go top
locate for nume_p=wn
brow for nume_p=wn
else
@ 2,2 say "Acest nume nu exista in baza"
wait 'Apasa orice tasta!'
endif
use
deac wind f
case bar()=2
defi wind f from 2,2 to 22,78 title "Cautare nume mama"
acti wind f
wn=space(18)
@ 1,2 say "Introduceti numele " get wn pict "! ! !!!!"
read
wn=upper(alltrim(wn))
go top
locate for nume_mama=wn
if found()
brow for nume_mama=wn
else
@ 2,2 say "Acest nume nu exista in baza"
wait 'Apasa orice tasta!'
endif
use
deac wind f
case bar()=3
use circa
defi wind f from 5,15 to 20,60
acti wind f
use circa
wn=space(10)
@ 1,2 say "Introduceti numele " get wn pict "! !!!"
read
go top
locate for nume_tata=wn
if found()
brow for nume_tata=wn
else
wait window "Acest nume nu exista in baza"
endif
use
deac wind f
clear wind
case bar()=4
use circa
defi wind f from 5,15 to 20,60
acti wind f
use circa
wn=space(20)
@ 1,2 say "Introduceti adresa " get wn
read
go top
locate for adresa=upper(alltrim(wn))
if found()
brow for adresa=alltrim(wn)
else
wait window "Aceasta adresa nu exista in baza"
endif
use
deac wind f
clear wind
case bar()=5
use circa
defi wind f from 5,15 to 20,60
acti wind f
use circa
wn=0
@ 1,2 say "Introduceti numarul de telefon " get wn pict "999999"
read
go top
locate for nr_tel=wn
if found()
brow for nr_tel=wn
else
wait window "Acest numar de telefon nu exista in baza"
endif
use
deac wind f
clear wind
endcase
clear
show menu circa
show popup caut
return
** ** ******
procedure punctaj
use circa
define wind f from 5,5 to 15,75 double title "Calcul punctaj doctor"
acti wind f
@ 1,1 say "Doctor=" get wdoctor default space(25)
read
wdoctor=upper(alltrim(wdoctor))
locate for medic=wdoctor
if found()
count for (vir<=18)and(medic=wdoctor) to p18
count for (vir>=18)and(vir<=70)and(medic=wdoctor) to p33
count for (vir>70)and(medic=wdoctor) to p70
s1=10
s2=5
s3=7
punctaj =s1*p18+s2*p33+s3*p70
clear
@ 1,1 say "pacienti intre 0-18 ani "
@ 1,25 say p18
@ 2,1 say "pacienti intre 18-70 ani "
@ 2,25 say p33
@ 3,1 say "pacienti > 70 ani "
@ 3,25 say p70
@ 4,1 say "punctaj doctor ="
@ 4,25 say punctaj
wait window "Apasa orice tasta!"
else
wait windo "Acest medic nu exista in baza!"
endif
DEAC WIND F
Return
Comenzi si functii
FOXPRO
USE<NUME> -DESCHIDE O BAZA DE DATE CU NUMELE <NUME>;
USE -INCHIDE BAZA DE DATE CURENTA;
APPEND -ADAUGA INREGISTRARI IN BAZA DE DATE CURENTA;
REPLACE -INLOCUIESTE CAMPURI IN BAZA DE DATE;
SET COLOR OF SCHEME -SPECIFICA CULORILE DINTR-O SCHEMA DE . CULOARE;
SET SAFETY ON\OFF -GESTIONEAZA MECANISMUL DE PROTECTIE A . FISIERELOR;
SET TALK ON\OFF -ACTIVEAZA SAU DEZACTIVEAZA AFISAREA
INFORMATIILOR IN CURSUL PRELUCRARII;
SHOW MENU -AFISEAZA UN MENIU DEFINIT IN PREALABIL;
SHOW POPUP-AFISEAZA UN MENIU POPUP;
SKIP -MUTA INDICATORUL DE ARTICOL;
SORT TO -SORTEAZA O BAZA DE DATE;
DELETE -MARCHEAZA PENTRU STERGERE INREGISTRARI DIN BAZA DE DATE ACTIVA;
DEFINE MENU -CREAZA UN MENIU LINIE;
DEFINE POPUP-CREAZA UN MENIU POPUP;
BIBLIOGRAFIE
"FOXPRO" -MICROINFORMATICA
"COMENZI SI FUNCTII FOXPRO" -TEORA
"CULEGERE DE PROBLEME FOXPRO"
"BAZE DE DATE" -MICROINFORMATICA
CURSURI
CUPRINS:
PREZENTARE
PROGRAM
COMENZI SI FUNCTII FOXPRO
|