Alternativ zur Versorgung eines Systems mit Patinentendaten per ADT-Rundruf empfiehlt es sich insbesondere bei Systeme, die sich nur temporär im Netz befinden, diese nur bei Bedarf mit Patientendaten zu versorgen. Hierzu wird mittels der Fallnummer eine Anfrage nach Patientenfall- und Bewegungsdaten mit der HL7-Nachricht QRY-A19 durchgeführt.
Die Kommunikation läßt sich am elegantesten per TCP/IP-Socket bewerkstellingen. Als ACK-Nachricht auf die Anfrage wird der Inhalt der Variable customRespone
aus der Response Map übermittelt.
Die eingegangene Nachricht wird in einer Archiv-Destination abgelegt.
In einem Transformer Schritt wird dann mittels JavaScript
die Antwort HL7-Nachricht aufgebaut:
// Einlesen des PV1.19 Feldinhalts = FALLNR des Patienten. // Ggf. abprüfen mit anderen Felder. // Ausführen einer SQL Abfrage aus Patientendatenbank var dbConn = DatabaseConnectionFactory.createDatabaseConnection( 'oracle.jdbc.driver.OracleDriver', 'database','userid','password' ); var strQRYFALLNR = msg['QRD']['QRD.8']['QRD.8.1'].toString(); logger.error("FALLNR : " + strQRYFALLNR); var sqlStr ="\ SELECT \ F.FALLNR, \ NAT.NAME, \ NAT.VORNAME, \ TO_CHAR(NAT.GEBDAT,'YYYYMMDD') GEBDAT, \ NAT.GESCHLECHT, \ PF.FREMD_PERSNR PID, \ TO_CHAR(SYSDATE, 'YYYYMMDDhh24miss') ABFRAGEZEIT \ FROM \ FALL F, \ NATPERSON NAT, \ PERSON_FREMD PF \ WHERE \ F.PERSNR = NAT.PERSNR AND \ NAT.PERSNR = PF.PERSNR AND \ F.STORNO_DATUM IS NULL AND \ F.FALLNR = '" + strQRYFALLNR + "'"; logger.error("SQL String" + sqlStr); // Execute SQL Statement and save them as results var results = dbConn.executeCachedQuery(sqlStr); var resultSize = results.size(); // Aufbereiten des Resultsets // hier nur eine Ergebniszeile durch Abfrage if(resultSize>0){ for(var i = 0;i<resultSize;i++){ results.next(); var strFALLNR =results.getString(1); var strNAME = results.getString(2); var strVORNAME = results.getString(3); var strGEBDAT = results.getString(4); var strGESCHLECHT = results.getString(5); var strPID = results.getString(6); var strSYSDATE = results.getString(7); } } // Kopieren der Resultsetdaten in das output message template // MSH // MSH.7.1 Date/Time of Message = Abfragezeit der SQL Abfrage tmp['MSH']['MSH.7']['MSH.7.1'] = strSYSDATE; // MSA // MSA.2.1 Message Control ID (= Msg ID der Anfragenachricht) tmp['MSA']['MSA.2']['MSA.2.1'] = msg['MSH']['MSH.10']['MSH.10.1'].toString(); // QRD // Rückübermittlung des eingegangenen QRD Segments tmp['QRD'] = msg['QRD'].copy(); // PID // PID.2.1 External ID Number tmp['PID']['PID.2']['PID.2.1'] = strPID; // PID.3.1 Internal ID Number tmp['PID']['PID.3']['PID.3.1'] = strPID; // PID.5.1 Family Name tmp['PID']['PID.5']['PID.5.1'] = strNAME; // PID.5.2 Given Name tmp['PID']['PID.5']['PID.5.2'] = strVORNAME; // PID.7.1 Date of Birth tmp['PID']['PID.7']['PID.7.1'] = strGEBDAT; // PID.8.1 Sex if (strGESCHLECHT == 'W') strGESCHLECHT = 'F'; tmp['PID']['PID.8']['PID.8.1'] = strGESCHLECHT; // PV1 // PV1.19 Fallnummer tmp['PV1']['PV1.19']['PV1.19.1'] = strQRYFALLNR; // Schliessen der Connection dbConn.close(); // Erstellen der AckMessage var ackMessage = SerializerFactory.getHL7Serializer().fromXML(tmp); // Füllen der Antwortvariablen (ResponseMap für Source ACK) responseMap.put("customResponse", ResponseFactory.getSuccessResponse(ackMessage)) // Löschen der Abfrageergebnisvariablen results = "";
Du muss angemeldet sein, um einen Kommentar zu veröffentlichen.