2017-04-11 45 views
2

我想寫一個簡單的「Web服務」,我可以用Mirth來發送HL7消息。這個「Web服務」可以像CGI腳本一樣簡單,並且只需要使用Mirth的HTTP發送方作爲POST請求接受HL7消息作爲字符串(可能還有其他值)。如何從Web服務向Mirth發送ACK?

這似乎很簡單,但該「Web服務」應該如何發回ACK以讓Mirth知道一切是否正確或出了什麼問題?是否有一種特定的格式,歡樂期待作爲迴應?或者有什麼方法可以告訴Mirth什麼期望?

注意:我不想在接收端使用Mirth。

回答

2

簡而言之,它完全取決於您......歡樂連接可以適應任何響應(或缺少響應)並執行自定義用戶邏輯來決定響應是否「成功」。

您可以讓您的外部Web服務生成一個HL7 v2.x ACK並將其發回。然後在HTTP發送方一側,確保您的響應數據類型設置爲HL7 v2.x,並在目標設置中啓用「驗證響應」。

您還可以讓您的Web服務生成完全自定義的響應,並在MC端執行自定義驗證。例如,如果你有你的Web服務發送回這樣的迴應:

{ 
    "success": true, 
    "message": "Message received successfully." 
} 

然後你可以設置你的迴應數據類型JSON,並在響應變壓器做到這一點:

if (msg.success !== true) { 
    responseStatus = ERROR; 
} 
responseStatusMessage = msg.message; 

你可以也純粹驗證響應狀態代碼。默認情況下,對於HTTP發件人,僅當HTTP請求的返回狀態爲< 400時,纔會將消息狀態設置爲SENT。其他情況和狀態將保留爲QUEUED(如果排隊禁用,則爲ERROR)。

雖然您可以在響應轉換器中覆蓋該行爲。如果狀態是特定的200(而不是其他2xx或3xx代碼),你可能只希望它是SENT。將響應數據類型設置爲Raw(即使沒有響應時也會執行響應變換),並在響應變換器中執行此操作:

var responseStatusLine = $('responseStatusLine'); 
var responseCode = parseInt(responseStatusLine.split(' ')[1], 10); 
if (responseCode != 200) { 
    responseStatus = ERROR; 
    responseStatusMessage = responseStatusLine.substr(responseStatusLine.indexOf(' ')).trim(); 
} 
+0

謝謝,Nick Rupley。 – Wodin