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: |
驗證與授權
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: 末筆數據記錄時間 |