OmniCare MQTT

服務介紹

OmniCareNotification 為提供 Omnicare 在不同應用端間訊息交換與流通,所設計之訊息通知服務架構,以增進醫療數據在應用上之低延遲性。OmniCareNotification 基礎於 MQTT (Message Queuing Telemetry Transport) 通訊協定,可提供訊息發布交換上部屬與設計之彈性;另一方面對於醫療機構或開發廠商在應用端之開發上,其能「主動」被通知訊息與數據之發布情形,在應用服務的發展上更具開發優勢與安全性。

服務架構

OmniCareNotification 整體服務架構可如下圖所示,依架構中角色可區分為 Omnicare Hub 、Omnicare 、 MQTT Broker 、 Application 四類,各角色與執行動作說明如下 :

 

  • Omnicare Hub:負責接收裝置數據並透過 Upload data API 上傳至 Omnicare ,根據 Upload data API 所定義之規格,需提供各裝置對應 schema 之接收數據時間資訊。

  • Omnicare :負責接收 Omnicare Hub 所上傳之數據,並依據所接收到之訊息類型進行處理並發布( Publish)訊息至對應的 Topic。

  • MQTT Broker:為統籌訊息發布所發送之控制中心,於 OmniCareNotification 架構中,依據不同之通知類型,將有對應之Topic產生機制。

  • Application:透過實作 MQTT subscriber,預先訂閱所需使用之 Topic,當有新的訊息 Publish 至所訂閱之 Topic時, subsciber將自動接收到由 MQTT Broker 所發佈之訊息。


MQTT Broker

連線資訊

  • FQDN: mqtt.asus.life

  • Port: 1883(TCP), 1884(WebSockets), 8883(SSL)

  • Topic Base: “omnicare/” + 以md5 16位元小寫 Hash過之OmniCare使用者帳號

Ex:
若帳號為: test@abc.123 則經 md5 hash後:
a530ab4bd5a32165
則該帳號所屬之Topic Base: omnicare/a530ab4bd5a32165

 

驗證與授權

  • Authentication: 以 OmniCare 帳號密碼進行連線驗證

  • Authorization:

    • Publish: OmniCareNotification目前僅限由 Omnicare 平台發布訊息

    • Subscribe: 驗證登入者帳號與 Topic Base 之一致性,OmniCare用戶僅能訂閱自身專屬 Topic Base 下之 wildcard

 

Notification 類型

基本框架

OmniCareNotification 可提供多種訊息通知類型以滿足不同應用情境之需求,並規劃以 JSON 作為訊息交換格式,基本描述框架如下所示:



{

type:{$Notify類型}

msg:[{$依據Notify類型所定義之描述結構}]

}



訊息類型與使用說明

OmniCareNotification 定義之 Notification 類型說明如下表所示:



類型

使用說明

newEntry

當Hub端有新數據傳送至 Omnicare 平台上時,可發布此類型訊息,應用端可被通知有新數據產生,進行應用。



訊息類型與對應 Topic

OmniCareNotification 機制依據不同 Noitfy 類型,會將不同訊息發布至對應的 Topic ,訊息類型與對應 Topic 參照如下表:



類型

MQTT Topic

newEntry

Topic:{Topic Base}/newEntry



訊息類型對應 Message 內容格式

OmniCareNotification機制依據不同Noitfy類型,發布對應之訊息內容,訊息類型與對應Publish內容格式參照如下表:



類型

MQTT Message

newEntry

{

"type":"newEntry",

"msg":[

{

"s":"omnicare_bloodPressure",

"id":"ASUSLife-Z2-0001",

"inH":"2017-07-21 17:15:00",

"finH":"2017-07-21 17:18:00"

},

{

"s":"omnicare_ecg",

"id":"ASUSLife-BC1-0001",

"inH":"2017-07-21 15:00:00",

"finH":"2017-07-21 15:00:00"

},

....

]

}

參數說明

s: schema 名稱

id: 裝置DeviceId

inH: 第一筆數據記錄時間

finH: 末筆數據記錄時間