我想写一个简单的“Web服务”,我可以使用Mirth发送HL7消息。这个“Web服务”可以像CGI脚本一样简单,并且只需要将HL7消息作为字符串(可能还有其他一些值)接受为使用Mirth的HTTP发送者的POST请求。
这看起来很简单,但是这个“网络服务”应该如何发回ACK让Mirth知道一切都好还是出了什么问题?是否存在Mirth期望作为回应的特定格式?或者有什么方法可以告诉Mirth会发生什么?
注意:我不想在接收端使用Mirth。
答案 0 :(得分:2)
简短的回答是,它完全取决于您...... Mirth Connect可以容纳任何响应(或缺少响应)并执行自定义用户逻辑来确定响应是否成功"成功&#34 ;或不。
您可以让外部Web服务生成HL7 v2.x ACK并将其发回。然后在HTTP Sender端,确保您的Response数据类型设置为HL7 v2.x,并启用"验证响应"在目的地设置中。
您还可以让您的Web服务生成完全自定义的响应,并在MC端进行自定义验证。例如,如果您的Web服务发回了这样的响应:
{
"success": true,
"message": "Message received successfully."
}
然后,您可以将Response数据类型设置为JSON,并在响应转换器中执行此操作:
if (msg.success !== true) {
responseStatus = ERROR;
}
responseStatusMessage = msg.message;
您还可以完全根据响应状态代码进行验证。默认情况下,使用HTTP发件人,仅当HTTP请求返回状态为<时,才会将消息状态设置为SENT。 400.任何其他状态和状态将保留为QUEUED(如果禁用排队,则为ERROR)。
您可以在响应转换器中覆盖该行为。如果状态特别是200(而不是其他2xx或3xx代码),也许您只希望它是SENT。将Response数据类型设置为Raw(以便即使没有响应也会执行响应转换器),并在响应转换器中执行此操作:
var responseStatusLine = $('responseStatusLine');
var responseCode = parseInt(responseStatusLine.split(' ')[1], 10);
if (responseCode != 200) {
responseStatus = ERROR;
responseStatusMessage = responseStatusLine.substr(responseStatusLine.indexOf(' ')).trim();
}