Mirth использует Mozilla Rhino для своего движка Javascript.Rhino использует устаревший стандарт e4x для обработки XML.Если вы ищете в Google e4x, вы найдете несколько страниц на developer.mozilla.org со страшными «устаревшими» баннерами везде, которые могут быть полезны.Руководство пользователя mirth очень подробное, когда речь идет о рабочем процессе в среде mirth.
https://github.com/mozilla/rhino
https://web.archive.org/web/20181120184304/https://wso2.com/project/mashup/0.2/docs/e4xquickstart.html (еще один хороший ресурс e4x)
https://www.nextgen.com/products-and-services/NextGen-Connect-Integration-Engine-Downloads (для руководства пользователя)
Я удивлен, что querySelectorAll не выдал ошибку.С минимальными изменениями в вашем коде:
try {
var dbConn = DatabaseConnectionFactory.createDatabaseConnection ('com.mysql.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/adt', 'xxx', 'xxx');
var xml = new XML(connectorMessage.getEncodedData());
// This should work, but is not typically how hl7 segments are accessed. Would need to see more than a segment for typical usage.
var myNodeList = xml.descendants("DG1"); // returns type XMLList
// length is a function instead of property on XMLList objects
for (i = 0; i < myNodelist.length(); i++) {
var myQuery = 'INSERT INTO adt.diagnosis (AcctNum, MRN, ICD10) VALUES ("'+ $('AcctNum') + '", "' + $('MedRecNum') + '", "' + myNodelist[i]['DG1.3']['DG1.3.1'] + '")';
dbConn.executeUpdate(myQuery);
}
} catch (ex) {
//handle any exceptions...
}
Использование для каждого цикла и параметризованного оператора sql:
try {
var dbConn = DatabaseConnectionFactory.createDatabaseConnection ('com.mysql.jdbc.Driver', 'jdbc:mysql://127.0.0.1:3306/adt', 'xxx', 'xxx');
var xml = new XML(connectorMessage.getEncodedData());
var myQuery = 'INSERT INTO adt.diagnosis (AcctNum, MRN, ICD10) VALUES (?, ?, ?)';
for each (var dg1 in xml.descendants('DG1')) {
dbConn.executeUpdate(myQuery, new java.util.ArrayList([$('AcctNum'), $('MedRecNum'), dg1['DG1.3']['DG1.3.1'].toString()]));
}
} catch (ex) {
//handle any exceptions...
}
Вам понадобится блок finally
после вашего try
, чтобы закрыть соединение с базой данных.Если вы удалите блок catch
, mirth автоматически установит статус сообщения на ERROR, запишет исключение в журнал сервера и сгенерирует событие, с которым вы можете воздействовать с помощью определенного предупреждения.Обычно это проще, чем пытаться обрабатывать исключение самостоятельно.