Auswertungen in MCC - mehr Transparenz

Werbung
Auswertungen in MCC - mehr Transparenz
Anitzia Solis,
ICT – Integration|Customizing|Technology
Agenda
Beginn 10:00 Uhr
• Begrüßung und Vorstellung
09:15 Uhr Teil I
•
•
•
•
Beginn 09:00 Uhr Teil III
• Implementierung der
Datenbankabfrage
Spezifikation des Reports
• Entwurf des Reports
• Praktische Übungen
Programmierumgebung
12:00 Uhr Mittagspause
Implementierung der
Datenbankabfrage
13:00 Uhr Teil IV
MCC-Reporting im Überblick
• Praktische Übungen
12:00 Uhr Mittagspause
13:00 Uhr Teil II
• Implementierung der
Datenbankabfrage
• Praktische Übungen
Ende ca. 17:00 Uhr
• Entwurf des Reports
• Einbindung in MCC
• Praktische Übungen
Offene Fragen
Ende ca. 17:00 Uhr
Wie funktioniert MCC- Reporting?
MCC bietet die Möglichkeit, Reports zu erzeugen. Die Reportanfrage
wird an Crystal Reports weiter geleitet. Crystal Reports holt die
benötigten Daten aus der Datenbank und generiert den Report.
MCC
DB
Reporterstellung in 4 Schritten
1.
2.
3.
4.
Spezifikation
Implementierung der Datenbankabfrage
Entwurf des Reports
Einbindung in MCC
1. Spezifikation des Reports
Die Spezifikation ist die Referenz für den gesamten Entwurfsprozess!
• Wer / Was / Wofür / Wann / Wie
Report-Beschreibung
•
•
•
•
Beschreibung:
Zweck des Reports
Parameter:
Filterkriterien
Inhalt:
Informationen
Zusätzliche Formatierungen: Besondere oder bedingte Formatierung
(z.B. „Spalte Leistung muss Rot dargestellt werden, wenn größer als 50„).
• Beispieldarstellung
• Sonstige Wünsche
2. Implementierung der Datenbankabfrage
Programmierumgebung
Microsoft SQL Server Management Studio ermöglich es, auf eine SQLServer Datenbank zuzugreifen
Der Zugriff auf die Datenbank
ist nur mit entsprechenden
Berechtigungen möglich:
2. Implementierung der Datenbankabfrage
Wichtige Kommandos
Achten Sie darauf, die
richtige Datenbank für
Ihre Abfrage
auszuwählen:
• Kommando auswählen +F1:
SQL- Hilfe
• F5: Ausführen
• Alt+Break: Abfrage abbrechen
• F8: Objekt-Explorer
• Tabelle auswählen, dann Alt + F1
• sph + Tabellenname, dann F5
2. Implementierung der Datenbankabfrage
Datenbankstruktur
Struktur einer relationalen Datenbank
MCC-Nomenklatur & Datenmodell
SQL Grundlagen & Funktionen
Stored Procedure
2. Implementierung der Datenbankabfrage
Datenbankstruktur
MCC speichert die Daten in einer relationalen Datenbank. Diese
organisieren die Informationen in Tabellen.
Feld
Primärschlüssel
Referenz
Nummer
1
Familien
Name
Familien
name
name
Wimmer
Wimmer
Vorname
Vorname
2
Rudi
3
Hasenkor
n
Ömer
4
Schneider Willi
5
Schneider Agnes
6
Ribaldo
Lech
7
Bauer
Oscar
8
Schneider Willi
Helga
Helga
Messud
Tabelle
Datensatz
2. Implementierung der Datenbankabfrage
MCC Nomenklatur
In der Tabelle PaPatient sind
Patientendaten enthalten.
Alle Felder der Tabelle fangen mit Pa an
(z.B. PaTitel, PaGebdat,
PaGeschlecht, PaStrasse…)
Der Primärschlüssel ist PaRefnr, und
dient zur Identifikation des Patienten
PaPatient
PaRefnr
PaName
PaVorname
1
Stahl
Helga
2
Hasenkorn Rudi
3
Ömer
Messud
4
Schneider
Willi
5
Schneider
Agnes
6
Ribaldo
Lech
7
Bauer
Oscar
8
Schneider
Willi
2. Implementierung der Datenbankabfrage
MCC-Stammdaten
Stammdaten enthalten alle wichtigen Referenzinformationen.
Beispiele:
KhFaFachbereich
KhAmbambulanz
PaPatient
KhKsKostenstellen
HoAwWartezimmer
BeBenutzer
KhStStation
AwrAufwachraum
KVAAerzte
KhZiZimmer
OsOpSaal
PePersonal
KhBeBett
PfFunktionen
MatMaterial
DtkDTKatalog
KKKrankenkassen
MedMedikament
DtDiagnoseTherapie
MaMandant
2. Implementierung der Datenbankabfrage
SQL Grundlagen (1)
Zum Abfragen und Manipulieren der Daten wird die
Datenbanksprache SQL eingesetzt.
Klausel: SELECT
SELECT
Felder
FROM
Tabelle (n)
WHERE
Bedingungen
2. Implementierung der Datenbankabfrage
SQL Grundlagen (2)
Suche eines Patienten
SELECT
*
FROM
PaPatient
WHERE
PaName like '%Meier%'
SELECT
PaRefnr
,PaName
,PaVorname
FROM
PaPatient
WHERE
PaRefnr = 25
2. Implementierung der Datenbankabfrage
SQL Grundlagen (3)
COUNT – Gibt die Anzahl der Datensätze zurück.
SELECT count(*)
FROM
PaPatient
Z.B. die ersten N Datensätze
SELECT top 20 *
FROM
PaPatient
Kommentare: zwischen „/*“ und „*/“
oder „--“ für eine Zeile
2. Implementierung der Datenbankabfrage
MCC-Feld „Storno“
Das Feld „Storno“ gibt an, ob der Datensatz storniert ist.
PaPatient
PaRefnr
PaName
PaVorname
…
PaStorno
2. Implementierung der Datenbankabfrage
SQL Grundlagen (4)
DISTINCT - wird benutzt um doppelte Zeilen zu verhindern
SELECT
distinct PaStorno
FROM
PaPatient
GROUP BY – fasst die Ausgabezeilen zusammen
SELECT
PaStorno
,count(*) as Anzahl
FROM
PaPatient
Group by
PaStorno
2. Implementierung der Datenbankabfrage
MCC Stornoviews
Eine „View“ erstellt eine virtuelle Tabelle. Die MCC-Stornoviews
(vsys) berücksichtigen das Feld „Storno“.
Die beiden folgenden Abfragen liefern jeweils die gleichen Daten
zurück!
SELECT
count(*)
SELECT
count(*)
FROM
PaPatient
FROM
vsysPa
WHERE
PaStorno is null
or PaStorno = 0
2. Implementierung der Datenbankabfrage
SQL Grundlagen (5)
ORDER BY – legt die Sortierreihenfolge für Spalten fest
SELECT
Felder
SELECT
top 20 *
FROM
Tabelle (n)
FROM
vsysPa
WHERE
Bedingungen
Order by STDErf
Order by Felder
SELECT
top 20 *
FROM
vsysPa
Order by STDErf desc
2. Implementierung der Datenbankabfrage
Übung 1: SQL Grundlagen
Programmieren Sie die SQL-Abfragen für die folgenden Aufgaben:
• 1.1. In der Tabelle KhFaFachbereich werden die Fachbereichsinformationen erfasst. Ermitteln Sie die Referenznummer des
Fachbereiches "Neurologie"!
• 1.2. In der Tabelle KhStStation sind sämtliche Stationen abgelegt.
Wie viele Stationen sind in der Tabelle vorhanden?
• 1.3. In der Tabelle MatMaterial finden Sie die Materialien.
Listen Sie die ersten 50 Materialen auf. Gewünscht sind die folgenden
Felder:
• Referenznummer, Artikelnummer, Name, EkPreis, und VkPreis.
• 1.4. Listen Sie die 5 jüngsten Patienten auf
2. Implementierung der Datenbankabfrage
MCC Bewegungsdaten
Bewegungsdaten zeichnen sich durch eine gewisse Dynamik aus.
Zum Beispiel:
OpPOpPlan
AnfAnforderung
AnfMAnfMassnahme
OpMain
OpZeiten
BewBewegung
TeTermin
OpDetail
FS_USUntersuchung
AeAnaesthesie
FS_USMUntersuchungsMassnahme
2. Implementierung der Datenbankabfrage
MCC–Tabelle: HoHospitalisation (1)
Eine der wichtigsten Tabelle in MCC ist die Tabelle: HoHospitalisation
HoHospitalisation
PaPatient
HoRefnr
HoPaRefnr
HoAufnahmenummerC
1
1
200001
2
2
3
3
PaRefnr
PaName
PaVorname
1
Stahl
Helga
200002
2
Hasenkorn Rudi
200003
3
Ömer
Messud
2. Implementierung der Datenbankabfrage
MCC–Tabelle: HoHospitalisation (2)
Weitere Felder dieser Tabelle:
HoHospitalisation
HoRefnr
HoPaRefnr
HoAufnahmenummerC
1
1
200001
2010-01-02 00:00
2
2
200002
2010-01-02 00:00
3
3
200003
2010-01-03 00:00
HoMaRefnr
HoKhFaRefnr
HoAufnahmedatum
HoAufnahmezeit
HoStaus
HoKhStRefnr
HoKhZiNr
1900-01-01 10:20
A
1
10
1
103
1900-01-01 12:35
S
1
11
2
104
1900-01-01 08:05
S
1
3
2
105
…
2. Implementierung der Datenbankabfrage
SQL Funktionen
Aufgabe: „Finde alle Aufnahmen des Jahres 2010“
SELECT
HoRefnr
,HoAufnahmenummerC
,convert(varchar(10), HoAufnahmedatum, 104)
as HoAufnahmeDatum
,convert(varchar(5), HoAufnahmezeit, 108)
as AufnahmeZeit
,HoEntlassungsdatum
,HoEntlassungszeit
FROM
vsysHo
WHERE
HoAufnahmedatum between '20100101' and '20101231'
oder
WHERE
year(HoAufnahmedatum) = 2010
2. Implementierung der Datenbankabfrage
Häufig verwendete Funktionen (1)
Strukturen
Beispiel
Wertet eine Liste von Bedingungen aus und gibt einen von mehreren
möglichen Ergebnisausdrücken zurück.
CASE
WHEN boolscher_Ausdruck
THEN Ausdruck
WHEN boolscher_Ausdruck
THEN Ausdruck
ELSE alternativer_Ausdruck
END
CASE
WHEN HoStatus='A'
THEN 'Ambulant'
WHEN HoStatus='S'
THEN 'Stationär'
ELSE ''
END
Wertet das Feld aus und gibt den Wert zurück, oder den Ausdruck, falls es
keinen Wert enthält.
isnull(Feld
isnull (HoEntlassungsdatum
,alternativer_Ausdruck )
, getdate())
2. Implementierung der Datenbankabfrage
Häufig verwendete Funktionen (2)
Text-Funktionen:
Beispiel
Ergebnis
Liefere eines oder mehrere Zeichen aus einer Zeichenfolge:
substring(Ausdruck, Start, Länge)
substring('Tuberkulose',1,4)
'Tube'
Liefere die Zeichen auf der rechten Seite der Zeichenfolge:
right(Ausdruck, start, Länge)
right('Tuberkulose', 2)
'se'
Liefere die Zeichen auf der linken Seite der Zeichenfolge:
Left(Ausdruck, start, Länge)
Left('Tuberkulose', 2)
'Tu'
ltrim(' Tuberkulose ')
'Tuberkulose '
rtrim('
' Tuberkulose'
Entferne führende Leerzeichen:
Ltrim(Ausdruck)
Entferne nachfolgende Leerzeichen:
Rtrim(Ausdruck)
Tuberkulose ')
2. Implementierung der Datenbankabfrage
Häufig verwendete Funktionen (3)
Text-Funktionen:
Beispiel
das aktuelle Datum:
getdate()
getdate()
einen neuen Wert von Typ „Datetime“, basierend auf einem zum angegebenen Datum addierten
Intervall:
Dateadd(Datumspart,Number,Datum_Ausdruck)
Dateadd(year, -23, getdate())
DateDiff(Datumspart,Startdate,Enddate)
DateDiff(dd
,HoAufnahmeDatum
,HoEntlassungsDatum)
DatePart(Datumspart, Datum_Ausdruck)
DateDiff(mi,OpPPlandauer)
2. Implementierung der Datenbankabfrage
SQL Tabellenbeziehungen (1)
Beziehung 1:n
SELECT Felder
FROM
Tabelle1
join Tabelle2 on Tabelle1.Feld = Tabelle2.Feld
WHERE
Bedingungen
2. Implementierung der Datenbankabfrage
SQL Tabellenbeziehungen (2)
Beispiel:
SELECT
PaRefnr
,PaName
,PaVorname
,PaGebDat
,HoRefnr
,HoAufnahmenummerC
,HoAufnahmedatum
,dbo.AGE(PaGebDat, HoAufnahmedatum)
FROM
vsysHo
join vsysPa on HoPaRefnr = PaRefnr
WHERE
HoAufnahmedatum between '20100101' and '20101231'
2. Implementierung der Datenbankabfrage
SQL Tabellenbeziehungen (3)
Aufgabe: „Finde alle Aufnahmen des Jahres 2010 mit einem OP-Termin“
SELECT
PaRefnr
,PaName
,PaVorname
,HoRefnr
,HoAufnahmenummerC
,HoAufnahmedatum
,OpPRefnr
,OPPPLanvon
,OPPStatus
–- OPPSOPPStatus.OPPSRefnr
, (DatePart(hh,OPPPlanDauer)*60)
+ DatePart(mi,OPPPlanDauer) as Dauer
FROM
vsysHo
join vsysPa on HoPaRefnr = PaRefnr
join vsysOpP on OpPHoRefnr = HoRefnr
WHERE
OppDatum between '20100101' and '20101231'
2. Implementierung der Datenbankabfrage
SQL Tabellenbeziehungen (4)
Verknüpfung: LEFT JOIN
join
HoHospitalization
left join
OpPOpPlan
HoHospitalization
OpPOpPlan
2. Implementierung der Datenbankabfrage
SQL Tabellenbeziehungen (5)
Aufgabe: „Finde alle Aufnahmen des Jahres mit oder ohne OP-Termin“
SELECT
PaRefnr
,PaName
,PaVorname
,HoRefnr
,HoAufnahmenummerC
,HoAufnahmedatum
,OpPRefnr
,OPPPLanvon
,OPPStatus
–- OPPSOPPStatus.OPPSRefnr
,(DatePart(hh,OPPPlanDauer)*60) +
DatePart(mi,OPPPlanDauer) as Dauer
FROM
vsysHo
join vsysPa on HoPaRefnr = PaRefnr
left join vsysOpP on OpPHoRefnr = HoRefnr
WHERE
HoAufnahmeDatum between '20100101' and '20101231'
2. Implementierung der Datenbankabfrage
Übung 2: Datenbankabfragen
Programmieren Sie die SQL-Abfragen für die folgenden Aufgaben:
2.1. Ermitteln Sie die letzten 20 OPs aus der Datenbank. Felder:
• Aufnahmenummer, Patientenname, OP-Datum und OPDauer (Minuten vom
Schnitt bis zur Naht)
• Beispielausgabe:
• Die Daten hierzu finden Sie in den folgenden Tabellen:
•
•
•
•
HoHospitalisation (View: vsysHo)
PaPatient (View: vsysPa)
OpMain (View: vsysOp)
OPZeiten
2. Implementierung der Datenbankabfrage
Übung 2: Datenbankabfragen
• Die Tabelle OpMain speichert den Kopf-Datensatz einer OP und/oder
einer Anästhesie. Deswegen muss die Abfrage beschränkt werden.
Verwenden Sie das Feld OpAna. Dabei bedeuten:
• 0 : OP mit Ana
• -1 : OP ohne Ana
• -2 : Anästhesie ohne OP
• In der Tabelle OPZeiten sind die unterschiedlichen Zeitpunkte
gespeichert. Verwenden Sie die folgende Formel, um die Dauer zu
berechnen:
• Datediff (mi,(OPDatum + Schnitt),
(OPDatum + Naht))
• Verwenden Sie den SQL-Ausdruck: order by OpDatum
2. Implementierung der Datenbankabfrage
Übung 3: Datenbankabfragen
Wie lauten die SQL-Abfragen für die folgenden Aufgaben:
3.1. Mit dem Aufenthalt eines Patienten sind Bewegungen im Krankenhaus
(Aufnahme, Verlegungen und Entlassung) verbunden. Zählen Sie, wie viele
Aufnahmebewegungen es pro Jahr jeweils gab.
• Beispielausgabe:
a) In welcher Tabelle sind die obigen Daten gespeichert?
b) SQL Server: sph Bew
c) Wie heißt die View?
d) SQL Server: sph vsys
e) Eine Bewegung hat einen Typ. Feld BewBewTRefnr.
Die Werte des Feldes finden Sie in der Tabelle
BewTBewegungstyp.
f) Benutzen Sie group by
2. Implementierung der Datenbankabfrage
Übung 3: Datenbankabfragen
3.2. Listen Sie alle Bewegungen des Falls _________ auf, nach
Bewegungsdatum sortiert. Erwartet sind die Felder:
• Aufnahmenummer, Bewegungstyp, -art, -datum, jeweils mit den zugehörigen
Referenznummern.
• Die Bewegungsart wird in der Tabelle BewABewegungsart gespeichert.
3.3. Wandeln Sie die Abfrage ab, um die folgenden Felder anzuzeigen.
• Station (Code & Name) über das Feld BewKhStRefnr
• Zimmer (Code & Name) über das Feld BewKhZiRefnr
• Bett (Code & Name) über das Feld BewKhBeRefnr
2. Implementierung der Datenbankabfrage
MCC Zuordnungstabellen (1)
Beispiel einer Zuordnungstabelle in MCC:
PeZPersonalzuordnung
MatZMatZuordnung
DtZDtZuordnung
MedZMedikamentZuordnung
2. Implementierung der Datenbankabfrage
MCC Zuordnungstabellen (2)
Beziehung n:m
PeZRefnr
PeZPfRefnr
1
2
PFFunktionen
PfRefnr
1
2
3
4
5
6
PeZPersonalzuordnung
PfName
Oberarzt (Anä)
1. Anästhesist
2. Anästhesist
Anä-Pfleger
Operateur
1. Assistent
PeZPeRefnr
5
5
PeZRtRefnr
1
2
5
5
PePersonal
PeRefnr
1
2
3
4
5
6
PeName
Brücklmeier
Sperling
Kröger
Diegelmann
Stichler
Dembach
PeZZRefnr
47
47
RtRefnrTyp
RtRefnr
1
2
3
4
5
6
RtBeschreibung
OPRefnr
AnaRefnr
CMBRefnr
AmbRefnr
OpDRefnr
PaRefnr
OpDetail
OpDRefnr
43
44
45
46
47
48
…
2. Implementierung der Datenbankabfrage
MCC Zuordnungstabellen (3)
Beziehung n:m
PeZPersonalzuordnung
PePersonal
(vsysPeZ)
PeRefnr = PeZPeRefnr
PFFunktionen
PfRefnr
1
PfName
Oberarzt (Anä)
2
1. Anästhesist
3
2. Anästhesist
4
Anä-Pfleger
5
Operateur
6
1. Assistent
HoHospitalization
PeZHoRefnr = HoRefnr
OpPOpPlan
PeZPRefnr = OPPRefnr
PeZRtRefnr = 9
OpDetail
PfRefnr = PeZPfRefnr
PeZZRefnr = OPDRefnr
PeZRtRefnr =5
FS_USUntersuchung
PeZZRefnr = USRefnr
PeZRtRefnr =103
2. Implementierung der Datenbankabfrage
MCC Zuordnungstabellen (4)
Aufgabe: „Finde alle Aufnahmen des Jahres mit oder ohne OP-Termin.“
SELECT
PaRefnr
,PaName
,PaVorname
,HoRefnr
,HoAufnahmenummerC
,HoAufnahmedatum
,OpPDatum
,PeName + ', ' + left(PeVorname, 1) as Operateur
FROM
vsysHo
join vsysPa on HoPaRefnr = PaRefnr
left join vsysOpP on OpPHoRefnr = HoRefnr
left join vsysPEZ on PeZPRefnr = OPPRefnr
and PeZRtRefnr = 9
and PeZPFRefnr = 5 -- Operateur
left join PePersonal on PeRefnr = PeZPeRefnr
WHERE
OppDatum between '20100101' and '20101231'
2. Implementierung der Datenbankabfrage
MCC Zuordnungstabellen (5)
Beziehung n:m
DTZDTZuordnung
DTDiagnoseTherapie
(vsysDTZ)
DTRefnr = DTZDTRefnr
DTADTArt
DTARefnr DTAName
1
Präoperative Therapie
2
Präoperative Therapie
3
Postoperative Therapie
HoHospitalization
DtZHoRefnr = HoRefnr
OpPOpPlan
DTZRtRefnr = 9
DTZZRefnr = OPPRefnr
OpDetail
DTZRtRefnr =5
DTZZRefnr = OPDRefnr
DTARefnr = DTZDTARefnr
FS_USUntersuchung
DTZRtRefnr =103
DTZZRefnr = USRefnr
2. Implementierung der Datenbankabfrage
Übung 4: Datenbankabfragen
4.1. Welche sind die 30 häufigsten dokumentierten präoperativen
Therapie-Codes?
• Bespielausgabe
a) Die Diagnosen und Therapien finden Sie in der Tabelle
DtzDtZuordnung. Wie heißt die Storno-View für diese Tabelle?
• Die Funktion sph ist nützlich.
b) Die Tabelle DtzDtZuordnung enthält alle dokumentierten Therapien
und Diagnosen. Die präoperativen Therapien sind markiert durch den
Wert des Feldes DtzDtaRefnr = 100 (diese finden Sie in der Tabelle
DtaDtArt).
• Nutzen Sie die Struktur:
select top 30… from… group by… order by…
2. Implementierung der Datenbankabfrage
Übung 4: Datenbankabfragen (2)
4.2. Fragen Sie Aufnahmenummer, Patientenname, Diagnoseart,
Diagnosecode und Diagnosename zum Fall ________ ab.
• Bespielausgabe
a) Suchen Sie die Patientennamen dieses Falls.
• Beachten Sie, dass das Feld HoRefnr nicht der Aufnahmenummer
entspricht!
b) Für die Diagnoseart verwenden Sie die Tabelle DtaDtArt.
2. Implementierung der Datenbankabfrage
Übung 4: Datenbankabfragen (3)
4.3. Ändern Sie die SQL-Abfrage so ab, dass nur die HauptAufnahmediagnosen aufgelistet werden.
a) Geben Sie den Wert des Felds vsysDtz.DtzMainFlag aus.
• Alle Hauptdiagnosen haben den Feldwert "-1".
b) Welche Art haben die Aufnahmediagnosen?
• Fragen Sie die Tabelle DtaDtArt ab.
4.4. Ändern Sie die Abfrage ab, damit die Liste nur die präoperativen
Diagnosen enthält.
2. Implementierung der Datenbankabfrage
MCC–Felder: DOFI (1)
DOFI-Felder sind frei konfigurierbare Dokumentationsfelder.
Die Definition dieser Felder erfolgt über das Konfigtool
• Hierarchie:
Gruppen
Bereiche
Felder
Werte
2. Implementierung der Datenbankabfrage
MCC–Felder: DOFI (2)
Die Konfiguration der DOFI-Felder wird in der Datenbank abgebildet.
• Tabellen:
SELECT
top 20
AppRefnr,AppName
,DoGRefnr,DoGName,DoGWertetabelle
,DoBRefnr,DoBName,DoBWertetabelle
,DoFRefnr,DoFCode,DoFName
,DoFMultiselect,DoFTyp
,DoWRefnr,DoWCode,DoWName
FROM
AppApplikation
join DoGGruppen
join DoBBereiche
join DoFFelder
left join DoWWerte
DoGGruppen
DoBBereiche
DoFFelder
DoWWerte
on DoGAppRefnr
on DOBGruppe
on DoFDoBRefnr
on DoWDoFRefnr
= AppRefnr
= DoGRefnr
= DoBRefnr
= DoFRefnr
2. Implementierung der Datenbankabfrage
MCC–Felder: DOFI (3)
Dazu gibt es die Dokumentationstabellen, zum Beispiel:
DoZPlan.DozZRefnr
DoZWerte.DozZRefnr
DoZWerte2.DozZRefnr
DoZHo.DozZRefnr
= OpPOpPlan.OpPRefnr
= OpMain.OpRefnr
= OpDetail.OpDRefnr
= HoHospitalisation.HoRefnr
2. Implementierung der Datenbankabfrage
MCC–Felder: DOFI (4)
Dazu gibt es die Dokumentationstabellen, zum Beispiel:
SELECT
HoRefnr
,HoAufnahmenummerC
,HoAufnahmedatum
,DoFName
,DoZHo.*
,DoWName
FROM
vsysHo
join DoZHo on DozZRefnr = HoRefnr
left join DoWWerte on DoWRefnr = DoZDoWRefnr
join DoFFelder on DoFRefnr = DoZDoFRefnr
WHERE
HoRefnr = __________
2. Implementierung der Datenbankabfrage
Übung 5: Datenbankabfragen
5.1. Wie lautet die Abfrage, welche die Häufigkeit des
Dokumentations- Feld ___________ zurückliefert?
• Bespielausgabe
Jahr
2011
Monat
1
Anzahl
256
2011
2
598
…
..
a) In welcher Tabelle werden die Daten gespeichert?
• Die Tabelle fängt mit DOZ an.
• Verwenden Sie group by.
2. Implementierung der Datenbankabfrage
Stored Procedure (1)
Eine „Stored Procedure“ ist eine gespeicherte Auflistung von SQLAnweisungen.
if object_id('REP_Patient') > 0
drop procedure REP_Patient
go
create procedure REP_Patient
as
-- REP_Patient
SELECT
PaRefnr
,PaVorname + ' ' + PaName
,HoRefnr
,HoAufnahmenummerC
,HoAufnahmedatum
,OpPDatum
FROM
vsysHo
join vsysPa on HoPaRefnr = PaRefnr
left join vsysOpP on OpPHoRefnr = HoRefnr
WHERE
OpPDatum between '20090101' and '20091231'
2. Implementierung der Datenbankabfrage
Stored Procedure (2)
Eine „Stored Procedure“ kann auch mit Parametern aufgerufen werden:
if object_id('REP_Patient') > 0
drop procedure REP_Patient
create procedure REP_Patient
@v
,@b
As
as datetime
as datetime
-- REP_Patient '20090101‚'20091231'
SELECT
PaRefnr
,PaVorname + ' ' + PaName
,HoRefnr
,HoAufnahmenummerC
,HoAufnahmedatum
,OpPDatum
FROM
vsysHo
join vsysPa on HoPaRefnr = PaRefnr
left join vsysOpP on OpPHoRefnr = HoRefnr
WHERE
OpPDatum between @v and @b
2. Implementierung der Datenbankabfrage
Übung 6: Stored Procedure
6.1. Speichern Sie das Ergebnis aus Übung 3 als „Stored Procedure“
ab.
• Dazu muss die „Stored Procedure“ die Bewegungen des eingegebenen
Zeitraums liefern.
3. Entwurf des Reports mit Crystal Reports
Datenquelle
Designbereich
Feldexplorer & Formel
Objekte formatieren
Bereichs-Assistent
Einfügen von Gruppen
4. Entwurf des Reports
Datenquelle
Sie müssen eine Verbindung zu einer Datenquelle herstellen, aus der
der Report erstellt werden soll:
4. Entwurf des Reports
Designbereich
Die Entwurfsansicht ist die Umgebung, in der Sie diesen Report
erstellen:
Vorschau
Bereich
Ausführen
4. Entwurf des Reports
Feldexplorer
Mit dem Feldexplorer können
auf den Registerkarten
„Entwurf“ und „Vorschau“
Felder eingefügt, bearbeitet
oder gelöscht werden.
Zusätzlich werden Formeln,
und andere Elemente
angezeigt.
4. Entwurf des Reports
Objekte
> Format > Optionen > Führungslinien
> Seite Einrichten > Seitenränder
4. Entwurf des Reports
Formeln
Boolesche Operatoren
<>, AND, OR, NOT
Kontrollstrukturen
• IF < Bedingung > THEN
• <Aktion A>
• ELSE <Aktion B>
• SELECT <Bedingung>
• CASE <Ausdruck A>: <Aktion A>
• CASE <Ausdruck B>: <Aktion B>
• Default: <Standardaktion>
• If Remainder(RecordNumber, 2) then
• crWhite
• Else color(230,255,230)
•
•
•
•
Select {BewTRefnr}
Case 1: crGray
Case 2: crBlue
Default: crRed
4. Entwurf des Reports
Bereichs-Assistent
Seitenumbrüche:
Um leere Seiten zu
vermeiden, können die
Formeln
„Not OnFirstRecord“ und
„Not OnLastRecord“
verwendet werden
Es ist sinnvoll, einen
zweiten Detailbereich
einzufügen, die optionalen
Informationen dort
einzufügen und den
Bereich so zu formatieren,
dass er nur in der
gewünschten Situation
angezeigt wird.
4. Entwurf des Reports
Gruppe einfügen
Mit Hilfe von „Gruppen“
können Berechnungen
gruppenweise
vorgenommen werden.
Beim Gruppieren von
Datensätzen auf
Grundlage von Reportund Formelfeldern,
sollten dem Report
neue Bereiche hinzugefügt werden.
4. Entwurf des Reports
Übung 7: Crystal Reports
7.1. Erstellen Sie einen Bericht mit Crystal Reports für die Stored
Procedure REP_Patient
• Ändern Sie die Stored Procedure so ab, dass Sie alle Fälle eines
Fachbereiches erhalten. Der Benutzer muss auch -alle Fachbereicheauswählen können.
• Der Wert „-1“ bedeutet in MCC „alle Fachbereiche“.
• Die Fälle müssen jeweils nach Fachbereichen gruppiert sein.
• Der Report soll die folgenden Spalten anzeigen:
• Aufnahmenummer, Aufnahmedatum, Patient, GebDatum und OP-Termin
falls vorhanden.
5. Einbindung in MCC
Reportkategorie
Reportverwaltung
Reportparameter
Reportgenerierung
5. Einbindung in MCC
Reportkategorie-Verwaltung
Mit dem „MCC-Konfigurations“ Tool werden die Reportkategorien
verwaltet.
5. Einbindung in MCC
Report-Verwaltung (1)
Auch die Reports selbst werden hier verwaltet.
5. Einbindung in MCC
Report-Verwaltung (2)
Hier werden alle relevanten
Informationen zum Report
eingetragen
Crystal
Reports- Datei
Parameter
Aufrufstelle
5. Einbindung in MCC
Reportparameter-Verwaltung (1)
Falls die Stored Procedure die Übergabe von Parametern erwartet,
muss das Feld Selection konfiguriert werden.
• Es muss mit PROC| beginnen
• Anschließend folgen die Parameter, jeweils durch „|“ getrennt.
Folgendes Namensschema ist zu beachten:
•
•
•
•
•
%MANDANT% für Mandant
%KHFA% für Fachbereich
%OS% für Saal
%PE% für Personal
%SG% für Saal-Gruppe
5. Einbindung in MCC
Reportparameter-Verwaltung (2)
• Für Zeitbereichsauswahl %VON% und %BIS%, sofern es nur einen
Zeitraum gibt. Falls es mehrere Zeitbereichsauswahlen gibt, ist die
Positionssyntax zu verwenden.
Das Positions-System ersetzt %n% durch den Wert der n-ten Auswahl.
5. Einbindung in MCC
Reportparameter-Verwaltung (3)
Alle Parameter müssen
registriert sein.
5. Einbindung in MCC
Übung 8: Reporterstellung
8.1. Registrieren Sie den Report von Übung 7 unter der Kategorie
„OP Planung“.
8.2. Erstellen Sie einen Report mit der Abfrage aus Übung 5.
• Speichern Sie die Abfrage als Stored Procedure mit einen Parameter
„Zeitraum“ ab.
• Erstellen Sie den Bericht mit Crystal Reports
• Registrieren Sie den Report
5. Einbindung in MCC
Reportgenerierung
Die Benutzer können über MCC Crystal Reports erzeugen.
MCC
DB
5. Einbindung in MCC
Übung 8: Erstellen eines Reports
Erstellen Sie einen Bericht in Crystal Reports mit folgenden
Anforderungen:
• Liste alle Operationen in einem definierte Zeitraum auf, sortiert nach
Fachbereich.
• Gruppiert nach Fachbereich mit Zwischensummen und Gesamtsumme
• Spalten: Aufnahmenummer, Patient, OP-Datum, df. Fachbereich,
Therapie, Operateur, Schnitt-Naht Dauer
• Filter: Zeitraum (von/bis), Fachbereich
5. Einbindung in MCC
Übung 8: Erstellen eines Reports
Erstellen Sie einen Bericht in Crystal Reports mit folgenden
Anforderungen:
•
•
•
•
Anzahl von stationären Fällen, gruppiert nach Fachbereich
Summenzeile
Spalten: Anzahl, Fachbereich (Code + Name)
Filter: Zeitraum von/bis
Vielen Dank für Ihre Aufmerksamkeit!
ICT – Integration|Customizing|Technology
MEIERHOFER AG
Werner-Eckert-Straße 12 • 81829 München
Telefon: +49 (0) 89-44 23 16-0
Telefax: +49 (0) 89-44 23 16-666
www.meierhofer.de
[email protected]
Herunterladen