Podręcznik administratora

Dostęp poprzez funkcje bazodanowe

Funcje bazodanowe umożliwiające dostęp do bazy faktów :

bf.add (akategoria varchar, azrodlo varchar, aidx_osoby integer, aidx_pobytu integer, aidx_badania integer, aidx_uslugi integer) RETURNS bigint

Funkcja wstawia nowy fakt (bez atrybutów).

Jeśli podajemy idx_uslugi, lub idx_badania, lub idx_pobytu to nie ptrzeba podawać idx_osoby

Zwraca utworzony idx_faktu

bf.addatr (aidx_faktu bigint, aatrybut varchar [], avalue text []) RETURNS bigint

Funcja zapisuje wartości podanych atrybutów do faktu aidx_faktu.

Jeśli zamast nazwy atrybutu wpiszemy pusty ciąg, wówczas wartośc zostanie zapisana do atrybutu o lp=1.

Zwraca idx_faktu do ktorego dokonano zapisu;

NULL, jeśli nie odnaleziono faktu, lub żadnego ze wskazanych atrybutów


Atrybuty podajemy jako varchar, ale są one konwertowane do odpowiedniego typu danych określonego w def. atrybutu.

Datę i timestamp można podawać zarówno w dormacie yyyy-mm-dd, jak i dd-mm-yyyy (decyduje pozycja -).

Liczby ułamkowe można podawać z . jak i , jako separatorem dziesiętnym

"bf"."addrel" (aidx_faktu bigint, aidx_faktu2 bigint, aid_relacji "pg_catalog"."char", apoziom integer)

Funkcja dodaje relację pomiędzy faktami.

Jeśli nie podamy rodzaju, to podawany jest PartOf;

Jeśli nie podamy poziomu, to wpisywany jest 1.

Jeśli ustnieje juz analogiczna relacja podanego rodzaju, to jest nadpisywana

"bf"."getsql" (akategoria varchar, aatrybut varchar [], awarunek varchar []) returns text

Funkcja pomocnicza - buduje część SQLa odpytającego o wartości atrybutów

Jako argumenty przyjmuje kategorię, listę atrybutów i listę warunków do spełnienia przez te atrybuty

"bf"."getpac" (aidx_osoby integer, akategoria varchar, aatrybut varchar [], awarunek varchar []) RETURNS SETOF bigint

Funkcja zwraca wszytskie fakty pacjenta aidx_osoby o podanej kategorii akategoria spełniające podane kryteria awarunek dla podanych atrybutów aatrybut.

Wpisy są sortowane DESCENDENS wg daty utworzenia wpisu w tabeli faktów - stąd jako pierwszy jest zwracany najpóźniejszy wpis

"bf"."getpob" (aidx_pobytu integer, akategoria varchar, aatrybut varchar [], awarunek varchar []) RETURNS SETOF bigint

"bf"."getbad" (aidx_badania integer, akategoria varchar, aatrybut varchar [], awarunek varchar []) RETURNS SETOF bigint

"bf"."getusl" (aidx_uslugi integer, akategoria varchar, aatrybut varchar [], awarunek varchar []) RETURNS SETOF bigint

Powyższe funkcje są analogiczne do "bf"."getpac", dotyczą jednak odpowiednio faktów z pobytu, badania i pojedynczej usługi

Przykładowe wywołania:

Dodaję do pacjenta i idx_osoby = 1 fakt kategorii RR - źródło 'Jakieś'. W wyniku dostaje identyfikator faktu.

select "bf"."add" ('RR', 'Jakieś', 1, null, null, null);

Dodaję do faktu o numerze 1 atrybuty: domyślny (''), 'DIA' i 'Kolor' o warotściach odpowiednio: 234,55 i 5

select "bf"."addatr" (1, Array['','DIA','Kolor'], Array[234,55,5]::varchar[]);

Dodaję do pacjenta i idx_osoby = 1 fakt kategorii RR - źródło 'Jakieś' i równocześnie nadaję wartości atrybytom: domyślny (''), 'DIA' i 'Kolor'  warotściach odpowiednio: 234,55 i 5

select "bf"."addatr" (("bf"."add" ('RR', 'Jakieś', 1, null, null, null)), Array['','DIA','Kolor'], Array[234,55,5]::varchar[]);

Odczytuję wartość domyslnego atrybutu faktu o idx=1:

select "bf"."getatr" (1, '');

Szukam wszystkich faktów pacjenta nr 1 w kategorii RR, dla których atrybut DIA <70 i atribut domyślny (czyli SYS) >120:

select a from bf.getpac(1, 'RR', ARRAY['DIA', ''], ARRAY['<70', '>120']) a;

Szukam wartości atrybutu DIA dla wszystkich faktów pacjenta nr 1 w kategorii RR, dla których atrybut DIA <70 i atrybut domyślny >120:

select bf.getatr(a, 'DIA') from bf.getpac(1, 'RR', ARRAY['DIA', ''], ARRAY['<70', '>120']) a;

TERAZ INNA DEFINICJA FAKTÓW:

Kategorie: RR z atrybutem: „czas pomiaru” oraz SYST i DIAST z atrybutami: „Warość”.

Kategorie SYST i DIAST są powiązane relacją PartOf z RR

Wstawiam fakt RR z jednym atrybutem (domyślnym): czas pomiaru oraz łaczę je relacja PartOf z "dziećmi" - wartościami pomiarów

irr := Doc.BfAdd('Dok', 'RR', [''], ['20-03-2009 15:37']);

Doc.BfRel(Doc.BfAdd('Dok', 'SYST', [''], [150]), irr);

Doc.BfRel(Doc.BfAdd('Dok', 'DIAST', [''], [80]), irr);