8. Fachtagung Praxis der Informationsverarbeitung in Krankenhaus und Versorgungsnetzen Praxis-Seminar am 7. Mai 2003 Anwendererfahrung in KIS-Systemen mit DRG-orientierten Fallpauschalen für • Ärzte • Pflege • medizin. Controlling • Abrechnung Stefan Bucher Klinikrechenzentrum, Team PDV Universitätsklinikum Freiburg Ziele 2002 © PDV-Team 1 07. Mai 2003 in Dortmund 8. Fachtagung Praxis der Informationsverarbeitung in Krankenhaus und Versorgungsnetzen Praxis-Seminar am 7. Mai 2003 Workflow von der medizinischen Dokumentation über die Ermittlung der DRG zur ordnungsgemäßen Fall-Abrechnung im Universitätsklinikum Freiburg Stefan Bucher Klinikrechenzentrum, Team PDV Universitätsklinikum Freiburg Ziele 2002 © PDV-Team 2 07. Mai 2003 in Dortmund Gliederung • Vorstellung • Freiburger KIS • Workflow • Aufnahmemeldung • OP Dokumentation • Beatmungszeiten • pflegerelevante Diagnosen • weitere (Verlaufs-) Dokumentation • Entlassmeldung • Festlegung der Fachabteilungshauptdiagnose • Festlegung der (Krankenhaus-) Fallhauptdiagnose • Abrechnung • Sonderfälle Ziele 2002 © PDV-Team 3 Kennzahlen • Krankenhaus der Maximalversorgung • seit 1998 rechtsfähige Anstalt des öffentlichen Rechts • Krankenversorgung + Forschung + Lehre • • • • stationär vorgehaltene Betten: stationäre Fälle p.a.: Belegungstage p.a.: ambulante Kontakte p.a.: ca. ca. ca. ca. 1.700 56.000 500.000 400.000 • Beschäftigte (nach Vollkräften): ca. 5.600 • Jahresbudget: ca. 400 Mio. € • Informationstechnologie: ca. 6.200 vernetzte Knoten (Server, PCs, Drucker) Ziele 2002 © PDV-Team 4 Vorstellung Klinikrechenzentrum * zentraler Dienstleister für Klinikum und Universität * Bereiche: EDV-Beschaffung, Schulung, Zentrale Problemannahme, Support, Kommunikation, Verkabelung, Netze, Softwareentwicklung und Wartung, Rechner- u. Systembetreuung * 47 Mitarbeiterinnen Ziele 2002 © PDV-Team 5 Vorstellung Abteilungsübergreifendes KIS-Team EDV-Gruppe Medizinische Klinik Abteilung Medizinische Informatik Klinikrechenzentrum * Analyse * Beratung * Software-Entwicklung * Software-Wartung * Software-Pflege Ziele 2002 © PDV-Team 6 Hinweis: das Freiburger KIS läuft seit 1.1.2003 in 2 Optionshäusern Definition Enterprise Application Integration * Unternehmensweite Integration von funktional ausgerichteten Spezial-Anwendungen, um als ein System geschäftsprozessorientiert im Sinne des Unternehmenszweckes möglichst effizient und weitgehend automatisiert zu arbeiten. * Unbeschränkter Informationsaustausch zwischen beliebigen Systemen, ohne edv-technische Eingriffe in die Anwendungen oder Datenbankstruktur. * Individuell kombinierbare Softwaremodule. Ziele 2002 © PDV-Team 7 Technologie Enterprise Application Integration * Einsatz von Clientsystemen als Frontend des zentralen KIK-Systems in den pflegerischen, medizinischen und administrativen Bereichen * HL7 als Middleware für den Kommunikationsaustausch zwischen Clients und Server (Query / Message; ohne Kommunikationsserver) * eigenentwickelte, unternehmenspezifische Natural-Programme auf dem Server für Plausibilisierung und Datenbank-Zugriffe Individuell kombinierbare Softwaremodule Ziele 2002 © PDV-Team 8 Technologie Enterprise Application Integration PDV-FR Klinischer Arbeitsplatz PDV-FR Präsentation KurzPendelAufnahme Liste PROMetheus MeDoc HL7 Kommunikation Logik, Plausis, Regeln Datenbank-Zugriffe DepartmentSysteme Datawarehouse Patientendatenbanken Ziele 2002 © PDV-Team 9 PDV-FR + MIRAplus Technologie Enterprise Application Integration PDV-FR Klinischer Arbeitsplatz PDV-FR Präsentation KurzPendelAufnahme Liste PROMetheus MeDoc HL7 Kommunikation Logik, Plausis, Regeln Datenbank-Zugriffe DepartmentSysteme Datawarehouse Patientendatenbanken Ziele 2002 © PDV-Team 10 PDV-FR + MIRAplus Das Freiburger KIS Enterprise Application Integration Radiologie RADOS / PACS Integrierter klinischer Arbeitsplatz PeLi / ka Station/Ambul./Pflege Krankenversorgung PROMetheus Ambul./OP/Betten MeDoc medizin. Arbeitsplatz Transfusionsmed FITMED Funktions-/ Leistungsstellen Labor X/LAB Pathologie PATSY Doktoranden Forschung Anästhesie ANDOK / QS Mikrobiologie M/LAB, BactLab Kommunikation und Sicherheit (HL7) Medizinisches Auskunftssystem Zentrales Patienten Management System u. Zugriffsberechtigung u. ICD-,OPS-Dokumentation MIRAplus PDV-FR Operative Krankenhausführung Administration Versorgung MM SAP R/3 PM FI/AM Elektronisches Archiv Ziele 2002 © PDV-Team 11 CO HR KIS-FR Dokumentation Konzept Arzt dokumentiert (den Zustand des Patienten und die erbrachten Leistungen) • zeitnah • korrekt • vollständig • nach Kodierrichtlinien • unabhängig von Aufnahme- u. Abrechnungsart (ICD10 V. 2.0) KIS unterstützt ihn durch • elektronische Patientenakte • Hilfen und Erweiterungen • Hinweise und Plausis Ziele 2002 © PDV-Team 12 medizinisches Controlling / Abrechnungsstelle • entscheidet ggf. (Krankenhaus-) Fallhauptdiagnose • ermittelt abzurechnende DRG KIS-FR Dokumentation Highlights der KIS-Unterstützung enge Verzahnung stationär / ambulant • Dokumentation unabhängig von Aufnahme- u. Abrechnungsart Hilfen und Erweiterungen • Anzeige der CCL-Relevanz bei Nebendiagnosen • Speicherung eigener Texte und Hinweise • zu Diagnosen und Prozeduren • fachabteilungsbezogene • Favoriten • Hitlisten • Setbildung • Katalog der pflegerelevanten Diagnosen Ziele 2002 © PDV-Team 13 KIS-FR Dokumentation Highlights II Hinweise und Plausis • Hinweis auf ungenaue Kodierung (u.a.: .9, 4-Steller, …) • Abweisung fehlerhafte Hauptdiagnose • Kreuz/Stern-Problematik (Primär- und Sekundärdiagnosen) • Hinweis auf redundante und ggf. überflüssige Dokumentation • Möglichkeit der Komprimierung • interaktive Kodierregeln (Intranet) Ansicht [mit Behandlungsrecht] • abteilungsübergreifende Gesamtfallsicht • Patientenhistorie mit chronologischer Dokumentation Ziele 2002 © PDV-Team 14 Unterstützung durch IT bei Organisation und Dokumentation Entlassung Station Arztarbeitsplatz Diagnostik Aufnahme Ziele 2002 © PDV-Team 15 Therapie OP / Intensivbehandlung KIS-FR Workflow Aufnahmemeldung • Arzt erstellt Aufnahmemeldung nach §301 • mit voraussichtlicher Verweildauer • 1. DRG-Ermittlung möglich (VWD!) • Einstieg • Stationsübersicht (verschiedene Sichten / Filter) • anwesende Patienten auf Station • in einem Zeitbereich aufgenommene Patienten • Patienten ohne Aufnahmemeldung •… • todo-Kennzeichen in der Stationsübersicht • [Patienten- / Fallauswahl] Ziele 2002 © PDV-Team 16 Hinweis: DRG wird erst bei Abrechnungsfreigabe als abrechenbare Leistung übernommen (2 verschiedene Entitäten in DB!). Rolle: Arzt Ziele 2002 © PDV-Team 17 Rolle: Arzt Ziele 2002 © PDV-Team 18 Rolle: Arzt Ziele 2002 © PDV-Team 19 Rolle: Arzt Ziele 2002 © PDV-Team 20 Rolle: Arzt Ziele 2002 © PDV-Team 21 Rolle: Arzt Ziele 2002 © PDV-Team 22 KIS-FR Workflow Operationen, Prozeduren, Therapien, Diagnostik • Erfassung von sämtlichen relevanten OP-Daten u.a.: • OPS-Codes • Schnitt-, Nahtzeiten • Beatmungszeiten • Beteiligte • Protokolle •… • DRG-Ermittlung mit diesen Daten möglich • Einstieg • Stationsübersicht • OP-Verwaltung (Planung und Dokumentation) • Arbeitsliste „offene OPs“ • Patienten- / Fallauswahl Ziele 2002 © PDV-Team 23 KIS-FR Workflow Verlaufsdokumentation • Erfassung von Dokumentationen • endgültige und vorläufige • Verlaufsdokumentationen • ICDs • OPS • Beatmungszeiten •… • DRG-Ermittlung mit diesen Daten möglich • Einstieg • Stationsübersicht • Patienten- / Fallauswahl Ziele 2002 © PDV-Team 24 Verlaufsdiagnosen Rolle: Arzt Ziele 2002 © PDV-Team 25 Rolle: Arzt Ziele 2002 © PDV-Team 26 Prozeduren Rolle: Arzt Ziele 2002 © PDV-Team 27 Rolle: Arzt Ziele 2002 © PDV-Team 28 Rolle: Arzt Ziele 2002 © PDV-Team 29 Rolle: Arzt Ziele 2002 © PDV-Team 30 Rolle: Arzt Ziele 2002 © PDV-Team 31 Rolle: Arzt Ziele 2002 © PDV-Team 32 Rolle: Arzt Ziele 2002 © PDV-Team 33 Rolle: Arzt Ziele 2002 © PDV-Team 34 Rolle: Arzt Ziele 2002 © PDV-Team 35 Rolle: Arzt Ziele 2002 © PDV-Team 36 Rolle: Arzt Ziele 2002 © PDV-Team 37 KIS-FR Workflow Pflegedokumentation • Erfassung von pflegerelevanten Diagnosen • als Vorschlag • zur Nachbearbeitung durch den Arzt (verantwortlich) • Sicht auf die Stationsdaten • auch auf die Dokumentation der Ärzte • nur eigene Dokumentation ist modifizierbar • Einstieg • Stationsübersicht Hinweis: Pflege trägt auch alle Patienten-Bewegungen zeitnah ein Ziele 2002 © PDV-Team 38 Rolle: Pflege Ziele 2002 © PDV-Team 39 Rolle: Pflege Ziele 2002 © PDV-Team 40 Rolle: Pflege Ziele 2002 © PDV-Team 41 Rolle: Pflege Ziele 2002 © PDV-Team 42 Rolle: Pflege Ziele 2002 © PDV-Team 43 Einfluss auf Case-Mix-Index Rolle: Pflege 4,50 4,00 3,50 3,00 2,50 2,00 1,50 1,00 0,50 0,00 Ziele 2002 © PDV-Team 44 KIS-FR Workflow Entlassmeldung • Arzt erstellt Entlassmeldung nach §301 • Daten sind geschützt (protected) • automatische DRG-Ermittlung • Sicht auf komplette Patientenakte (mit Behandlungsrecht) • Prüfung auf Konsistenz und Vollständigkeit • Festlegung der Fachabteilungs-Hauptdiagnose • DRG-Ermittlung mit diesen Daten möglich • Einstieg via Stationsübersicht [oder Patienten- / Fallauswahl] • todo-Kennzeichen • verschiedene Sichten / Filter • in einem Zeitbereich entlassenen Patienten • Patienten ohne Entlassmeldung • Patienten ohne Entlassdiagnose Ziele 2002 © PDV-Team 45 Rolle: Arzt Ziele 2002 © PDV-Team 46 Rolle: Arzt Ziele 2002 © PDV-Team 47 Rolle: Arzt Ziele 2002 © PDV-Team 48 Rolle: Arzt Ziele 2002 © PDV-Team 49 Rolle: Arzt Ziele 2002 © PDV-Team 50 KIS-FR Workflow DRG-Ermittlung • automatisches Groupen (mit Speicherung der Historie) • nach Aufnahmemeldung ( Sperre Aufnahme-Doku) • nach Entlassmeldung ( Sperre Doku) • bei Freigabe Abrechnung ( Sperre Falldaten) • manuelles Groupen durch • Arzt [Test ohne Speicherung] • medizin. Controlling, Abrechnung Grouping-Daten werden erst bei Abrechnung (bzw. Freigabe) als abrechenbare Leistungsdaten (mit Ab- bzw. Zuschlägen) eingetragen! Ziele 2002 © PDV-Team 51 zertifizierte Grouper-Software: GetDRG (Fa. Geos mbH Nürnberg) KIS-FR Workflow Abrechnung • vollständige Entlassmeldung ermöglicht: • Freigabe (End-) Abrechnung bewirkt: Beatmungszeiten OPS Grouping Setzen bzw. Check der Abrechnungs-DRG (mit Ab- bzw. Zuschlägen) ggf. Manipulation möglich Sperre des Falls Ziele 2002 © PDV-Team 52 KIS-FR Workflow Abrechnung Freigabe Abrechnung erfolgt: • automatisch • ohne fachabteilungsübergreifende Verlegung wird Freigabe Abrechnung automatisch gesetzt • manuell (durch medizin. Controlling / Abrechnungsstelle) • via Arbeitsliste „offene Rechnungen“ • Fallhauptdiagnose? • Freigabe zur Abrechnung • ggf. im Dialog abrechnen oder s.o. Grouping-Daten werden erst bei Abrechnung als abrechenbare Leistungsdaten (mit Ab- bzw. Zuschlägen) eingetragen! Ziele 2002 © PDV-Team 53 Rolle: medizin. Controlling / Abrechnung Ziele 2002 © PDV-Team 54 Rolle: medizin. Controlling / Abrechnung Ziele 2002 © PDV-Team 55 Rolle: medizin. Controlling / Abrechnung Ziele 2002 © PDV-Team 56 KIS-FR Workflow Dokumentation nach Abrechnung • Meldung der Dokumentation an Abrechnungsstelle • werden nachrichtlich an den Fall gehängt (edv-technisch: Kennz.: N-ach Abrechnung geliefert) Ziele 2002 © PDV-Team 57 • Arbeitsliste: Dokumentationen nach Abrechnung • Vorgehen: • Rücknahme der Freigabe • Übernahme/Korrektur der Dokumentation • DRG-Ermittlung testweise möglich • Abrechnungs-Freigabe Grouping • wenn Rechnung identisch keine Neuberechnung • sonst Storno neue Entlassmeldung Neuberechnung KIS-FR Workflow Auswertungen / Controlling • diverse Statistiken im Intranet • Diagnosen (Zeiten) • DRGs (Qualität) • Abteilungsbezogen • für ärztl. Direktor (Abteilungsleiter) • für DRG-Beauftragten der Abteilung • Gesamt • (medizinisches) Controlling • DRG-Lenkungsausschuss Ziele 2002 © PDV-Team 58 Gesamtsicht Rolle: Controlling Ziele 2002 © PDV-Team 59 Abteilungssicht Rolle: Controlling / Abtlgs-Ltr Ziele 2002 © PDV-Team 60 Rolle: Controlling Ziele 2002 © PDV-Team 61 Rolle: Controlling Ziele 2002 © PDV-Team 62 Rolle: Controlling Ziele 2002 © PDV-Team 63 Rolle: Controlling Ziele 2002 © PDV-Team 64 Rolle: Controlling Ziele 2002 © PDV-Team 65 Anhang Ziele 2002 © PDV-Team 66 Technologie Enterprise Application Integration Pat.-Management, med. Controlling PDV-go! PDV-go! PDV-FR Klinischer Arbeitsplatz Arzt / Pflege / OP Individuell PeLi + ka Station / Ambul. kombinierbare MeDoc Dokumentation Softwaremodule PROMetheus PDV-FR Präsentation HL7 XML/soap Kommunikation Logik, Plausis, Regeln Datenbank-Zugriffe DepartmentSysteme Datawarehouse Patientendatenbanken Ziele 2002 © PDV-Team 67 PDV-FR + MIRAplus Verantwortung Rolle: Pflege „Die Auflistung der Diagnosen bzw. Prozeduren liegt in der Verantwortung des behandelnden Arztes.“ (Deutsche Kodierrichtlinien, Version 2002, S. 3) Die Auflistung der pflegerelevanten Nebendiagnosen durch die Pflegenden gilt als Vorschlag für den Arzt. Ziele 2002 © PDV-Team 68 Anhang Ziele 2002 © PDV-Team 69 Anhang Ziele 2002 © PDV-Team 70 Anhang Ziele 2002 © PDV-Team 71 Freiburger KIS Departmentsysteme Forschung X-LAB RADOS / PACS Pathsys M-LAB FITMED ANDOC / QS Dezentrale Systeme INFOServer/REDI Access SAS/SPSS Tamino, XML Archivierung Zentrale Systeme Patientenverwaltung MIRAplus HYDMedia PACS Finanzwesen Personalmanagement SAP PDV-FR Medizinische Arbeitsplätze MeDoc PROMetheus Pendelliste PDV-FR Ziele 2002 © PDV-Team 72 Firewall 1 Aufnahme Arzt OP-u.Intensivber. Ambulanzen Stationen Verwaltung med. Controlling Internet e-mail Telemedizin e-Commerce § 301 KV-Schnittstelle PDV-FR Gesamtüberblick Stationär STAR ABRA DTAVerwaltung nach §301 klinikübergreifender Rechnungs-Historie Beleg-Archiv ADTVerwaltung mit KV Abrechnung Behandlungsfall Charge Bewegung Geschäftspartner LeistungsErfassung (FP/SE/PS) ICPM / ICD DRG Leistungspool PPR Pflegestufe konsiliar vor- / nachstationär Besuch Versicherung KV-Karte / Schein Aufenthalt Ambulant ambulante Operationen tarifswerkunabhängige LeistungsErfassung ARLI Person PIZ-Vergabe Geräte-Zuord. und Verwaltung OrganisationsEinheiten Arzt / Klinik Verträge Tarife Kostenstelle Nation Klinik Kostenträger Leistungsschlüssel PLZ BearbeiterZugriff HL7 und Batch Schnittstellen Listen etc. System Ziele 2002 © PDV-Team 73 Material Schlüssel f:/pdv/vortrag/visio/pdv1.vsd PDV-FR Patientenmanagement Fall GeschäftsPartner Leistung Doku Abrechnung FP, SE, PS OPS301 STAR vollstationär teilstationär §301Partner DRG ICD Versicherer Sonstige Hauskatalog vorstationär nachstationär Sonstige tarifwerksunabhängig PPR konsiliar ambulant ambulante OP Schein Dokumente §301-DTA Dialog Batch Rechnghistorie Belegarchiv Batch Dialog KBVZulassung pauschaliert Ermächtigung Einzelleistung Berufsgenoss. Psychiatrie Indexierung ABRA Aufenthalt Besuch Quartal ungeklärt geplant Anwesenheit Ziele 2002 © PDV-Team 74 KV-Karte MIRAplus Befunde Arztbriefe Integration kommerzieller u. eigenentwickelter Systeme * Kein Kommunikationsserver * Antwortzeiten im Durchschnitt unter 2 Sekunden! * ca. 3500 Mitarbeiter aus allen Disziplinen Ärzte Pflege Verwaltung Funktionsbereiche Wissenschaftler * in 7 Tagen (à 24h): 57.644.803 DB-Commands gemessen 8.234.971 ADABAS-Commands / 24h ( 95,3/sec) Ziele 2002 © PDV-Team 75 PDV-FR Diagnosen und Therapien Arztarbeitsplatz elektronische Aufnahmemeldung OP-Dokumentation elektronische Entlasso. Verlegungsmeldung (medizinische) Gewichtung festlegen Ziele 2002 © PDV-Team 76 Aufnahmemeldung nach §301 PDV-FR elektronische Patientenakte Entlassmeldung nach §301 ökonomische Hierarchie Gewichtung? festlegen PDV-FR Diagnosen und Therapien ergänz. Text Lokalisation Herkunft Qualifizierung Haupt-Diagnose Gewichtung Neben-Diagnose Hierarchie Fall-Diagnose ICD10 Verantwortl. Status vorläufig endgültig Ziele 2002 © PDV-Team 77 Primär Sekundär Abteilungs-Diagnose PDV-FR DRG Unterstützung • Dokumentation unabhängig von Abrechnungsart - enge Verzahnung stationär / ambulant • Anzeige der CCL-Relevanz bei Nebendiagnosen • Speicherung eigener Texte und Hinweise • Hinweis auf ungenaue Kodierung • interaktive Kodierregeln (Intranet) • Fachabteilungsbezogene Favoriten, Hitlisten • Setbildung • pflegerelevante Diagnosen • Bei Behandlungsrecht Sicht auf - Gesamtfallsicht - Patientenhistorie mit chronologischer Dokumentation • Prüfung der Hauptdiagnose in Beziehung zum OPS (i.A.) • Hinweis auf redundante und ggf. überflüssige Dokumentation Ziele 2002 © PDV-Team 78 PDV-FR (DWH) Datawarehouse Selektion Logging-View regelmäßig PDV-FR zentrale PatientenDatenbank Datawarehouse Tabellen Fall + Person Aufenthalt manuell stat. Abrechnung Kostenträger ICD/OPS Leistung ambulante OP erfaßt abgerechnet PPR (Pflegestufen) sonstige PPR + Erg. mit Zeitpkt Ziele 2002 © PDV-Team 79 PDV-FR (LeiPool) zentraler Leistungspool UNIX-Rechner Dep.System HL7 PDV-FR Datenbank HL7 Dep.System HL7 Dep.System Plausis + Speicherung Daten proprietäres Format Daten proprietäres Format Daten proprietäres Format Standard File FTP Standardisierungs Programm Ziele 2002 © PDV-Team 80 FTP PDV-FR (LeiPool) zentraler Leistungspool PDVP / Unix Zeitgesteuert regelmäßige Auswertungen zum 9.d.Mon. jeweils letzte 6 Monate Leipool-Server Zentrales Selektionsprogramm (Natural) mit individuellen Selektionsmöglichkeiten Selektion Auswertungen Arbeitsstation erstellt Dateien Browser SAP DB LDAPAuthentisierung Perl-Script zur Aufbereitung Perl-Script zur Aufbereitung SCP Daten pro Monat pro Kstl Excel Perl-Script zur Aufbereitung Ziele 2002 © PDV-Team 81 Abfrage für Detailsichten NaturalProgramme PDV-FR Datenbank Ziele 2002 © PDV-Team 82 PDV-go! Pilot 0.4B Ziele 2002 © PDV-Team KRZ 83 PDV-go! DRG-Arbeitsplatz (Abrechner) Ziele 2002 © PDV-Team 84 Ziele 2002 © PDV-Team 85 Ziele 2002 © PDV-Team 86 Ziele 2002 © PDV-Team 87 Ziele 2002 © PDV-Team 88 Ziele 2002 © PDV-Team 89 Ziele 2002 © PDV-Team 90 Ziele 2002 © PDV-Team 91 PDV-go! Stub-Generator Client / Java Server / Natural (java/projtest/de.uni-freiburg.ukl.krz.pdv.pdvclass ../pfo/pfoxml.jpx) Subprogramm Class C4PFOXML ~ PfoertnerZugriffXML methode: PFOSUC Callback Skeleton Instanziierung: create object Stub public class SubpCnpfosuc { PfoertnerZugriffXML extends PdvZugriffXML { public static PfoTab[] method ( ) ... // * InnerClass * Method extends PdvZugriffXML { private static class public Method () { super ("CUPFOSUC", "", MODE_SUBPROG); } public PfoertnerZugriffXML () throws ConnException { super ("CKPFOXML"); } public PfoTab[] pfoSuc ( ..) ... //* InnerClass * PfoSuc PdvZugriffXML{ private static class extends public PfoSuc (String skeleton, String handle) { PdvZugriffXML public class Anfrage XML Antwort Callnat Subprgr Handle send method Kommunikations Hauptprogramm CPMAIN CUPFOSUC Parameter Return Callnat Methode Parameter Return Skeleton CKPFOXML super(skeleton,handle); } PDV-Conn: eröffnet Connection (static) Prozeß-Init. und Start CPMAIN mit Listener ISOTCP pdvt pdve {=> ais/sh/pdvsrv (KOM)} comtest ISOTCP pdvt come {=> ais/sh/comsrv (COM)} comtest Ziele 2002 © PDV-Team 92 Instanziierung einer Klasse Instanziierung einer Klasse erhält Handle-Index zurück ermittelt Handle (als Index) Aufruf Methode [mit In-Out-Parameter / Return-Wert] Aufruf Methode [mit In-Out-Parameter] PfoertnerFrameXML NaturalParser Methode Callback SAX-Parser Stub Callnat Subprgr CNPFOSUC NaturalParser PDV-go! Stub-Generator Callback *this Client / Java (pfo/pfoxml.jpx) SAXParser Server / Natural NaturalParser Stub PfoertnerZugriffXML extends pdvZugriffXML InnerClass: private static PfoSuc extends 93 Anfrage XML Antwort PdvZugriffXML public class PfoertnerZugriffXML extends PdvZugriff { public PfoertnerZugriffXML () throws ConnException { super ("CKPFOXML"); } // PfoertnerZugriffXML public PfoTab[ ] pfoSuc ( PatientIn patientIn, String ast,Class retClass ) throws ConnException { PfoSuc pfoSuc = new PfoSuc (skeleton,handle); return pfoSuc.method ( patientIn,ast,retClass ); } // pfoSuc // ********** innere Datenklassen: ************ private static class PfoSuc extends PdvZugriffXML { private PatientIn patientIn ; private PfoTab[] pfoTab ; public PfoSuc (String skeleton, String handle) { super(skeleton,handle) } ... private PfoTab[ ] method ( PatientIn patientIn, String ast,Class retClass) { this.retClass=retClass; this.patientIn = patientIn ; writeHeader("PFOSUC"); writeStartElement("body"); writeStartElement ("patientIn"); writeElement ("nachname",patientIn.getNachname()); ... writeEndElement("body"); request(); return pfoTab ; } // method ...} Ziele 2002 © PDV-Team PdvZugriffXML PfoertnerFrameXML /** * Construktor der Hauptklasse konstruiert * gleichzeitig die PDV Klasse */ protected PdvZugriffXML(String p_skeleton) throws ConnException { skeleton = p_skeleton; writeHeader("CN",""); request(); // Handle-index zurueck! } // constructor I /** * Construktor für die Inner Klasses übergibt die * statischen Felder von der Mutter Outer Klasse * an die Mutter der Inner Klassen */ protected PdvZugriffXML(String skeleton, String handle) { this.skeleton = skeleton; this.handle = handle; } // constructor II ... // constructor III * *********************************** protected void writeHeader (String method) throws ConnException { writeHeader ("CM",method); * *********************************** private void writeHeader (String mode,String method) throws ConnException { try { OutputStream out = PdvConn.getConn().getOutputStream(); xmlW = new UTF8XMLWriter(out); .... Kommunikations Hauptprogramm CPMAINX 1000 * Einlesen von Mode Classname Skeletonname 1040 Callnat 'CNPARHEA' ... 1080 decide on first value of #mode 1090 value 'CN' /* Class New: Klasse Instantieren 1100 add 1 to #anz-handles 1110 create object #handle (#anz-handles) of #class-name giving #Ret-Code .... #Header.#Class-Nr := #Anz-Handles ... 1130 Include CCXMLEND '"envelope"' 1230 value 'CM' /* Methode einer Klasse aufrufen 1240 callnat #skeleton-name 1250 #Header 1260 #Handle (#Class-Nr) 1270 #In-Buffer 1280 #Out-Buffer 1290 #Buffer-Laenge 1320 value 'CF' /* Class Fin: Classe beenden 1330 Reset #handle (#class-nr) 1390 none value ... Class C4PFOXML public class Skeleton CKPFOXML Decide on First of #Method-Name 0380 ... 0830 Value 'PFOSUC' 0840 send method #Method-Name to #Obj 0850 with 0860 #Patient-In 0870 #Ast 0880 #ANZ-PFO-TAB 0890 #PFO-TAB (*) 0900 giving #Ret-Code /* zuruecksenden 0450 Callnat 'CNSERHEA' 0460 #Header 0470 #Out-Buffer 0480 #Buffer-Laenge 0490 If #Ret-Code = 0 0500 include ccxmlsta '"body"' 0510 include ccxmlsta '"result"' 0520 include CCXMLATT '"anzPfoTab"' '"n"' '#ANZ-PFO-TAB' 0530 For #I1 = 1 To #ANZ-PFO-TAB 0540 include CCXMLSTA '"pfoTab"' 0550 include CCXMLSTA '"patient"' None ::: 1370 End-Decide 1380 include ccxmlend '"envelope"' DEFINE CLASS PfoertnerZugriffXML 0050 INTERFACE ALL 0090 method PFOSUC IS CNPFOSUC 0100 PARAMETER 0110 1 #Patient-In 0120 2 #Nachname (A30) 0130 2 #Vorname (A22) 0140 2 #Geschlecht (A1) 0150 1 #Ast (A3) 0160 Parameter Using CAPFODAT 0170 END-METHOD 0180 END-INTERFACE 0190 END-CLASS PDV-go! Stub-Generator Client / Java (pfo/pfoxml.jpx) Server / Natural Callback NaturalParser SAX-Parser Stub Anfrage java/projtest/de.uni-freiburg.ukl.krz.pdv.pdvclass. NatClass XML extends PdvZugriffXML PdvZugriffXML Antwort public class NatClass extends PdvZugriffXML { // Konstruktor public NatClass() () throws ConnException { super ("CKNATPRG"); …} // aufzurufende Methode public DataClass1 pfoSuc (parameter1 ) throws ConnException { PfoSuc pfoSuc = new PfoSuc (skeleton,handle); return pfoSuc.method (parameter1); // Zugriff und Parsen } // innere Datenklassen private static class PfoSuc extends PdvZugriffXML { private PatientIn patientIn ; private PfoTab[] pfoTab ; public PfoSuc (String skeleton, String handle) { super(skeleton,handle); } private DataClass1 method (parameter1) throws ConnException { this.retClass=retClass; this.para11 = para11 ; // Wegschreiben der Input Daten -> XML protected class PdvZugriffXML writeHeader("Natural-Methode"); // Konstruktur writeStartElement("…"); publicwriteElement("…"); PdvZugriffXML() protected void writeHeader writeEndElement("…"); protected void writeStartElement request(); protected writeElement return void dataClass1 protected void writeEndElement } protected void request() { // Anfragestream schliessen und // Anfrage // ErgebnisStream öffenen und // Weiterleiten zum Parser } PfoertnerFrameXML Ziele 2002 © PDV-Team KRZ 94 ptm.setPfoertnerlistenZeile( pfoertnerZugriff.pfoSuc(pat,"",PfoertnerZugriffXML.PfoTabImpl.class) ); Kommunikations Hauptprogramm CPMAINX 0930 CALL interface4 'NATSRV' 'bufget' #In-Buffer 1000 * Einlesen von Mode Classname Skeletonname 1040 Callnat 'CNPARHEA' 1050 #In-Buffer 1060 #Header 1080 decide on first value of #mode 1090 value 'CN' /* Class New: Klasse Instantieren 1100 add 1 to #anz-handles 1110 create object #handle (#anz-handles) of #class-name giving #Ret-Code 1130 If #Ret-Code EQ 0 1140 #Header.#Class-Nr := #Anz-Handles 1150 End-If 1170 callnat 'CNSERHEA' 1180 #Header 1190 #out-Buffer 1200 #Buffer-Laenge 1220 Include CCXMLEND '"envelope"' 1230 value 'CM' /* Methode einer Klasse aufrufen 1240 callnat #skeleton-name 1250 #Header 1260 #Handle (#Class-Nr) 1270 #In-Buffer 1280 #Out-Buffer 1290 #Buffer-Laenge 1320 * value 'CF' /* Class Fin: Classe beenden 1330 * CALL 'HL7SRV' 'Get' #class-nr-a '0' '6' 1340 * #class-nr := val (#class-nr-a) 1350 * call 'HL7SRV' 'Put' #class-nr '0' '6' 1360 * Reset 1370 * #handle (#class-nr) 1390 none value Skeleton Class C4NATPRG CKNATPRG Decide on First of #Method-Name 0380 ... 0830 Value 'Natural-Methode' 0840 send method #Method-Name to #Obj 0850 with 0860 #Patient-In 0870 #Ast 0880 #ANZ-PFO-TAB 0890 #PFO-TAB (*) 0900 giving #Ret-Code 0450 Callnat 'CNSERHEA' 0460 #Header 0470 #Out-Buffer 0480 #Buffer-Laenge 0490 If #Ret-Code = 0 0500 include ccxmlsta '"body"' 0510 include ccxmlsta '"result"' 0520 include CCXMLATT '"anzPfoTab"' '"n"' '#ANZ-PFO-TAB' 0530 For #I1 = 1 To #ANZ-PFO-TAB 0540 include CCXMLSTA '"pfoTab"' 0550 include CCXMLSTA '"patient"' None ::: 1370 End-Decide 1380 include ccxmlend '"envelope"' DEFINE CLASS NatClass 0050 INTERFACE ALL 0090 method Natural-Methode IS CNPFOSUC 0100 PARAMETER 0110 1 #Patient-In 0120 2 #Nachname (A30) 0130 2 #Vorname (A22) 0140 2 #Geschlecht (A1) 0150 1 #Ast (A3) 0160 Parameter Using CAPFODAT 0170 END-METHOD 0180 END-INTERFACE 0190 END-CLASS