Monitoring

Die Möglichkeit Datenbankabfragen zeitgesteuert mit Mirth Connect durchzuführen, legt es nahe das System auch für Monitoringzwecke zu verwenden. Hier eine Beispielabfrage, die in einem externen System eine Anzahl von nicht verarbeiteten Events abfragt:

(select 'ISPRO_MDM_EVENTREADER_KHV' as jaifcomponent, count(1) as events from fieventstate
where facility_interfaceid = 50001
and EVENTSTATETYPEID = 0)
UNION
(select 'MIRTH_UKB_ADT_EVENTREADER' as jaifcomponent, count(1) as events from fieventstate
where facility_interfaceid = 500001
and EVENTSTATETYPEID = 0)
UNION
(select 'MIRTH_UKB_BAR_EVENTREADER' as jaifcomponent, count(1) as events from fieventstate
where facility_interfaceid = 70010
and EVENTSTATETYPEID = 0)

Das Ergebnis der Abfrage wird dann in folgender XML-Struktur abgelegt:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<result>
    <jaifcomponent>value</jaifcomponent>
    <events>value</events>
</result>

Über einen Filter erfolgt dann die Weiterverarbeitung:

process = false;
events = channelMap.get('events');
alert = globalChannelMap.get(globalChannelMap.get('jaifcomponent'));
if (alert == undefined) { 
	alert = false
} else if (alert == 'NEW') {
	alert = true
} else alert = false;

if (alert == false) {
	if (Number(events) > Number(channelMap.get('threshold'))) {
		globalChannelMap.put('alert','NEW');
		globalChannelMap.put(globalChannelMap.get('jaifcomponent'),'NEW');
        process = true;
    } 
} else if (Number(events) < Number(channelMap.get('threshold'))) {
	globalChannelMap.put('alert','CLOSED');
	globalChannelMap.put(globalChannelMap.get('jaifcomponent'),'CLOSED');
    process = true;
}
return process;

Wenn eine als Channelvariable definierte Variable threshold definiert ist, erfolgt eine Weiterleitung, wenn die Schwellwertvariable überschritten ist, bzw. wieder unterschritten ist, sofern zuvor ein Alarm ausgelöst wurde. In beiden Fällen wird dann über den SMTP-Sender eine Mail versendet:

Subject: ${jaifcomponent}: ${alert} alert - ${events} export events
   Body: Anzahl unverarbeiteter Export events in ${jaifcomponent} ist ${events}.