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]