OK, sad je nesto bolje. Pazi, pokusavamo da ti pomognemo, a ne da drzimo lekcije tipa 'ne valja ti to sto radis' - s tim smo zavrsili.
Verujem da ces resiti problem citanja stringa sa uredjaja, to je cisto programiranje i tu si ti expert. Sto se tice baze koja ce te podatke da cuva, prvo pravilo je da se mora napraviti nezavisno od bilo kakvog programa koje ce postojati. Znaci, bazu pravimo tako da je nezavisna od bilo kojih programa koji ce joj pristupati. Znaci, zaboravimo programe na trenutak. Kad napravis bazu, onda ce programi vec naci nacina da unesu podatke, bilo citanjem sa uredjaja bilo kucanjem podataka preko neke forme.
Ovako sam razumeo proces, na osnovu tvog poslednjeg posta. Ti me ispravi, dodpuni sta treba. U navodnicima je tvoj tekst.
1) Laboratorija vrsi analize seruma, za pacijente.
2) Analize se vrse u uredjju koji se zove analizator.
3) Za svaku analizu koristi se odredjeni reagens, ili vise njih, sa definisanim kolicinama "analizatori sa njegovim parametrima (misli se na reagens koji se koristi prilikom procesa analiziranja seruma, kao i kolicina utrosnje reagensa), "
4) Ne moze svaki analizator da vrsi svaku analizu, otud ono "spisak analizatora koji mogu da analiziraju serum za tu analizu"
5) O reagensima zelimo da cuvamo podatke "cena, naziv dobavljaca, itd"
6) Analizatorima upravljaju ljudi koje zovemo Operateri.
7) Za svakog pacijenta kreira se nalog.
8 ) Nalog opisuje koje se analize imaju izvrsiti i na kom analizatoru (uredjaju)
9) U nalog se upisuju i podaci o pacijentu (koji?), datum i vreme prijema (pacijenta? uzorka?)
10) Za neke uredjaje napisan je program koji cita izmerene podatke u vidu stringa. Program je us stanju da dolazni string isparsira na delove koji ce se spakovati negde u bazu.
11) To sto dolazi sa stringa jesu rezultati analize, parametri.
12)Za svaku nalizu definisali smo sta su ulazi (koji reagensi, kolicine) i sta su izlazi.
13) Ako rezultati dolaze sa analizatora (uredjaja) za koji ne psotoji program za automatsko citanje, onda se rezultati unose rucno.
14) Datum upisivanja rezultata ce se registrovati automatski, nema potrebe da operator to kuca.
15) Moja pretpostavka: ne moze svaki operater da radi na svakom analizatoru
Analizom ovih 14 recenica, moze se napraviti skup tabela koje nam trebaju, barem za prvu iteraciju. Ja cu ti dati ono sto se zove logicki model. Model ce pokazati samo nazive entiteta (to ce biti tabele), njihovih atributa (bice to kolone, polja u tabelama) i osnovne veze medju njima. Ne ulazim u tipove podataka i da li treba autonumber ili ne, to ces da resis kad budes logicki model prevodio u fizicki. Pokazujem samo obavezna polja i Primerne Kljuceve (PK) i strane kljuceve (FOREIGN KEY) FK. Ovako nekako:
Analiza (OznakaAnalize = PK, ZvanicniNazivAnalize)
ReagensiAnalize (OznakaAnalize, OznakaReagensa, Kolicina) PK=(OznakaAnalize, OznakaReagensa), FK=OznakaAnalize REF. Analiza
ParametriKojiSeOdredjujuAnalizom (OznakaAnalize , OznakaParametra, Jedinicamere) PK (OznakaAnalize , OznakaParametra), FK=OznakaAnalize REF. Analiza
Raeagensi (Oznakareagensa = PK, ZvanicniNazivReagensa, JedinicaMere)
Analizatori (OznakaAnalizatora = PK, ZavnicniNazivAnaliztora, ImaIliNemaProgramZaAutomatskoCitanje)
SpisakAnalizatoraZaAnalizu (OznakaAnalize, OznakaAnalizatora) PK = (OznakaAnalize, OznakaAnalizatora)
Operater (OznakaOperatera = PK, Ime, prezime...)
OpearteriAnalizatora (OznakaOperatera, OznakaAnalizatora) PK = (OznakaOperatera, OznakaAnalizatora), FK1: OznakaOparatera REF Operateri, FK2: OznakaAnalizatora REF ANalizatori
PrimljeniPacijenti (OznakaPrijema = PK, Ime, Prezime, DatumPrijema) Napomena: ovo omogucava da se jedan pacijent pojavi vise puta
AnalizeKojeTrebaIzvrsitiZaPacijenta (OznakaPacijenta, OznakaAnlize, OznakaAnalizatora, Operator) PK = (OznakaPacijenta, OznakaAnlize), FK1=( OznakaAnalize, OznakaAnalizatora) REF. SpisakAnalizatoraZaAnalizu , FK2 = (OznakaPrijema) REF PrimljeniPacijenti, FK3 = (OZnakaOperatera,OznakaAnalizatora) REF OperateriAnalizatora
RezultatiIzvrsenihNalize (OznakaPrijema , OznakaAnalize , OznakaParametra, VrednostParametra, DatumUnosa, KoJeUneo)
PK = (OznakaPrijema , OznakaAnalize , OznakaParametra), FK1 = (OznakaPacijenta, OznakaAnlize) REF AnalizeKojeTrebaIzvrsitiZaPacijenta , FK2 = (OznakaAnalize , OznakaParametra) REF ParametriKojiSeOdredjujuAnlizom
To se sve moze prikazati pojednostavljenom slikom (samo PK i FK su prikazani):
Sad da se vratimo na pocetna pitanja:
1) Kako zanm da li je i kada odredjena anliza kompletirana? U tabelu RezultatiIzbvrsenihAnaliza upisuju se - rezultati. Ako neka analiza daje kao rezultat vise parametara, analiza je kompletitrana kada su svi rezultati (rezultati za svaki parametar) uneti u tabelu RezultatiIzvrsenihAnaliza.
2) Koji je datum kompletiranja odredjene analize? Pa to je datum kad je unesen poslednji parametar.
Odgovore na pitanja 1 i 2 ne treba cuvati u tabeli, oni se uvek mogu dobiti nekim kverijem. Mogao bi na primer u aplikaciji imati zvestaj "Status Analize" koji bi se zasnivao na kverijima koji odgovaraju na pitanja 1 i 2. Takodje bi verovatno bio zgodan izvestaj tipa "Pokazati sve analize koje jos nisu zavrsene (nedostaju rekordi o nekim rezultatima)"
Pitanaj 1 i 2 se mogu podici na nivo pacijenta, pa se kaze:
3) kako da znam kada su sve analize za nekog pacijenta zavrsene
4) Kada su zavrsene sve analize
5) Koji pacijenti nisu kompletirani (imaju jos nezavrsenih analiza)
Odgovori se diobijaju kverijima, na isti nacin kao z apitanja 1 i 2.
Ako ti ovo predstavlja problem, javi se kad to doje na red pa cemo pomoci.
Unos podataka u tabele
Ako pogledas sliku logickog modela, videces da postoje tabele koje su na rubu sheme i tabele koje su 'unutra'. One na rubu su uvek na strani vise (Reagensi, Analize, Analizatori, Operateri, PrimljeniPacijenti). Sve osim PrimljeniPaciejnti su tzv. 'bazne tabele' ili kako se cestio u Srbiji zovu 'sifranici' te tabele moraju biti popunjene pre nego se pokusa unos u ostale tabele. sadrzaj baznih tabela se ne menja tako cesto, one su prakticno staticne.
Zatim se unose podaci u ReagensiAnalize, ParametriKojiSeOdredjujuanlizom i AnalizatoriAnalize, OperateriAnaliza. Ove tabele nisu bazne, jer zavise od baznih, ali su vazne jer obezbedjuju podatke za operativne tabele.
Sad si spreman da pocnes da radis sa operativnim tabelama.
Operatvne tabele su PrimljeniPacijenti, AnalizeKojeTrebaIzvrsitiZaPacijenta i RezultatiIzvrsenihAnaliza. Kad dodje pacijent asa uputom od specijaliste, onda se unosi novi red u tabelu PrimljeniPacijenti. Odmah posle toga se moze kreirati
nalog. Nalogom definises koje ce se analize raditi, na kom analizatoru i koji operater ce to da uradi. 'Nalog' mi deluje kao skracenica od 'Radni nalog'. Ako je u pitanju vise operatera z avise analiza, onda cemo iamti vise radnih naloga. To je u tabeli AnalizeKojeTrebaIZzrsitiZaPacijenta. Nalog to i kazuje: "Analizu X za pacijenta Y na masini Z izvrsice operater Laza". Znaci, Nalog = AnalizeKojeTrebaIZzrsitiZaPacijenta. Ako se stampa radni nalog kao izvestaj, onda se mogu ukljuciti i reagensi i kolicine koje ulaze u analizu, da operater zna sta treba da trebuje ili uzme odakle se vec uzimaju reagensi.
Opearteri s ebace vredno na rad i mic po mic, pojavljuju se podaci u tabeli RezultatiIzvrsenihAnaliza. Kad operater podnsi rezultat, mora da kaze na kog pacijenta (oznaka prijema), na koju se analizu, koji parametra se odnosi, vrednost koju ce upravo uneti. Sve ovo je lep combo box u palikaciji, a baza vodi racuna da se ne pobrkaju podaci, zato imamo PK i FK. Ako ce neki C program da cita podatke sa masine direktno, program mora da obezbedi iste ove podatke - za kog pacijenta, koju anlizu, koji parametar i vrednost.
Naravno da svakoj tabeli treba dodati polja DatumUnosa DateTime DEFAULT = GetDate() i KoJeUneo, moze DEFAULT = UserName() ili tako nesto.
Na kraju se moze napraviti kveri koji sve rezultate pokupi i prikaze na izvestaju koji bi se zvao, je li, "Laboratorijski Nalaz"....
Pazi kad budes gradio fizicki model, da ne preskocis neki od FK. Verujem da ces dodati i neki autonumber koji bi ti pomogao 'da lakse pises kverije'. To ne preporucujem, ali verovatno ne bih mogao date ubedim u suprotno, pa ni ne pokusavam. Sacuvaj ono sto sma ti dao u logickom modelu, a dodaj sta god hoces.
Nadam se da je ovo pomoglo.