viavac Gmbh Weihermat 22 3182 Ueberstorrf viavac CDSS Webservice Schnittstelle 2.0 viavac GmbH, April 2017 Tel. +41 79 411 10 28 [email protected] www.viavac.ch Inhaltsverzeichnis 1.Einleitung...........................................................................................................................................3 1.1Webservice-URL..........................................................................................................................3 1.2WSDL...........................................................................................................................................3 1.3Client-Zertfkat...........................................................................................................................3 2.Datenformat......................................................................................................................................4 2.1CDA Dokument...........................................................................................................................4 3.Webservices......................................................................................................................................5 3.1Technische Aspekte....................................................................................................................5 3.2Operatonen................................................................................................................................5 3.2.1Kommunkaton prüfen........................................................................................................5 3.2.2Impfempfehlung abrufen....................................................................................................7 4.eVACDOC Beispiel..............................................................................................................................8 5.Programmier Beispiel........................................................................................................................8 1. Einleitung viavac CDSS (Clinicial Decision Support System) ist ein von der viavac GmbH entwickelter und von der arpage AG gehosteter Webservice. viavac CDSS implementert die Algorithmen um, basierend auf den aktuellen Patenten- und Impfdaten, eine Impfempfehlung abzugeben (Welches sind die fehlenden Impfungen, Wann sind zukünfige Impfungen fällig, etc.). Als Datenaustauschformat wird das von eHealthSuisse defnierte, HL7 CDA basierte eVACDOC verwendet. Für die technische Umsetzung des eVACDOC basiert viavac CDSS zudem auf der OpenSource Komponente eHealthConnector. 1.1 Webservice-URL Der viavac CDSS Webservice wird über eine gesicherte Verbindung (htps) aufgerufen. Nachfolgend sind die entsprechenden URL's defniert. Für den Aufruf wird ein Client-Zertfkat benötgt (siehe unten). Testsystem CDSS htps://test.viavac-cdss.ch/viavac-forecast-hl7/forecastService Produktvsystem CDSS htps://www.viavac-cdss.ch/viavac-forecast-hl7/forecastService 1.2 WSDL Die WSDL zur Anbindung des Webservice kann durch Anfügen von „?wsdl“ automatsch generiert werden. 1.3 Client-Zertifikat Die Kommunikaton mit dem Webservice erfolgt über einen gesicherten htps-Kanal. Für den Zugrif wird ein Client-Zertfkat benötgt. Dieses kann über das Kontaktormular unter htps://www.viavac-cdss.ch/de/accounts/register/ beantragt werden. 2. Datenformat 2.1 CDA Dokument Von eHealthSuisse wurde im Dokument Austauschformat Elektronsiches Impfdossier (Link, siehe unten) ein CDA basiertes Format defniert, mitels dem Impfdaten standardisiert ausgetauscht werden können. Sämtliche Spezifkatonen zum Datenformat sind diesem Dokument zu entnehmen und werden hier nicht weiter aufgeführt. Austauschformat Elektronisches Impfdossier htps://www.e-healthsuisse.ch/fleadmin/user_upload/Dokumente/2015/D/151112_Austauschformat_Elektronisches_Impfdossi er_D.pdf Value-Set eVACDOC htps://www.e-health-suisse.ch/fleadmin/user_upload/Dokumente/2015/D/150917_ValueSet_eVacDoc_D.xls Als Beispiel sei hier kurz ein SOAP-Request einer solchen HL7 CDA Anfrage abgebildet: Abbildung 1: eVACDOC im SOAP Request 3. Webservices 3.1 Technische Aspekte Der viavac CDSS WebService wurde basierend auf JAX-WS 2.x implementert. Für die SOAP Messages wird der "document/literal" Ansatz verwendet. Literal-style SOAP bedeutet, dass die Nachrichten im SOAP Body als XML Dokument zwischen Client und WebService ausgetauscht werden. Die Vereinbarung über das Format der ausgetauschten Nachrichten ist mitels XML Schemas (XSD) defniert. Abbildung 2: Client-Server Kommunikaton 3.2 Operationen Wie erwähnt, ermöglicht der WebService die Abfrage des Impfstatus eines Patenten. Folgende Methoden werden dazu angeboten: Methode ping planString Beschreibung Dient der technischen Verbindungskontrolle Berechnet basierend auf dem Input HL7 CDA Dokument (eVACDOC) den aktuellen Impfzustand des Patenten 3.2.1 Kommunkation prüfen Operaton: ping Beschreibung Diese Operaton dient (analog zum tcp-ping) dem Prüfen der Verbindung. Ist die URL korrekt ? Ist das Client-Zertfkat korrekt installiert ? Parameter keine Rückgabewert Die PingResponse liefert einige Informatonen zum Server (wie Java Version, installierte CDSS Version, etc) an den Aufrufer zurück. Nachstehend ein Beispiel der PingResponse. <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:pingResponse xmlns:ns2="http://ws.viavac.ch/"> <response>viavac-cdss-version=1.0;java.version=1.8.0_45;java.vendor=Oracle Corporation;os.name=Mac OS X;os.version=10.8.5</response> </ns2:pingResponse> </S:Body> </S:Envelope> 3.2.2 Impfempfehlung abrufen Operaton: planString Beschreibung Eine Impfempfehlung wird abgerufen, indem ein CDA-Dokument (eVACDOC) an den Webservice geschickt wird. Der Service prüf und übernimmt die Daten aus dem eVACDOC, erstellt die Impfempfehlung, und retourniert ein mit Impfplan und Kommentar secton angereichertes eVACDOC. Parameter eVACDOC, die Operaton übernimmt im XML-Element <stringRequest> ein CDA-Dokument (<ClinicalDocument>): <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.viavac.ch/"> <soapenv:Header/> <soapenv:Body> <ws:stringRequest> <ClinicalDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hl7-org:v3"> <realmCode code="CH"/> ... </component> </ClinicalDocument> </ws:stringRequest> </soapenv:Body> </soapenv:Envelope> Rückgabewert eVACDOC, die Response enthält im XML-Element <stringResponse> ein CDA-Dokument (<ClinicalDocument>) mit den zusätzlichen sectons, „Impfplan“ und „Kommentar“. <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:stringResponse xmlns:ns2="http://ws.viavac.ch/"> <ClinicalDocument:ClinicalDocument xsi:schemaLocation="urn:hl7-org:v3 CDA.xsd" xmlns:ClinicalDocument="urn:hl7-org:v3" xmlns="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <realmCode code="CH"/> ... <component> <section> <templateId extension="CDA-CH.Body.CodedRem" root="2.16.756.5.30.1.1.1.1.1"/> <code code="48767-8" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/> <title>Kommentar</title> ... <component> <section> <templateId root="1.3.6.1.4.1.19376.1.5.3.1.1.18.3.1"/> <code code="18776-5" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/> <title>Impfplan</title> <text> </component> </ClinicalDocument:ClinicalDocument> </ns2:stringResponse> </S:Body> </S:Envelope> 4. eVACDOC Beispiel Um einen ersten Einblick in die HL7 CDA Welt zu erhalten, kann auf der Website von viavac CDSS (www.viavac-cdss.ch/de/demo) eine Beispiel-eVACDOC Datei heruntergeladen werden. Diese Datei kann angepasst, und mitels Upload-Funkton an den viavac CDSS Webservice übergeben werden. Als Antwort wird ein mit der Impfempfehlung kompletertes eVACDOC angezeigt. Abbildung 3: eVACDOC Beispiel Datei 5. Programmier Beispiel Nachfolgend ein kurzes Java-Snippet wie ein Aufruf des viavac CDSS aussehen könnte. – CdaChVacd, CdaChUtl sind Klassen aus dem eHealthConnector – stub.forecast ist eine WSDL basierte, generierte Wrapper-Klasse für den Aufruf des Webserivice. private void run() { CdaChVacd input; try { input = CdaChUtil.loadVacdFromFile("evacdoc-request.xml"); CdaChVacd output = stub.forecast(input); output.saveToFile("evacdoc-response.xml"); } catch (Exception e) { e.printStackTrace(); } }