Manipulation von HL7-Nachrichten
Erzeugung einer neuen Nachricht
var tmp = <HL7Message/>;
Segment angelegen
Anlegen eines Segments am Ende einer Nachricht tmp
createSegment('PR1', tmp)
Alle Segmente eines Typs löschen
Es wird immer das erste Element gelöscht, nach dem Löschen sortieren sich die Elemente neu.
for (var i=0; i<msg['NK1'].length(); i++) { delete tmp['NK1'][0]; }
Auf Existenz eines Segments prüfen
var process = false; if (msg['PV1'].length() > 0) { process = true; } return process;
Aus einer Nachricht mehrere Nachrichten manchen
Manche Systeme verarbeiten z.B. BAR-Nachrichten nach dem Alles oder Nichts Prinzip. Wenn also eine Diagnose in einer BAR-Nachricht mit mehreren Diagnosen fehlerhaft ist, wird die gesamte Nachricht verworfen. In diesem Fall ist es dann wünschenswert, aus der einen Nacricht mit meheren DG1 und PR1 Segmenten jeweils mehrere Nachrichten mit jeweils nur einem DG1 und PR1-Segment zu erzeugen. Dies lässt sich mit 2 channels realisieren. Der erste channel hat eine destination, der ins Nichts weist. Innerhalb dieses channels befindet sich dann eine translation, die die Nachricht dann über route.routeMessage explizit an einen 2. channel cReceiver weitergibt:
// DG1
if (msg['DG1'].length() > 0)
{
for (var i = 0; i < msg['DG1'].length(); i++) {
// HL7-Nachricht ohne Kopie des Originals anlegen
var tmp = <HL7Message/>;
// MSH
tmp['MSH'] = msg['MSH'].copy();
// EVN
tmp['EVN'] = msg['EVN'].copy();
// PID
tmp['PID'] = msg['PID'].copy();
// PV1
tmp['PV1'] = msg['PV1'].copy();
// DG1
tmp['DG1'] = msg['DG1'][i].copy()
router.routeMessage('cReceiver', tmp);
}
}
// PR1
if (msg['PR1'].length() > 0) {
for (var i = 0; i < msg['PR1'].length(); i++) {
// HL7-Nachricht ohne Kopie des Originals anlegen
var tmp = <HL7Message/>;
// MSH
tmp['MSH'] = msg['MSH'].copy();
// EVN
tmp['EVN'] = msg['EVN'].copy();
// PID
tmp['PID'] = msg['PID'].copy();
// PV1
tmp['PV1'] = msg['PV1'].copy();
// PR1
tmp['PR1'] = msg['PR1'][i].copy()
// Segmentnummer
router.routeMessage('cReceiver', tmp);
}
}
Der channel cReceiver muss dann so konfiguriert werden, dass dem Source connector die Inbound Property XML zugewiesen ist, da zwischen den channeln die Nachricht im XML-Format weitergeleitet wird.