Anhang: Statistikverwaltung

Parametrisierung

Statistikabfragen in tomedo® sind SQL-Anfragen an die Datenbank (Dialekt: Postgres-SQL). Um Ergebnisse von Statistikabfragen möglichst schnell anzeigen zu können, empfiehlt es sich, die Ergebnislisten klein zu halten. Dazu können Sie bei der Auswahl einer Abfrage schon einschränkende Parameter angeben (z.B. alle Einträge in einem bestimmten Zeitraum). Möglich wird dies durch eine Erweiterung der SQL-Syntax um spezielle Parameter/Makros.

Folgende Makros stehen für die Parametrisierung der SQL-Anfragen zur Verfügung:

Zeichenkette

<ZS>STRING;Anzeigetext;SQLPräfix;SQLSuffix</ZS>

Beipiel:

<ZS:textParameter>STRING;Text des Karteieintrags;A.text;and</ZS>

erzeugtes SQL-Code-Fragment:

A.text ILIKE '%test%' and

  • zusätzlich ist eine OR oder AND Suche in mehreren Feldern gleichzeitig möglich:

Beispiel:

<ZS> STRING;Text des Karteieintrags;OR;A.text; A.text1; and </ZS>

Tag (Datum)

<ZS> DAY;parameter;Anzeigetext;SqlPräfix;SqlSuffix </ZS>

Parameter 2stellig: 1. Stelle von links:
0 = von-bis Ersetzung (00:00:00 – 23:59:59)
1 = nur Datum,
2. Stelle: 1 = Pflichfeld, 0 = kein Pflichtfeld

Beispiel:

<ZS>DAY;01;Datum ist;A.datum;and</ZS>

erzeugtes SQL-Code-Fragment:

(A.datum > '2013-08-13 00:00:00' andA.datum < '2013-08-14 00:00:00') and

Zeit

<ZS> DATE;parameter;Anzeigetext;SqlPräfix;SqlSuffix </ZS>

  • Parameter 2stellig: 1. Stelle von links:
    1 = Pflichtfeld, 0 = kein Pflichtfeld
    2. Stelle: -1 = 0:00, 0 = jetzt, 1 = 23:59

Beispiel:

<ZS> DATE;-01;Geburtsdatum größer;geburtsdatum > ;or </ZS>

erzeugtes SQL-Code-Fragment:

geburtsdatum > '2013-08-13 00:00:00' or

Zahlen

<ZS> NUMBER;Anzeigetext;SQLPräfix;SQLSuffix </ZS>

Beispiel:

<ZS> NUMBER;Steigerungsfaktor;steigerungsfaktor<; </ZS>

erzeugtes SQL-Code-Fragment:

steigerungsfaktor < 2.3

funktioniert für Ganz- und Gleitzahltypen

Auswahllisten

<ZS> SELECTION;initialAufWahr(0/1/2);Anzeigetext; Item1;SQL1;Item2;SQL2...</ZS>

Beispiel:

<ZS> SELECTION;0;Bereits abgerechnet;Ja;abgerechnet = true and;Nein;abgerechnet = false and </ZS>

Initial = 0/1 gibt an, ob die Selektion bei Auswahl der Abfrage im Statistikfenster bereits ausgewählt ist. Initial = 2 markiert eine Pflichtauswahl (die nicht abgewählt werden kann.)

erzeugtes SQL-Code-Fragment:

abgerechnet = true and

Nutzerauswahl

<ZS>NUTZERSELECTION;initial (0/1/2);nutzertypen;Anzeigetext;SQL1;SQL2 </ZS>

Beispiel:

<ZS> NUTZERSELECTION;0;0; Abrechner;C.abrechner=’;’ and </ZS>

Initial = 0/1

gibt an, ob die Selektion bei Auswahl der Abfrage im Statistikfenster bereits ausgewählt ist.

Initial = 2

markiert eine Pflichtauswahl (die nicht abgewählt werden kann.)

Nutzertyp:
0 = alle sichtbaren Nutzer;
1 = Leistungserbringer;
2 = abrechnende Ärzte;
3 = auch unsichtbare Nutzer

erzeugtes SQL-Code-Fragment:

C.abrechner = ’zo’ and

Nutzerabhängiges Ergebnis

<ZS> NUTZERDEPENDENTSELECTION;initial (0/1/2) ;Titel;Anzeigetext1;Rechtekeypath1;SQL1;…;Anzeigetext_n;Rechtekeypath_n;SQL_n </ZS>

Beispiel:

<ZS> NUTZERDEPENDENTSELECTION;2;Aufgaben;Aufgaben aller Nutzer;admin.alleAufgabenAnzeigbar;N.ident = <ZSNUTZERIDENT> and </ZS>

Initial:
0 = Option ist nicht gesetzt
1 = Option ist gesetzt
2 = Option ist gesetzt und nicht veränderbar

Rechtekeypath:
gibt an welche Rechte benötigt werden, damit der Nutzer die Statistik ausführen darf

admin = Nutzer mit Administratorrechten
tomedo = Alle Nutzer
RECHTETYP = Nutzer mit einem bestimmten Recht z.B. admin.alleAufgabenAnzeigbar

Um auf den aktuell angemeldeten Nutzer zugreifen zu können, steht die Variable <ZSNUTZERIDENT> zur Verfügung.

Erzeugtes SQL-Code Fragment:

N.ident = 18

Quartal

<ZS> QUARTAL;Anzeigetext;SQLPräfix;SQLSuffix </ZS>

oder

<ZS> QUARTAL2;Anzeigetext;attrQuartal;attrJahr;SQLSuffix </ZS>

oder

<ZS> QUARTAL3;Anzeigetext;stdComparator;attrQuartal;attrJahr; SQLSuffix </ZS>

Mit allen drei Kommandos wird auf Quartale eingeschränkt

  • QUARTAL: Einschränkung per Datumsattribut 1.1.2016 – 31.3.2016
  • QUARTAL2: Einschränkung per Jahr/Quartal-Attributen (z.B. 1 und 2016)
  • QUARTAL3: wie Quartal2, bloß mit auswählbarem Vergleichsoperator

Parameter stdComparor für QUARTAL3 Kommando bestimmt den vorausgewählten Vergleichsoperator;

0 = gleich,
1 = kleiner,
2 = kleiner/gleich,

3 = größer/gleich,
4 = größer,
5 = ungleich.

Beispiel:

<ZS> QUARTAL;Quartal;A.datum; and </ZS>
<ZS> QUARTAL2;Quartal;B.jahr;B.quartal; or </ZS>
<ZS> QUARTAL3;Quartal;2;C.jahr;C.quartal; or </ZS>
erzeugte Code-Fragmente:
(A.datum > '2016-01-01 00:00:00' and
A.datum < '2016-04-01 00:00:00') and
(B.jahr = 2016 and B.quartal = 1) or
(C.jahr < 2016 or (C.jahr = 2016 and
C.quartal <= 1) or

Beschränkung der Listengröße

<ZS> LIMIT;J; Standard </ZS>

Beispiel:

<ZS> LIMIT;J; 100 </ZS>

Erzeugtes SQL-Code-Fragment:

LIMIT 100

Bei der Einbettung der Makros in eine SQL-Anfrage ist darauf zu achten, dass sowohl beim Ignorieren des Parameters als auch bei einer Ersetzung des Parameters durch das erzeugte SQL-Code-Fragment ein syntaktisch korrekter SQL-Gesamtausdruck entsteht. Dies kann beispielsweise durch das Hinzufügen einer „immerwahren“ Bedingung geschehen:

Beispiel:

where
<ZS> DATE;Ankunft kleiner;A.ankunft <;and </ZS>
<ZS> STRING;Besuchsinfo;A.infotext;and </ZS>
<ZS> NUMBER;PatientNr.;B.ident;and </ZS>

true;

Um eine konditionale Oder-Verknüpfung von Bedingungen (in Kombination mit Und-Verknüpfungen) zu ermöglichen, gibt es den Befehl <ZSBLOCK>. Innerhalb dieses Blocks findet ein Löschen von führenden oder abschließenden „or“s und „and“s statt. Außerdem wird ein leerer Block durch den Ausdruck „true“ ersetzt. Der Block wird automatisch mit (…) geklammert.

Beispiel:

where
<ZS> DATE;Ankunft kleiner;A.ankunft <;and </ZS>
<ZS> STRING;Besuchsinfo;A.infotext;and </ZS>
<ZS> NUMBER;PatientNr.;B.ident;and </ZS>
<ZSBLOCK>
<ZS> STRING;EBM-Ziffer;C.code;or </ZS>
<ZS> STRING;

Verknüpfung zu anderen Tabellen

Für Ergebnislisten besteht die Möglichkeit, diese mit anderen Informationen zu verknüpfen. Voraussetzung dafür ist die Existenz bestimmter Spalten(namen) in der erzeugten Liste. Folgende Spaltennamen führen zu einer Verknüpfbarkeit mit anderen Listen:

  • PatientID: die eindeutige Nummer (ident) eines Patienten
  • BesuchID: die eindeutige Nummer (ident) eines Besuchs
  • ScheinID: die eindeutige Nummer (ident) eines KV-Abrechnungsscheines
  • PrivatrechnungID: die eindeutige Nummer (ident) einer Privatrechnung

Zukunftssichere Filterung

Falls Sie planen, die Abfrage später um weitere Parameter zu erweitern bzw. Parameter zu löschen oder umzuordnen, gehen bei oben beschriebenem Vorgehen alle vorhandenen Vorauswahlen für die ausgewählte Statistik verloren. Sie können dies verhindern, indem Sie jedem Parameter einen eigenen Bezeichner geben. Dieser wird in der folgenden Form angegeben:

<ZS:parameterName> … </ZS> statt wie bisher <ZS> … </ZS>

Der Parametername darf nur aus Buchstaben und Ziffern bestehen (keine Leerzeichen oder sonstige Sonderzeichen).

Inhaltsverzeichnis