Podręcznik administratora

Zapytania do bazy faktów

Zapytania do BF2

Zasadniczo nie nalezy odpytywać bezpośrednio tabel bazy faktów, jak równiez ich modyfikować.

W celu dodawania/usuwania i modyfikacji poszczególnych faktów naly posłyć się funkcją: bf.Operate

W celu wyszukiwania danych pacjenta stosujemy funkcje: public.getfacts_...zależnie o jaki zakres danych nam chodzi.

W celu globalnego przeszukiwania odpytujemy View facts .

Funkcje: av, avs, avf pozwalają na pobranie wartości wskazanego atrybutu.

Przykład - lista idx_faktu i nazwa usługi z wszystkich faktów o kategorii 'USLUGA':

select f.idx_faktu, av(f, 'nazwa') as nazwa_uslugi from facts f where f.nazwa = 'USLUGA'; Dziedziczenie

Powyższy przykład pokazuje szukanie faktów konkretnej kategorii.

Aby wyszukiwać fakty pacjenta z danej kategorii i potomnych w relacji IS - czy nie pytać o fakty kategorii WIZBAD, ale o wszystkie fakty, które są kategorii WIZBAD - czyli dokładnie tej kategorii oraz wszystkich, które z niej dziedziczą - stosujemy następującą konstrukcję:

select *  from getfacts_pac(27) f where f.idx_kategorii = any ((select inh_tree('wizbad'))::integer[]) -- Poprawna konstrukcja

Uwaga: teoretycznie można by zapytać:

select * from getfacts_pac(27) f where f.idx_kategorii = any (inh_tree('wizbad'))    ---- Błędna konstrukcja !!!!!!!!!!!!!!!!!!!!!!!!!

Okazuje się jednak, że takie zapytanie jest skrajnie gorzej zaoptymalizowane. Czyli kluczowe jest stosowanie podzapytania. 

Analogicznie teraz wszystkie fakty kategorii 'WIZBAD i potomnych:

select * from facts f where f.idx_kategorii = any (inh_tree('wizbad'))