Seite 1 Clustertec Rezept- und Bestellung-Web Service Autor: Beat De Martin Seite 2 1 Einführung ....................................................................................................................1 1.1 Beschreibung ..........................................................................................................3 2 Web Service Aufruf.......................................................................................................3 2.1 Aufruf des Web Services via „horizontalen Link“ .....................................................4 2.2 Aufruf des Web Services via SOAP ........................................................................5 2.2.1 2.2.2 3 4 5 6 7 8 Rezepte....................................................................................................................................... 5 Bestellungen ............................................................................................................................... 5 Sicherheit ......................................................................................................................5 Web Service Response ................................................................................................5 4.1 Fehlercodes ............................................................................................................6 XML-Schemas ...............................................................................................................7 5.1 Rezepte ..................................................................................................................7 5.2 Bestellungen ...........................................................................................................7 Rezept XML Beispiel (für „horizontalen“ Link)...........................................................7 Bestellung XML Beispiel (für „horizontalen“ Link) ....................................................7 Client Code Beispiele ...................................................................................................7 8.1 Java ........................................................................................................................7 8.1.1 8.1.2 8.2 SOAP .......................................................................................................................................... 7 „horizontaler“ Link ....................................................................................................................... 7 Visual c# .................................................................................................................8 Seite 3 1 Einführung 1.1 Revision Initalversion Überarbeitung 1.2 12. September 2005 22. November 2006 bd bd Beschreibung Der Clustertec Rezept Web Service erlaubt über die Clustertec estudio-Plattform Rezepte und Bestellungen aus einer beliebigen Ärzte-SW an einen beliebigen Lieferanten zu senden. 2 Web Service Aufruf Es werden zwei Arten von Web Services angeboten. 1. Web Service mit SOAP 2. “horizontaler” Web Service auf der Basis von REST (Representational State Transfer ) mit HTTP POST Das Anbieten von zwei Web-Services verschiedener Art hat sich als Standard herausgebildet (Beispiele: Amazon, Google) Die erste Variante kapselt das XML von den Datentypen ab und wird von zahlreichen Tools direkt unterstützt. Aus der WSDL-Datei kann z.B. MS Visual Studio .net oder Apache Axis (Java) direkt die Client Klassen generieren. Die zweite Variante ist einfacher zu verstehen und kann direkt aus einem Browser getestet werden. Seite 4 2.1 Aufruf des Web Services via „horizontalen Link“ Unter der URL https://estudio.zur-rose.ch/estudio/prescriptionTest.html (resp. https://estudio.zur-rose.ch/estudio/orderTest.html) können Sie in einem Textfenster ihr Rezept XML eingeben. Seite 5 2.2 Aufruf des Web Services via SOAP 2.2.1 Rezepte Die WSDL Datei ist unter der folgenden Adresse zu finden: https://estudio.zur-rose.ch/xml/services/PrescriptionSOAP?wsdl Für die Übermittlung zur „Zur Rose“ iat der ASAS-Client notwendig. SOAP URL mit ASAS Client als Proxy: http://xml.estudio.zur-rose.hin.ch/prescriptionSOAP/ 2.2.2 Bestellungen Die WSDL Datei ist unter der folgenden Adresse zu finden: https://estudio.zur-rose.ch/xml/services/OrderSOAP?wsdl 3 Sicherheit Der Clustertec Rezept Web Service verwendet das https Protokoll, d.h. alle Daten werden verschlüsselt übertragen. Zusätzlich muss beim Request ein Benutzername und ein Passwort mitgegeben werden. 4 Web Service Response Die Response des Web Service sieht z.B. folgendermassen aus : Seite 6 4.1 Rezepte <?xml version="1.0" encoding="ISO-8859-1" ?> <prescriptionResponse errorCode="3" errorMessage="severe interactions occurred"> <interaction docKey="595" relevanz="1" pharmacodeB="1974508" pharmacodeA="1475521" medikamentB="VIAGRA Filmtabl 100 mg 12 Stk" medikamentA="ISOKET Dosieraeros 15 ml" relevanzText="schwerwiegend" status="erwartet" interaktionseffekt="Verstärkte blutdrucksenkende Wirkung" wirkstoffgruppe2="Phosphodiesterase-5-Hemmer" wirkstoffgruppe1="Nitrate" /> </prescriptionResponse> 4.2 Bestellungen <?xml version="1.0" encoding="ISO-8859-1" ?> <order-response xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" error-code="0" xsi:type="java:ch.clustertec.estudio.order.OrderResponse"> <error-message>ok</error-message> </order-response> 4.3 Fehlercodes Fehlercode 0 Fehlermeldung ok 1 user and/or password wrong 2 3 4 SQL error 5 6 XML validation error Artikel nicht im DV 7 Die angegebene Versicherung konnte im Stamm nicht gefunden werden System error severe interactions occurred Bemerkung Das Rezept /die Bestellung wurde erfolgreich übermittelt Benutzername und/oder Passwort sind falsch SQL Fehler aufgetreten Systemfehler Schwerwiegende Interaktionen, bei ignoreInteractions=1 werden die Interaktionen nicht beachtet d.h. dieser Fehler würde nicht auftreten XML Validierungsfehler Der Artikel ist im DV nicht lieferbar, das Rezept konnte nocht übermittelt werden Die EAN-ID der Versicherung ist im Stamm nicht vorhanden Seite 7 5 XML-Schemas 5.1 Rezepte https://estudio.clustertec.ch/schemas/prescription 5.2 Bestellungen https://estudio.clustertec.ch/schemas/order 6 Rezept XML Beispiel (für „horizontalen“ Link) https://estudio.clustertec.ch/schemas/prescription/examples/prescription.xml 7 Bestellung XML Beispiel (für „horizontalen“ Link) https://estudio.clustertec.ch/schemas/order/examples/order.xml 8 Client Code Beispiele 8.1 Java 8.1.1 SOAP PrescriptionServiceLocator serviceLocator = new PrescriptionServiceLocator(); PrescriptionPortType stub = serviceLocator.getPrescriptionSOAPPort(); Prescription prescription = new Prescription(); // abfüllen des Objektes prescription … PrescriptionResponse prescriptionResp = stub.createPrescription(prescription); // auswerten der Antwort … 8.1.2 ... „horizontaler“ Link Seite 8 String requestMessage = "<?xml version=\"1.0\" ..."; URL serverURL = new URL(""); HttpURLConnection httpConnection = (HttpURLConnection) serverURL.openConnection(); httpConnection.setRequestMethod(“POST”); httpConnection.setFollowRedirects(true); httpConnection.setDoInput(true); httpConnection.setDoOutput(true); httpConnection.setUseCaches(false); PrintWriter out = new PrintWriter(httpConnection.getOutputStream()); URLEncoder.encode(requestMessage)); out.println("prescription=" + URLEncoder.encode(requestMessage)); out.close(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpConnection.getInputStream())); String line; StringBuffer responseMessage = new StringBuffer(); while ((line = bufferedReader.readLine()) != null) { responseMessage.append(line); } bufferedReader.close(); System.ot.println(“prescription response:” + responseMessage.toString()); … 8.2 Visual c# Anmerkung: MS Visual .net wsdl.exe Prozess hat einen bekannten Bug in Bezug auf <xs:include> in wsdl Files. Das äussert sich in der Fehlermeldung: Dieser namespace wurde schon deklariert. -> Clustertec wird ein spez. Wsdl File für MS Visual .net bereitstellen.